| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 05-分布式计算框架 -> 正文阅读 |
|
[大数据]05-分布式计算框架 |
目录
一,MapReduce1,简介MR是面向离线批处理的分布式计算框架 核心思想:分而治之,并行计算。移动计算,非移动数据; 适用场景
不适用场景
2,原理2.1 基本概念1,Job & Task(作业与任务)
2,Split(切片)
3,Map阶段(映射)
4,Reduce阶段(化简)
5,Shuffle阶段(混洗)
Partition(分区)
哈希取模的作用
避免和减少Shuffle是MapReduce程序调优的关键 2.2 程序执行过程1,MR执行过程 ? 2,shuffle详解 注意:在溢写之前需要先进行排序(便于后续归并排序),MapTask结束后仍需要通过归并排序将所有溢写文件合并为一个文件。 Map端 1,Map任务将中间结果写入环形内存缓冲区Buffer(默认100M); 2,当Buffer的数据量达到阈值(默认80%)时,对缓冲区内数据进行分区(Partition)和排序(Sort)。 先按“key hashcode % reduce task num”对数据进行分区,分区内再按key排序。然后将数据溢写(Spill)到磁盘的一个临时文件中。如果在溢写过程中,剩余20%的空间又被耗尽,这时就会触发panding,等80%空间腾出来之后再继续写; 3,Map任务结束前,将多个临时文件合并(Merge)为一个Map输出文件,文件内数据先分区后排序 Reduce端 1,Reduce任务从多个Map输出文件中抓取(Fetch)属于自己的分区数据(Partition编号=Reduce任务编号) 2,对抓取到的分区数据做归并排序,生成一个Reduce输入文件(文件内数据按key排序)
2.3 作业运行模式1,JobTracker/TaskTracker模式(Hadoop 1.X) ? JobTracker节点(Master)
TaskTracker节点(Slave)
存在的问题
? 2,YARN模式(Hadoop 2.X ) 二,Spark1,简介1.1 背景MapReduce有较大的局限性
计算框架种类多,选型难,学习成本高
统一计算框架,简化技术选型,降低学习成本
1.2 概念由加州大学伯克利分校的AMP实验室开源 ?? 高性能的分布式通用计算引擎
具有高吞吐、低延时、通用易扩展、高容错等特点 采用Scala语言开发 提供多种运行模式 1.3 特点计算高效
?? 通用易用
运行模式多样
2,原理2.1?编程模型1,RDD(Resilient Distributed Datesets)?弹性分布式数据集 RDD相当于Table,由分布在集群中的多个Partition组成 Partition(分区)
Spark基于RDD进行计算 ? 2,RDD操作(Operator) Transformation(转换)
Action(动作)
以rdd1.map(_,+1).saveAsTextFile(“hdfs://node01:9000”)为例 3,RDD依赖(Dependency) 窄依赖(Narrow Dependency)
宽依赖(Wide/Shuffle Dependency)
? 4,示例:WordCount val rdd1 = sc.textFile(“hdfs://node01:9000/data/in”) val rdd2 = rdd1.flatMap(_.split(“\t”)) val rdd3 = rdd2.map((_,1)) val rdd4 = rdd3.reduceByKey((_+_)) rdd4.saveAsTextFile(“hdfs://node01:9000/data/out”) ? ? 2.2 运行模式1,抽象模式 Driver
SparkContext
Executor
Task
2,Local模式 单机运行,通常用于测试 Spark程序以多线程方式直接运行在本地 3,Standalone模式 Spark集群独立运行,不依赖于第三方资源管理系统,如YARN、Mesos 采用Master/Slave架构
ZooKeeper负责Master HA,避免单点故障 适用于集群规模和数据量都不大的情况 4,YARN模式 YARN-Client模式:适用于交互和调试 YARN-Cluster模式:适用于生产环境? 区别在于Driver位置。Driver放在Client主要便查看日志,便于调试。 ?? ? 2.3 运行过程1,生成逻辑计划 ? 2,生成物理计划 3,任务调度与执行 ? 2.4 DAG任务规划与调度DAG(Directed Acyclic Graph)
DAGScheduler
TaskScheduler
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 12:54:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |