也接触Hadoop好长时间了,一直想写篇关于Hadoop的博文,看来今天倒是挺不错,动动笔喽。
I.版本杂说:
Hadoop现在已经有了2.0版本,那么相比1.0版本,Hadoop确实解决了一些比较棘手的问题:
1、单点故障问题。由于1.0版本的NameNode只有一个,所以一旦部署NameNode的机器宕掉,整个集群就会瘫痪。所以,2.0版本增加了Secondary NameNode,它相当于NN的副手,它的作用不是要取代掉NN,也不是NN的备份。它会和NN进行通信,将快照更新到fsimage镜像文件,将修改保存到edits日志中,这就极大地降低了单点故障所带来的数据损失和宕机时间给集群的影响。
2、资源管理框架Yarn的引入。相比1.0版本,2.0版本将JobTracker的资源管理和作业控制分开,分别由负责所有应用程序资源分配的ResourceManager和负责管理应用程序的ApplicationMaster组成。这样,Hadoop的组成就变成了分布式存储HDFS,分布式计算MapReduce和资源管理系统Yarn。
II.节点杂说:
说到节点,我们就会想到NameNode,Secondary NameNode(高可用NameNode将不包含Secondary NameNode),DataNode三种节点。
普通的,Secondary NameNode会将NameNode中edits日志和fsimage做定期合并,防止Namenode的节点故障,并且,当namenode宕掉后需要快速启动的时候,Secondary NameNode会把合并好的fsimage镜像文件加载到NameNode内存中实现快速启动。
特别的, 若NameNode配置了高可用(即NameNode HA),集群将会有两个NameNode(这显然是不对的,此处要理解为一个工作,一个预备),Active和Standby,虽然会有两个NameNode,但真正管理集群的只有一个NameNode,即就是Active NameNode。因此,Active节点和Standby节点会保持状态同步,Active NameNode负责集群中的所有客户端操作,Standby充当备份,并且Standby机器要保持足够的状态以提供快速故障切换。