与 Hadoop 相关的技术框架和架构的演变方向和演变历史
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 数据的分布式应用程序从未像现在这么容易过,甚至对于之前没有使用分布式系统的经验的开发人员也是如此。
MR 架构
Map Reduce 过程图
将任务分割为Map端和Reduce 端,下图是JobClient、JobTracker和TaskTracker架构。
1、JobClient 向 JobTracker 请求一个新的JobID
2、检查作业输出说明
3、计算作业输出划分split
4、将运行作业所需要的资源(作业的 jar 文件、配置文件、计算所得的输入划分)复制到一个以作业 ID 命名的目录中JobTracker 的文件系统。
5、通过调用JobTracker 的submitJob() 方法,告诉JobTracker作业准备执行
6、JobTracker 接收到 submitJob() 方法调用后,把此调用放到一个内部队列中,交由作业调度器进行调度,并对其进行初始化
7、创建运行任务列表,作业调度去首先从共享文件系统中获取 JobClient 已经计算好的输入划分信息(图中 step6),然后为每个划分创建一个 Map 任务(一个 split 对应一个 map,有多少 split 就有多少map)
8、TaskTracker 执行一个简单的循环,定期发送心跳调用JobTracker
Shuffle Combine
整体的 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、切分
决定于当前的Mpper的part 交给哪个Reduce 的方法是MapReduce提供的 Partitioner接口,对Key进行Hash 后,再以Reducetask 数量取模,然后到指定的Job 上。
然后将数据写入内存缓冲区中,缓冲区的作用是批量收集Map 结果,减少磁盘 IO 的影响。Key/Value 对以及Partition 的结果都会被写入缓冲区。写入之前,Key与Value 值都会被序列化成字节数组。
3、溢写
由于内存缓冲区的大小限制(默认100MB),当Map Task 输出结果很多时就可能发生内存溢出,所以需要在一定条件下将缓冲区的数据临时写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为Spill,中文可译为溢写。
这个溢写是由另外单独线程来完成,不影响往缓冲区写Map结果的线程。整个缓冲区有个溢写的比例spill.percent。这个比例默认是0.8,
Combiner 将有相同Key的Key/Value对加起来,减少溢写 spill 到磁盘的数据量。Combiner 的适用场景: 由于Combiner的输出是Reducer的输入,Combiner 绝不能改变最终的计算结果。故大多数情况下,Combiner 适用于输入输出的 key/value 类型完全一致,且不影响最终结果的场景(比如累加、最大值等)。
Merge
Map很大时,每次溢写会产生一个spill_file,这样会有多个spill_file,而最终的输出只有一个文件,在最终输出之前会对多个中间过程多次产生的溢写文件 spill_file 进行合并,此过程就是Merge。
Merge 就是把相同Key 的结果加起来(当然,如果设置过Combiner,也会使用 combiner 来合并相同的Key)。
Reduce Shuffle
在Reduce Task 之前,不断拉取当前Job 里每个Maptask的最终结果,然后对从不同地方拉取过来的数据不断地做Merge ,也最终形成一个文件作为Reduce Task 的输入文件。
1、Copy
Reduce进程启动一些数据copy 线程 (Fetcher),通过HTTP方式请求map task 所在的 TaskTracker 获取map task 的输出文件。因为 maptask 早已结束,这些文件就归 TaskTracker 管理在本地磁盘中。
2、Merge
Copy 过来的数据会先放入内存缓冲区中,这里的缓冲区大小要比 map 端的更为灵活,它基于JVM的 heap size设置,因为Shuffle 阶段 Reducer不运行,所以应该把绝大部分的内存都给 Shuffle 用。这里需要强调的是,Merge有三种形式:
1) 内存到内存
2) 内存到磁盘
3) 磁盘到磁盘
默认情况下第一种形式不启用,让人比较困惑,是吧。当内存中的数据量到达一定阈值,就启动内存到磁盘的Merge 。与Map端类似,这也是溢写的过程,这个过程中如果你设置有Combiner,也是会启用的,然后在磁盘中生成了众多的溢写文件。第二种Merge 方式一直在运行,直到没有Map 端的数据时才结束,然后启动第三种磁盘到磁盘的Merge 方式生成最终的那个文件。
3、Reducer的输入
Merge 的最后会生成一个文件,大多数情况下存在于磁盘中,但是需要将其放入内存中。当Reducer输入文件已定,整个Shuffle 阶段才算结束。然后就是 Reducer 执行,把结果放到 HDFS 上。
YARN
YARN(Yet Another Resource Negotiator)是下一代 MapReduce框架的名称,为了容易记忆,一般称为MR v2。该框架已经不再是一个传统的MapReduce 框架,甚至与 MapReduce 无关,她是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。用于自己编写的框架作为客户端的一个lib,在运用提交作业时打包即可。
MR的缺点(YARN取代MR)
经典 MapReduce 的最严重的限制主要关系到可伸缩性、资源利用和对与 MapReduce 不同的工作负载的支持。在 MapReduce 框架中,作业执行受两种类型的进程控制:
一个称为JobTracker 的主要进程,它协调在集群上运行的所有作业,分配要在 TaskTracker上运行的Map和Reduce 任务。
许多称为TaskTracker 的下级进程,它们运行分配的任务并定期向 JobTracker报告进度。
大型的Hadoop 集群显现出了由单个JobTracker 导致的可伸缩性瓶颈。
此外,较小和较大的 Hadoop 集群都从未最高效地使用他们的计算资源。在 Hadoop MapReduce 中,每个从属节点上的计算资源由集群管理员分解为固定数量的Map和Reduce slot,这些Slot 不可替代。设定Map Slot 和Reduce Slot 的数量后,节点在任何时刻都不能运行比Map Slot 更多的Map 任务,即使没有 Reduce 任务在运行。这影响了集群的利用率,因为在所有Map Slot 都被使用(而且我们还需要更多)时,我们无法使用任何Reduce Slot,即使它们可用,反之亦然。
Hadoop 设计为仅运行 MapReduce 作业。随着替代性的编程模型(比如 Apache Giraph 所提供的图形处理)的到来,除 MapReduce 外,越来越需要为可通过高效的、公平的方式在同一个集群上运行并共享资源的其他编程模型提供支持。
MapReduce框架的不足
JobTracker是集群事务的集中处理点,存在单点故障。JobTracker 需要完成的任务太多,既要维护 job 的状态又要维护 job 的 task 的状态,造成过多的资源消耗。
在TaskTracker 端,用Map/Reduce Task 作为资源的表示过于简单,没有考虑到 CPU、内存等资源情况,当把两个需要消耗大内存的 task 调度到一起,很容易出现OOM。
把资源强制划分为Map/Reduce Slot, 当只有Map Task 时,Reduce Slot不能用;当只有Reduce Task 时,Map Slot 不能用,容易造成资源利用不足。
解决可伸缩性问题
在 Hadoop MapReduce中,JobTracker具有两种不同的职责。管理集群中的计算资源,这涉及到维护活动节点列表、可用和占用的Map 和Reduce Slots 列表,以及依据所选的调度策略将可用 slots 分配给合适的作业和任务
协调在集群上运行的所有任务,这涉及到指导TaskTracker 启动Map和 Reduce 任务,监视任务的执行,重新启动失败的任务,推测性地运行缓慢的任务,计算作业计数器值的总和等等。
为单个进程安排大量职责会导致重大的可伸缩性问题,尤其是在较大的集群上,JobTracker 必须不断跟踪数千个 TaskTracker、数百个作业,以及数万个 map 和 reduce 任务。相反,TaskTracker 通常近运行十来个任务,这些任务由勤勉的JobTracker 分配给它们。
为了解决可伸缩性问题,一个简单而又绝妙的想法应运而生: 我们减少了单个 JobTracker 的职责,将部分职责委派给TaskTracker,因为集群中有许多 TaskTracker。在新设计中,这个概念通过将 JobTracker 的双重职责(集群资源管理和任务协调)分开为两种不同类型的进程来反映。
YARN的优点
1、更快地 MapReduce 计算
2、对多框架支持
3、框架升级更容易
1、ResourceManager代替集群管理器
2、ApplicationMaster代替一个专用且短暂的JobTracker
3、NodeManager代替TaskTracker
4、一个分布式应用程序代替一个MapReduce作业
一个全局 ResourceManager以主要后台进程的形式运行,它通常在专用机器上运行,在各种竞争的应用程序之间仲裁可用的集群资源。
在用户提交一个应用程序时,一个称为 ApplicationMaster 的轻量型进程实例会启动来协调应用程序内的所有任务的执行。这包括监视任务,重新启动失败的任务,推测性地运行缓慢的任务,以及计算应用程序计数器值的总和。有趣的是,ApplicationMaster 可在容器内运行任何类型的任务。
NodeManager是TaskTracker 的一种更加普通和高效的版本。没有固定数量的Map 和Reduce slots,NodeManager拥有许多动态创建的资源容器。
关注我;转发文章;++我威新 bmaaa01 ,获取。
上一篇: 大数据技术原理与应用:大数据处理架构 Hadoop 生态系统
下一篇: IV.Hadoop 架构简介
推荐阅读
-
与 Hadoop 相关的技术框架和架构的演变方向和演变历史
-
41 个下载免费 3D 模型的最佳网站-使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 17. Clara.io Clara.io 是一个创建 3D 内容的全球平台,也是一个培养新 3D 艺术家的社区。Clara.io 提供+100,000个免费的3D模型,包括OBJ,Blend,STL,FBX,DAE,Babylon.JS,Three.JS格式,用于 Clara.io,Unity 3D,Blender,Sketchup,Cinema 4D,3DS Max和Maya。 使用说明:免费,标准和专业帐户仅供个人使用,如果您需要将 clara.io 用于商业用途,请与销售团队联系。 18. 3DExport 3DExport是一个市场,您可以在其中购买和销售用于CG项目的3D模型,3D打印模型和纹理。它提供15 +不同的3D格式供下载,如3DS MAX(.max),Cinema4D(.c4d),Maya(.mb,.ma),Lightwave(.lwo),Softimage(.xsi),Wavefront OBJ(.obj),Autodesk FBX(.fbx)等。它还提供15种不同的语言! 使用说明:免费下载仅供个人和非商业用途。 19. 3D Warehouse 3D Warehouse是一个开放的库,允许用户共享和下载SketchUp 3D模型,用于建筑,设计,施工和娱乐!任何人都可以免费制作,修改和重新上传内容到3D仓库,您可以找到任何您能想到的东西,如家具,电子产品,室内产品等。 使用说明:3D Warehouse中的所有模型都是免费的,因此任何人都可以下载文件以用于SketchUp甚至其他软件,如AutoCAD,Revit和ArchiCAD。 20. CadNav.com CadNav是CGI平面设计师和CAD / CAM / CAE工程师的在线3D模型库,我们提供超过50000 +免费3D模型和CAD模型下载。在CadNav网站上,您可以下载高质量的多边形网格3D模型,3D CAD实体对象,纹理,Vray材料,3D作品,CAD图纸等。 使用说明:免费下载仅供个人和非商业用途。 21. All3dfree.net 就像网站名称一样,它提供免费的3D模型,还包括Vray材料,CAD块,2d和3d纹理集合,无需注册即可免费下载。它是不断更新的,因此您可以查找或请求3DS,MAX,C4D,skp,OBJ,FBX,MTL等格式的模型。 使用说明:所有资源均不允许用于商业用途,否则您将承担责任。 22. Hum3D 自2005年以来,Hum3D帮助来自3多个国家的80D艺术家节省3D建模时间,并制作逼真的3D模型,用于电影,视频游戏,AR应用程序和可视化。所有模型均由首席3D艺术家进行验证,他们检查其是否符合专业要求和最新的3D建模标准。 使用说明:免费下载仅供个人和非商业用途。 23. Artist-3D.com 艺术家-3D 库存的免费 3D 模型下载按通用类别排序。它为人体解剖学、汽车、家具、火箭、卫星等模型提供 AutoDesk 3DS Max 格式。您还可以在浏览他们的网站时找到教程和类似类型的建模。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 24. Free the models 就像本网站的标题一样,它为3d应用程序和3d游戏引擎提供免费的内容模型。您可以为您的任何项目找到许多有趣且有用的模型!它提供3ds,wavefront,bryce,poser,lightwave,md2和unity3d格式的模型。还有一个很棒的纹理集合,可以在您最喜欢的建模和渲染程序中使用。 使用说明:您从这里下载的所有内容都可以免费使用,除非它不能包含在另一个免费的网络或CD收藏中,也不能单独出售。否则,您可以在商业游戏,3D应用程序或渲染作品中使用它。您不必提供信用,但如果您这样做,那就太好了。 25. Resources.blogscopia 本网站由一家名为Scopia的公司创建。他们制作3D图像和视频,您可以找到许多为CGI工作的信息架构设计的模型,所有这些都可以在现实生活中使用。您可以免费下载它们,但是,如果您想一次下载它们,您可以支付 3 到 9 欧元。 使用说明:您可以免费下载模型部分的所有文件。每个压缩文件都包含您也可以在此处找到的许可证。基本上,您可以对文件执行任何操作。唯一的限制是不归属于Scopia的重新分发。 26.ambientCG 1000+公共领域PBR材料适合所有人!环境CG是使用许多不同的方法和资产类型创建的,例如照片纹理(PBR),贴花(PBR),图集(PBR),照片纹理(普通),物质存档(SBSAR),雕刻画笔,3D模型和地形。您可以在所有项目中*使用它们! 使用说明:在 ambientCG 上提供下载的所有 PBR 材料、画笔、照片和 3D 模型均根据知识共享 CC0 1.0 通用许可提供。您可以复制、修改、分发和执行作品,即使是出于商业目的,也无需征得许可。信用将不胜感激。 不要满足于平庸的大理石纹理 - 立即使用我们的免费PBR大理石纹理升级您的3D设计。 27.Pixar One Twenty Eight 这是一个提供官方动画行业经典纹理的网站:皮克斯,创建于 1993 年,该纹理库包括 128 个重复纹理,现在免费提供。 它包含您来到的纹理,包括砖块和动物毛皮。肯定会有一些你可以使用的东西。 使用说明:皮克斯动画工作室的《Pixar One Twenty Eight》根据知识共享署名4.0国际许可协议进行许可。即使出于商业目的,您也可以重新混合、调整和构建您的作品,只要您以相同的条款对新创作进行信用和许可。 访问数以千计的免费纹理并提升您的设计游戏 - 立即开始下载! 28. 3DXO 即使有近 620 个免费贴纸可供下载,3DXO 也不是最大的资源,但它的内容非常有用,不需要注册。无论是简单的墙壁或地板,还是一些奇怪的小东西,您都需要的纹理都可以在此网站上看到。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 29. 3DModelsCC0 3DModelsCC0 与其他产品的不同之处在于它包含超过 250+ 个高质量 3D 模型,并且本网站上的所有内容都是免费的,完全是公共领域!使用我们的模型时无需信用或归属! 使用说明:为每个人提供完全免费的公共领域内容。 30.Sketch up texture club Sketchup Texture Club是一个非营利性的教育和信息门户网站,由3D社区的图像促进协会管理,特别强调面向学生和建筑和室内设计专业人士的可视化和渲染技术,以及所有正在学习3D可视化的人。 使用说明:您无需支付版税或使用费。纹理可以免费下载和使用。不允许将纹理作为竞争产品出售或重新分发,即使图像被修改也是如此。 31. FlippedNormals FlippedNormal 是一个提供计算机图形和 3D 资产的市场,您可以找到许多用于雕刻、建模、纹理、概念艺术、3D 模型、游戏资产或课程的高级资产! 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 32. NASA 3D NASA 3D网站是一个在线门户,提供与太空和各种NASA任务相关的大量三维模型和模拟。该网站是用户友好的,并提供有关每个型号的详细信息。该网站允许用户探索和下载几种不同格式的模型,包括 OBJ、STL 和 FBX,只需单击下载按钮即可。 使用说明: 要下载模型,只需单击模型页面上的下载按钮并选择所需的格式。 33. 3DAGOGO (Astroprint) 3DAGOGO 是一个提供广泛 3D 模型的网站,包括角色、车辆和建筑物。3DAGOGO 的独特功能之一是它专注于适合 3D 打印的模型,使其成为希望创建物理原型或模型的设计师的绝佳资源。要使用 3DAGOGO,设计师只需在网站上搜索他们正在寻找的模型类型,然后下载 STL 格式的文件。 使用说明: 要使用 3DAGOGO,只需搜索所需的 3D 模型类型并下载 STL 格式的文件。根据需要自定义模型,并确保在将其用于商业目的之前检查使用权限。 34. FreeCAD FreeCAD是一款了不起的3D建模软件,可让您在计算机上创建令人难以置信的3D设计。该软件可免费下载和使用,它提供了广泛的工具和功能,可用于创建用于各种目的的3D模型。 该网站易于浏览,您可以找到开始使用FreeCAD的所有必要信息。此外,该网站还提供一系列教程和指南,可帮助您了解 3D 建模的来龙去脉。 使用说明: 要下载模型,请访问网站并从库中选择所需的模型。该网站还提供了一系列使用该软件的教程和指南。 35. Pinshape Pinshape是一个提供一系列3D打印模型的网站。网站上提供的型号质量很高,因此您可以确保您的最终印刷产品看起来很棒。该网站提供了广泛的模型,包括从家居用品到小雕像和珠宝的所有物品。 但这还不是Pinshape所能提供的全部!该网站还允许用户上传和共享自己的3D模型。这意味着您不仅可以下载出色的模型,还可以通过分享自己的设计为社区做出贡献。此外,Pinshape 提供了一系列自定义选项,因此您可以调整和调整模型以满足您的特定需求。 使用说明: 要下载模型,请在网站上创建一个帐户,搜索所需的模型,然后单击下载按钮。该网站还为每种型号提供了一系列定制选项。 36.Yeggi Yeggi 提供了大量免费的 3D 模型,您可以下载各种格式的模型,例如 STL、OBJ 和 FBX。该网站易于使用,您可以按关键字、类别或特定网站搜索模型。 Yeggi 对于任何寻找 3D 模型的人来说都是一个很好的资源。它提供了大量的模型集合,从日常物品到复杂的机械,以及介于两者之间的一切。该网站的收藏量在不断增长,每天都有新的型号增加。 使用说明: 要下载模型,请在网站上搜索所需的模型,然后单击下载按钮。该网站还提供指向托管模型的原始网站的链接。 37. Open3DModel 来自开放3D模型的图像 Open3DModel具有各种类别的模型,包括建筑,车辆和角色。无论您需要建筑物,汽车还是人的3D模型,都可以在此网站上找到。 该网站易于浏览,您可以按类别或关键字搜索模型。每个模型都附带预览图像和详细信息,例如文件格式、大小和多边形数量。此信息可以帮助您选择适合您需求的模型。 使用说明: 要下载模型,请访问网站,从库中选择所需的模型,然后单击下载按钮。 使用最好的 3D 资产管理工具简化您的 3D 制作流程。立即试用它们,将您的 3D 项目提升到一个新的水平! 38. 3DExport 对于那些为其 3D 设计项目寻找 3D 模型、纹理和其他资源的人来说,该平台是一个很好的资源。该网站有大量模型可供选择,包括 3D 打印对象、游戏资产等。用户可以按类别、文件格式或价格范围浏览,以找到适合其项目的完美资源。此外,3DExport 还提供一系列教程和其他 3D 资源,以帮助用户提高技能并创建更令人印象深刻的设计。 使用说明: 要使用 3DExport,只需创建一个帐户并浏览可用型号。您可以按类别、格式和价格进行搜索,以找到所需的型号。找到喜欢的模型后,只需下载它并开始在您的项目中使用它。 39.Blend Swap Blend Swap是一个社区驱动的市场,提供与Blender软件兼容的各种免费3D模型。该平台允许用户共享和下载模型、纹理和其他资产,以便在他们的项目中使用。 使用说明: 创建免费帐户后,您可以浏览社区上传的大量3D模型。当您找到要使用的一个时,只需下载它并将其导入您选择的 3D 软件即可。 40. 3DShook 3DShook 是一个高级 3D 模型市场,提供一系列用于建筑、游戏等各个行业的高质量模型。该平台提供基于订阅的模型,具有不同的定价计划,允许用户访问一系列模型。 使用说明: 注册免费帐户后,只需浏览3D模型库,选择您喜欢的模型,然后以您需要的格式下载它们。 41. Smithsonian X 3D 史密森尼 X 3D 对于正在寻找历史文物和文物的高质量 3D 模型的设计师来说,这是一个独特的资源。该平台提供了大量3D模型,这些模型是根据史密森尼博物馆和研究中心中的真实物体扫描创建的。 使用说明: