Hadoop名词个人理解

2012-05-16

关于业务流程

把一次分布式计算看成是农业的生产过程,hadoop则是一种生产解决方案。

     Map:播种的阶段,最后会产出粮食的粗制产品。看做是执行培养活动的农田。

     Combiner:顾名思义,联合收割机。把粗制产品收割,然后打包起来等待加工。可以提高加工阶段的效率,当然可以不选择使用。每个农田里用各自的收割机,没听说过一台收割机打遍天下。

Shuffle: 直译叫洗牌。在这个世界观里,可以认为从农田按照类别(key)分发到不同加工单位的过程。

     Reduce:加工阶段,将粗制的农产品加工成真正的粮食产品,也就是解决方案的最终成果。看做是农产品加工厂。

 


关于物理结构

     针对HDFS的领域,有三个概念:Name-Node(命名节点)、Data-Node(数据节点)、Secondary Name-Node(次级命名节点)。把HDFS看做使用一种工头-苦工的模式进行工作的搬运码头,整个文件系统就是这个码头,文件就是货物。

      命名节点就是工头,负责苦工的点名和指派工作(维护文件树的文件和索引)。

      数据节点就是参与工作的苦工们。苦工们的工作就是搬运物资(存储文件和接受访问)。

扫描二维码关注公众号,回复: 272904 查看本文章

      苦工每隔一段时间要向工头汇报工作及其分管的货物的状态,这种行为称之为Heartbeat(心跳)。一旦工头发现苦工没有心跳了,就会要求苦工重新恢复,或者寻求数据的重新备份。

      第二命名节点听起来像是第二号工头的样子,却没有工头的职责。他会不断的备份工头的数据(命名空间镜像)。如果工头挂掉了,我们可以手动提升它为工头,以继续系统工作。由于这种备份存在滞后性,因此损失在所难免。

      这种模式的弊端在于一旦工头挂掉,整个系统就失效,如果没有备份,则连恢复系统的机会都没有。两种方式来防止无可挽回的损失,一是命名节点不断在其他地方进行持久化操作;二是使用二级命名节点。

 


关于任务结构

     JobTracker:是协调作业运行的Java应用程序,负责创建、划分、分配任务。任务分为Map任务和Reduce任务。分配Map任务的时候会优先考虑数据的本地化(data local)特性,其次是数据同机架(rack local)的,最后是既非本地化又非同机架化,以提高效率;但分配Reduce任务不会有这方面考虑。

     TaskTracker:执行任务的Java应用程序,接受JobTracker的分配。

     BlackList: 在进行任务(不仅限一个任务)的过程中,某个TaskTracker节点往复的发生过N次(可配置)任务失败状况,将导致JobTracker将该TaskTracker节点写入BlackList(黑名单)。节点在被写入黑名单的时期,将不会再被JobTracker调用。除非节点被手动重启或者24小时之后被JobTracker自动赦免。【个人心得】发生黑名单情况很经常是因为硬盘被写爆了。

猜你喜欢

转载自aeolus1983.iteye.com/blog/2307725