4.MAPreduce V1简介

mapreduce角色:

Mapreduce 作业(我们称为job)是客户端需要执行的一个工作单元
它包括 输入数据及mapreduce程序及配置信息
Hadoop将这个作业分为map任务及reduce任务
有两类节点控制着作业执行过程,一个jobtracker和若干个tasktracker

  • Jobtracker 通过调度tasktracker上运行的任务来协调所有运行在系统上的作业
  • Tasktracker在运行任务时同时将运行进度报告发送给jobtracker

Jobtracker由此纪录每项业务作业任务的整体进度情况,如果其中一个失败,jobtracker可以在另一个tasktracker节点上重新调度该任务

解释:
一个项目经理和若干工程师
项目经理协调所有项目进度和分配任务
工程师接收任务并完成,同时定时发送周报
项目经理掌握项目整体进度,如果一个工程师接收了A任务确因为种种原因无法完成,会把这个项目分配给另外一名工程师

Mapreduce的分片机制

HADOOP 将mapreduce的输入数据划分成等长的小数据块,称为输入分片(input split)
HADOOP 为每个分片构建一个map任务,并由该任务来运行用户自定义的map函数
拥有许多分片,意味着处理每个分片所需的时间少于处理整个输入数据的时间。
因此如果我们并行处理每个碎片,那么整个处理过程将获得更好得负载均衡
如果分片被切的更细,负载均衡的会更高

另一方面,如果分片切得太小,那么管理分片的总时间和构建map任务的总时间将决定整个作业的执行时间。

针对大多数作业来说,一个合理的分片大小趋近于HDFS的一个块大小,默认是64M,(不过可以针对集群调整这个默认值或者针对新建的每个文件)

Map的本地数据优化

Hadoop在存储有输入数据(HDFS中的数据)的节点上运行map任务,可以获得最佳性能,这就是我们所说的“”数据本地优化“”,(data locality optimization),因此它无需使用宝贵的集群带宽资源

但是对于一个map任务的输入来说,存储有某个HDFS数据备份的三个节点可能正在运行其他map任务
此时作业调度需要在三个备份中的某个数据寻求同个机架中空闲的机器来运行该map任务。
仅仅在非常偶然的情况下(几率很小),会使用其他机架中的机器运行该map任务,这将导致机架与机架之间的网络传输
注意:上面我们说了三个可能性,就在如上这段话中,要自己整理并搞透彻

map任务分布图.png

map最佳分片的大下应该与块大小相同

现在我们应该清楚为什么最佳分片的大下应该与块大小相同:如果分片跨越两个数据块,对于任何一个HDFS节点来说,基本不可能恰好同时存储了这两个数据块,因此分片中的部分数据需要通过网络传输到map任务节点,与使用本地数据运行整个map相比,这种方法效率太低

Map任务将其输出写入本地磁盘,而非hdfs

Map任务将其输出写入本地磁盘,而非hdfs。这是为什么?因为map的输出是中间结果:
该中间结果由reduce任务处理后才会产生最终输出结果
而且一旦输出结果,map的输出结果就可以删除,因此如果把它存储在HDFS中实现备份,难免小题大做。如果该节点运行map任务在将map中间结果传送给reduce任务之前失败,hadoop将在另一个节点重新运行这个map任务以再次构建map中间结果
(所以这个map任务的进度是依赖于最慢的那个---木桶理论)

Reduce任务并不具备数据本地化的优势,原因是---单个reduce任务的输入通常来自于所有mapper的输出。在本例中我们仅有一个reduce任务,其输入是所有map的输出。
因此排过序的map输出需要通过网络传输发送到所有运行reduce任务的节点,数据在reduce端合并,然后由用户定义的reduce函数处理
Reduce的输出直接存在hdfs中

一个mapreduce任务的完整数据流

图片 3.png

以上是我在互连网上找到的关于mapreduce最详细的注解:
我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

前面我们介绍了mapreduce的工作模式,但是是由谁来控制mapreduce来完成上面整个mapreduce作业呢?
在hadoop的mapreduce里有两种主要的后台程序:jobtracker和tasktracker。

Jobtracker与Tasktracker:

Jobtracker是主线程,它负责接受客户作业提交,调度任务到工作节点上运行,并提供诸如监控工作节点状态及任务进度管理功能。

Jobtracker:

一个mapreduce集群只有一个jobtracker,一般运行在稳定性高的硬件上,因为主节点一旦出现问题就会导致所有正在运行的作业同时失败。
当一个作业·提交的时候,组成作业的每一个任务信息都会被存储在jobtracker的内存中
在一个活跃的集群中,可能会同时运行若干个由多个任务组成的作业,这种情况下这些任务信息会占用一大部分内存,所以对jobtracker内存的监控是很主要的。

Tasktracker

Tasktracker通过周期性的心跳来通知jobtracker其当前的健康状况及状态
每一次心跳包含了可用的map和reduce任务数目、占用的数目以及运行中的任务的详细信息
在每一个工作节点上永远只有一个tasktracker。**Tasktracker和datanode运行在同一个物理机器上,从而使得每一个物理机器即是一个计算节点,同时也是一个存储节点。

Tasktracker工作节点出错:

当jobtracker在一段时间内(可配置)收不到tasktracker的心跳,它会认为该tasktracker失效而且曾经在该tasktracker运行过的任务都会被认为失败
这些任务会被重新调度到别的tasktracker上运行;而客户应用程序完全不知道这些内部错误,只会感觉到作业的执行变慢了

Jobtracker出错是更加严重的事情

假如jobtracker出错,那么其当前运行的作业的内部状态信息会被丢失,即使jobtracker马上恢复了,所有正在运行的任务都将认为是失败。这实际上意味着对mapreducev1来说,jobtracker是有单点故障的

Mapreduce v1的两个缺点:

首先单个集群就一个jobtracker,没有HA

另外jobtracker的内存限制太明显

比如雅虎的一个用于支持多系统的超过4000个节点的Hadoop集群,该团队发现单一的jobtracker需要太多的资源,另外jobtracker的单点失效问题给这个庞大集群造成了极大的不稳定性,因此YARN应用而生,我们常称为mapreduce V2 版本

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • MapReduce框架结构## MapReduce是一个用于大规模数据处理的分布式计算模型MapReduce模型主...
    Bloo_m阅读 3,724评论 0 4
  • MapReduce是面向大数据并行处理的计算模型、框架和平台。MapReduce是一个基于集群的高性能并行计算平台...
    VVictoriaLee阅读 404评论 0 1
  • MapReduce是一个数据处理的编程模型。这个模型很简单,但也不是简单到不能够支持一些有用的语言。Hadoop能...
    单行线的旋律阅读 1,511评论 0 2
  • 思考问题 MapReduce总结 MapReduce MapReduce的定义MapReduce是一种编程模型, ...
    Sakura_P阅读 931评论 0 1
  • 20171029 教子实战策略:关于惩罚(3) 1.Time-out的两个目标 即时目标是:立刻让孩子的坏行为停止...
    湛蓝语语阅读 165评论 0 1