Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践

Map Reduce & YARN
A、简介
Apache Hadoop 是一个开源软件框架,可安装在一个商用机械集群中,使机械可彼此通信并协同工作,以高度分布式的方法合营存储和处理大年夜量数据。最初,Hadoop 包含以下两个重要组件:Hadoop Distributed File System (HDFS) 和一个分布式计算引擎,该引擎支撑以 MapReduce 功课的情势实现和运行法度榜样。
MapReduce 是 Google 推广的一个简单的编程模型,它对以高度并行和可扩大的方法处理大年夜数据集很有效。MapReduce 的灵感来源竽暌冠函数式编程,用户可将他们的计算表达为 map 和 reduce 函数,将数据作为键值对来处理。Hadoop 供给了一个高等 API 来在各类说话中实现自定义的 map 和 reduce 函数。
Hadoop 还供给了软件基本架构,以一系列 map 和 reduce 义务的情势运行 MapReduce 功课。Map 义务 在输入数据的子集上调用 map 函数。在完成这些调用后,reduce 义务 开端在 map 函数所生成的中心数据上调用 reduce 义务,生成最终的输出。 map 和 reduce 义务彼此零丁运行,这支撑场行和容错的计算。
最重要的是,Hadoop 基本架构负粜ウ理分布式处理的所有复杂方面:并行化、调剂、资本治理、机械间通信、软件和硬件故障处理,等等。得益于这种干净的抽象,实现处理数百(或者甚至数千)个机械上的数 TB 数据的分布式应用法度榜样大年夜未像如今这么轻易过,甚至对于之前没有应用分布式体系的经验的开辟人员也是如斯。


将义务瓜分为 Map 端和 reduce 端。
一、JobClient JobTracker TaskTracker

- JobClient 向 JobTracker 请求一个新的 jobID
- 检查功课输出解释
- 计算功课输出划分split
- 将运行功课所须要的资本(功课的jar文件、设备文件、计算所得的输入划分)复制到一个以功课ID定名的目次中JobTracker的文件体系。
经由过程调用JobTracker的submitJob()办法,告诉JobTracker功课预备履行
JobTracker接收到submitJob()办法调用后,把此调用放到一个内部队列中,交由功课调剂器进行调剂,并对其进行初始化
创建运行义务列表,功课调剂去起首大年夜共享文件体系中获取JobClient已经计算好的输入划分信息(图中step6),然后为每个划分创建一个Map义务(一个split对应一个map,有若干split就有若干map)。
TaskTracker履行一个简单的轮回,按期发送心跳(heartbeat)调用JobTracker
整体的Shuffle过程包含以下几个部分:Map端Shuffle、Sort阶段、Reduce端Shuffle。等于说:Shuffle 过程横跨 map 和 reduce 两端,中心包含 sort 阶段,就是数据大年夜 map task 输出到reduce task输入的┞封段过程。
sort、combine 是在 map 端的,combine 是提前的 reduce ,须要本身设置。
Hadoop 集群中,大年夜部分 map task 与 reduce task 的履行是在不合的节点上。当然很多情况下 Reduce 履行时须要跨节点去拉取其它节点上的map task结不雅。如不雅集群正在运行的 job 有很多,那么 task 的┞俘常履行对集群内部的收集资本消费会很严重。而对于须要的收集资本消费,最终的目标就是最大年夜化地削减不须要的消费。还有在节点内,比拟于内存,磁盘 IO 对 job 完成时光的影响也是可不雅的。大年夜最根本的请求来说,对于 MapReduce 的 job 机能调优的 Shuffle 过程,目标期望可以有:
- 完全地大年夜map task妒攀拉取数据到reduce 端。
- 在跨节点拉取数据时,尽可能地削减对带宽的不须要消费。
- 削减磁盘IO对task履行的影响。
- 总体来讲这段Shuffle过程,能优化的处所重要在于削减拉取数据的量及尽量应用内存而不是磁盘。
三、Map Shuffle

1、输入
在map task 履行时,其输仁攀来源 HDFS的 block ,map task 只攫取split 。Split 与 block 的对应关系可能是多对一,默认为一对一。
2、切分
决定于当前的 mapper的 part交给哪个 reduce的办法是:mapreduce 供给的Partitioner接口,对key 进行 hash 后,再以 reducetask 数量取模,然后到指定的 job 上。
然后将数据写入内存缓冲区中,缓冲区的感化是批量收集map结不雅,削减磁盘IO的影响。key/value对以及 Partition 的结不雅都邑被写入缓冲区。写入之前,key 与value 值都邑被序列化成字节数组。
推荐阅读 Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
存眷科技范畴很难跟上行业的>>>详细阅读 本文标题:Hadoop面试,有它就够了 地址:http://www.17bianji.com/lsqh/39155.html 1/2 1

网友点评
精彩导读
科技快报
品牌展示