菜鸟的Hadoop学习之路系列<二>:Hadoop集群构成和HDFS

2 篇文章 0 订阅
2 篇文章 0 订阅

    上一篇文章自己动手搭建Hadoop集群中介绍了有三台机器的Hadoop集群的搭建过程,其中提到了服务器结点在Hadoop集群中的一些不同角色。实际上,在Hadoop的集群服务器中运行着一系列有着特殊功能的进程,包括:

  • NameNode
  • DataNode
  • Secondary NameNode
  • JobTracker
  • TaskTracker                            

    这些进程有的只存在于一台服务器上有的存在于多台服务器,赋予了不同服务器结点不同的角色。

NameNode
    可以说这是集群中最重要的进程。Hadoop中的分布式文件系统Hadoop File System(HDFS)采用的是 主/从 的体系结构(master/slave architecture)。运行NameNode的唯一服务器作为HDFS的主服务器,命令作为DataNode的从服务器进行底层的I/O任务。其次,NameNode服务器记录了HDFS中所有文件如何被分解为块数据(block,一个块数据通常为64M大小),以及这些快数据存放在哪些DataNode服务器节点中,还记录了分布式文件系统的总体状态信息。

DataNode
    通常有许多服务器结点运行DataNode作为集群中基本的存储单元,DataNode负责进行HDFS数据块的读写,当客户端向NameNode进行Hadoop文件系统中文件的读写请求时,NameNode告知客户端该文件的每一个数据块存放在哪一个DataNode中,客户端再直接与DataNode通信处理相关文件。为保证系统的鲁棒性,DataNode之间会相互通信备份块数据,在NameNode记录了HDFS中所有文件如何被分解为块数据,以及这些块数据存放在哪些服务器节点中,DataNode会不断地向NameNode报告本节点对块数据的存储信息的改变以保证NameNode中的信息更新。

    图一描述了NameNode和DataNode所扮演的角色,图中我们展示了两个数据文件分别位于/user/chuck/data1和/user/james/data2,文件data1由三个块数据组成我们称其为1,2和3,同样的文件data2由块数据4,5组成,文件的内容被分布到了各个Datanode中,我们看到每个块数据有三个备份,例如block 1存在于图中最右边的三个DataNode中,这保证了如果集群中的某台机器Down机或者无法通过网络访问时我们仍然能够读取文件。

图一

Secondary NameNode

    可以理解为NameNode的一个备份,为了用于NameNode发生故障时候的系统恢复。所以Secondary NameNode通常是一台单独的服务器而不与其他服务(DataNode, TaskTracker)共享一台服务器,在上一篇集群搭建的文章中由于机器数量不够的原因(囧)所以我将这个服务放置到与NameNode相同的服务器上了。与NameNode不同的是,Secondary NameNode不会实时记录HDFS中的文件存储信息,而是定时的与NameNode通信获得NameNode上关于HDFS元数据的一个快照。当NameNode发生故障时,配置Secondary NameNode成为新的NameNode可以快速回复系统运作以及最小化数据损失。

JobTracker

    JobTracker负责联络用户的应用和Hadoop。当执行代码提交到Hadoop集群,JobTracker决定了整个的执行计划,包括要处理哪些文件,分配给不同节点不同的任务,以及监控所有任务的执行情况。当任务执行失败,JobTracker在会再次在别的节点重新发起任务。集群中只有一个唯一的作为Master节点的服务器运行JobTracker进程。

TaskTracker

    与之前负责存储的NameNode和DataNode一样,负责计算的进程也遵循master/slave的体系结构:JobTracker作为master监督一个Map-Reduce任务的整体执行,每个slave节点上的TaskTracker分别管理单个任务的执行。由图二我们可以看到,每个TaskTracker负责执行JobTracker分配的单个任务。slave节点上的TaskTracker可以产生多个 JVM并行的处理许多的map或reduce任务。在Map-reduce任务处理过程过程中看,TaskTracker会持续的与JobTracker通信,如果JobTracker 在设定好的一段时间内没有接收到来自TaskTracker的心跳信息,JobTracker 会将属于该TaskTracker的相关任务重新提交到其余的节点上去完成。


图二

    最终我们将Hadoop集群的拓扑结构描绘为图三所示,一个作为master的节点同时运行NameNode和JobTracker,Secondary NameNode为防止master节点的失效存在于另一个独立的节点。对于小规模的集群,Secondary NameNode可以存在于一个slave节点中,对于大规模的集群,NameNode和JobTracker可以分隔到为两个服务器上。作为slave的服务器 同时运行DataNode 和TaskTracker,这样对于一个任务,可以实现在存储这个任务所使用的数据的那个节点运行这个任务,最大限度避免节点之间的数据传输,提高效率。

图三

下一篇预告:Hadoop中的Map-Reduce过程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值