Hadoop架构
- HDFS——分布式文件系统
- MapReduce——分布式计算框架
- YARN——分布式资源管理系统
- Common
MapReduce
什么是MapReduce
MapReduce是一个分布式计算框架
- 它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务
适用于大规模数据处理场景
- 每个节点处理存储在该节点的数据
每个job包含Map和Reduce两部分
MapReduce的设计思想
分而治之
- 简化并行计算的编程模型
构建抽象模型:Map和Reduce
- 开发人员专注于实现Mapper和Reduce函数
隐藏系统层xijie
- 开发人员专注于业务逻辑实现
MapReduce特点
优点
- 易于编程
- 可扩展性
- 高容错性
- 高吞吐量
不适用领域
- 难以实时计算
- 不适合流式计算
MapReduce实现WordCount
MapReduce执行过程
数据定义格式
- map:(K1,V1)–>list(K2,V2)
- reduce:(K2,list(V2))–>list(K3,V3)
MapReduce执行过程 - Mapper
- Combiner
- Partitioner
- Shuffle and Sort
- reduce
+
Hadoop V1 MapReduce引擎
Job Tracker
- 运行在Namenode
- 接受客户端Job请求
- 提交给Task Tracker
Task Tracker
- 从Job Tracker接受任务请求
- 执行map、reduce等操作
- r
Hadoop V2 YARN
YARN的变化
- 支持更多的计算引擎,兼容MapReduce
- 更好的资源管理,减少Job Tracker的资源消耗
- 将Job Tracker的资源管理分为ResourceManager
- 将Job Tracker的作业资源调度分为ApplicationMaster
- NodeManager称为每个节点的资源和任务管理器
Hadoop2 MapReduce在YARN上运行流程
InputSplit(输入分片)
在Map之前,根据输入文件创建inputsplit
- 每个InputSplit对应一个Mapper任务
- 输入分片存储的是分片长度和记录数据位置的数组
block和split的区别
- block是数据的物理表示
- split是块中数据的逻辑表
- split划分是在记录的边界处
- split的数量应不大于block的数量(一般相等)
Shuffle阶段
数据从Map输出带Reduce输入的过程
MapReduce编程模型