一、说明
本文Namenode HA部分参考了http://www.cnblogs.com/meiyuanbao/p/3545929.html 这片文章,ResourceManager是参考CDH官方文档搭建而成。
1. 本文档以四台机器为例搭建hadoop集群,各台机器的职责如下:
此集群主要包括Namenode HA和RresourceManager HA,这是本文重点所在。
2. 系统准备
Linux版本Cent OS 6.5
由于系统默认单个进程打开的句柄数过低,所以首先要修改以下参数
/etc/security/limits.conf
hadoop soft nofile 131072
hadoop hard nofile 131072
/etc/security/limits.d/90-nproc.conf
hadoop soft nproc unlimited
root soft nproc unlimited
hadoop hard nproc unlimited
3. hadoop及zookeeper版本
hadoop版本:hadoop-2.3.0-cdh5.0.0.tar.gz
zookeeper版本:zookeeper-3.4.5-cdh5.0.0.tar.gz
4. 要提前配好ssh的无密码连接(用hadoop用户),在/etc/hosts中做好整个集群的hostname和ip的映射,以及安装JDK7,本文档不再详述。
二、部署步骤
1. Zookeeper的配置
1.1 新建目录 /opt/boh, 以后整个hadoop生态的其他组件都将安装到此目录下。
mkdir-p /opt/boh
新建名字为hadoop的用户
useradd hadoop
将/opt/boh赋予hadoop用户
chown -R hadoop:hadoop /opt/boh
1.2 将zookeeper-3.4.5-cdh5.0.0.tar.gz解压缩到/opt/boh下,并重命名为zookeeper。
1.3 修改zookeeper配置文件
/opt/boh/zookeeper/conf/zoo_sample.cfg 重名为zoo.cfg
进入到conf目录下,执行:
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg
1.4 将整个zookeeper目录分别复制hadoop1,hadoop2,hadoop3上。分别在hadoop1,hadoop2,hadoop3创建dataDir属性指定的目录,并在此目录下创建myid文件。
cd /opt/boh/zookeeper/dataDir
vi myid
hadoop1上的myid里面写入值1
hadoop2上的myid里面写入值2
hadoop3上的myid里面写入值3
1.5 修改环境变量
vi /etc/profile
添加
$ZOOKEEPER_HOME=/opt/boh/zookeeper
PATH=$ZOOKEEPER_HOME/bin:$PATH
执行 source /etc/profile
1.6 在hadoop1,hadoop2,hadoop3上执行
chown -R hadoop /opt/boh/zookeeper
1.7 验证是否成功
分别在hadoop1,hadoop2,hadoop3上执行zkServer.sh start
用jps命令查看进程QuorumPeerMain是否启动
2. Namenode HA的配置
2.1 将hadoop-2.3.0-cdh5.0.0.tar.gz解压到/opt/boh/下,并重命名为hadoop,
修改etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://boh</value>
</property>
【boh是个逻辑名称,可以随意制定,它来自于hdfs-site.xml中的配置】
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/boh/hadoop/tmp</value>
</property>
【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。】
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
【这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点】
<property>