专栏名称: 京东成都研究院
京东商城成都研究院信息平台
目录
相关文章推荐
清廉蓉城  ·  李希在江西调研时强调 ... ·  昨天  
成都本地宝  ·  成都城乡居民医保可享受的8种待遇! ·  昨天  
成都本地宝  ·  看雪山/日落!成都又一观景台即将开放! ·  2 天前  
成都本地宝  ·  2025上半年成都教师公招来啦!还有蜀道集团 ... ·  2 天前  
51好读  ›  专栏  ›  京东成都研究院

MapReduce原理浅析

京东成都研究院  · 公众号  · 成都  · 2018-05-11 16:39

正文

01

Hadoop基本架构简介

1. 用户:通过NameNode 和DataNode交互从而访问HDFS中的文件。

2. NameNode:总管:全局仅此一个,管理HDFS的目录树一级相关的元数据信息,这些信息以HDFS元数据镜像和HDFS文件改动日志两种形式存放在本地,并且NameNode监控各个DataNode运行健康状况和数据管理。

3. Sencondary NameNode 并不对NameNode进行热备份,而是对镜像和改动日志进行文件合并并传递给NameNode,而NameNode本身不会合并两种格式文件。

4. DataNode:每个节点一般会安装一个DataNode,主要负责本地数据的存储并将数据汇报给NameNode,DataNode以固定大小Block为基本单位组织文件内容,一般为64M,可以修改该值,如果大于64M,则进行切割为若干Block,分别存储到不同的节点,保持数据的可靠一般存储为3份。


MapReduce架构

02

1. 用户通过客户端提交到JobTacker端,并通过Job端查看左右运行状态,一个MR程序可以对应若干个左右,而每个作业可以拆分成多个M、R任务,即Task任务

2. JobTracker主要负责资源监控和任务调度,监控所有的TaskTracker任务,一旦发现任务失败或任务执行进度缓慢,则进行调度,如果失败则转移节点,如果执行缓慢则会利用空闲的资源,进行任务衡量,并启动一个任务执行这个缓慢任务,执行完以新启动的任务数据结果为准。

3. TaskTacker,主要负责使用情况和运行状态上报,同时执行Job的指令,TaskTacker使用slot划分资源,slot代表的是CPU、内存等计算信息,一个Task只有分配了slot后才可能运行,Hadoop调度器会将空闲的slot分配给Task,slot分为Map slot和Reduce slot两种,分别供Map和Reduce 的Task使用,其实这里有个小缺陷,因为M和R分配内存空间是独立的,比如M运行时候R空闲,这个资源也是被占用了的,据说后续的MR优化会将MR动态适配,保证资源的最大化利用


03

MapReduce中的HelloWord

1.  从HDFS读取文件

2.  将读取的数据行拆分进行Split阶段

3.  对行数据进行简单得Map操作,形成MAP 形式,在map 端进行局部排序

4.  在洗牌阶段(Shuffling)会将来自不同的MAP进行合并,将相同KEY的拉入到同一个集群或服务端

5.  Reduce阶段会将Map端的数据进行按照Reduce规则计算,以这里为例将单词累计。

6.  最终输出到HDFS或其他存储。


MapReduce生命周期

04

1. 作业提交与初始化:Job将作业相关信息,比如Jar包、配置等上传HDFS,然后通知JobTracker,收到新作业提交请求好,由左右调度模块进行初始化:(1)创建对象并跟踪作业运行状况,Job会为每个Task创建进程进行跟踪,而task进行可能会管理多个运行尝试

2. 任务调度与监控。调度和监控有Job进程而TaskTracker会周期性地通过心跳想Job进程汇报资源使用情况,一旦出现空闲,Job跟踪管理器会按照一定策略选择合适的任务是用该资源,任务调度器会先选择作业,然后选择任务,选择数据会重点考虑本地性

3. 任务运行环境准备,准备包括JVM和资源隔离,均有Task进程实现,Task进程为每个TASK启动一个JVM避免不同TASK运行形成干扰,隔离以防止task滥用资源

4. 任务执行。TASK进程为TASK准备好环境后便启动Task,在运行过程中每个Task的最新进度首先通过RPC汇报给Task进程,在有Task进程汇报给Job进程


05

JobTracker内部逻辑

资源控制

关键机制

关键对象初始化:







请到「今天看啥」查看全文