一、 描述
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.2.0就需要重新在64操作系统上重新编译。
二、集群规划
主机名 IP 安装的软件 运行的进程
hadoop1 192.168.31.10 jdk、hadoop NameNode、DFSZKFailoverController
hadoop2 192.168.31.20 jdk、hadoop NameNode、DFSZKFailoverController
hadoop3 192.168.31.30 jdk、hadoop ResourceManager
hadoop4 192.168.31.40 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop5 192.168.31.50 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop6 192.168.31.60 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop2后为了解决namenode单点故障瓶颈问题,namenode提供了HA部署,具体见下图:
在一个hadoop集群中可有多个nameservice,每个nameservice服务下只有两个namenode,在服务启动后,同一个nameservice下的两个namenode,一个处于standby状态,一个处于active状态。如果active状态的namenode服务挂了,那么会自动切换到备机standby,并且状态有standby改为active。
三,集群中各个进程间工作协调关系
在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为active状态