Hadoop主要由两部分构成:分布式文件系统HDFS和统一资源管理和调度系统YARN。正如前文所述,分布式文件系统主要是用于海量数据的存储,而YARN主要是管理集群的计算资源并根据计算框架的需求进行调度。本节主要是为了让读者对Hadoop的架构有个比较清晰的了解,为后面的安装和学习打下基础。
构成HDFS集群的主要是两类节点,并以主从(master/slave)模式,或者说是管理者-工作者的模式运行,即一个NameNode(管理者)和多个DataNode(工作者)。还有一种节点叫SecondaryNameNode,作为NameNode镜像数据备份。如图2-2所示,图中的所有物理节点构成了一个HDFS集群,而NameNode、DataNode和SecondaryNameNode其实是各自节点上运行的守护进程。所以NameNode既是守护进程,也可以指运行NameNode守护进程的节点。客户端代表用户与整个文件系统交互的客户端。
图2-2 HDFS架构
表2-3列出了HDFS中守护进程的数目及其作用。
表2-3 HDFS守护进程
构成YARN集群的是两类节点:ResourceManager和NodeManager。同HDFS类似,YARN也采用主从(master/slave)架构,如图2-3所示。
图2-3 YARN架构
ResourceManager和NodeManager也是两种守护进程,运行在各自的节点上。表2-4列出了ResourceManager和NodeManager守护进程的数目和作用。
表2-4 ResourceManager和NodeManager守护进程
从上面的介绍读者可以知道,HDFS集群和YARN集群其实由一些守护进程组成,而所有这些守护进程和运行它们的节点就构成了Hadoop集群。如图2-4所示,这个集群的NameNode进程和ResourceManager进程在一个节点上运行,而DataNode和NodeManager在同一个节点上运行着。
值得一提的是,DataNode和NodeManager需要配对部署在同一个节点,但NameNode和ResourceManager却并不一定部署在同一个节点。在生产环境中,为了性能和稳定性考虑,强烈建议NameNode和ResourceManager分开部署。如图2-5所示(为了突出重点,这里省略了SecondaryNameNode和客户端,实际上是存在的),这样也是一个标准的Hadoop集群。
图2-4 Hadoop集群
图2-5 另一种Hadoop集群部署方式