5个节点:
hadoop01
,
hadoop02
,
hadoop03,hadoop04,hadoop05
(时间同步:ntpdate -u ntp.sjtu.edu.cn)
NN | DN | ZK | ZKFC | JN | |
hadoop01 | Y | Y | |||
hadoop02 | Y | Y | Y | ||
hadoop03 | Y | Y | Y | ||
hadoop04 | Y | Y | Y | ||
hadoop05 | Y | Y | Y |
1、配置hdfs-site.xml文件
<!-- 副本个数 -->
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 每个集群都会有一个服务编号,区分属于哪个服务 -->
<property>
<name>dfs.nameservices</name>
<value>
hbb</value>
</property>
<property>
<name>dfs.ha.namenodes.
hbb</name>
<value>
nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.
hbb.nn1</name>
<value>hadoop01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.
hbb.nn2</name>
<value>hadoop02:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.
hbb.nn1</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.
hbb.nn2</name>
<value>hadoop02:50070</value>
</property>
<!-- journalnode存放edits日志文件 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop03:8485;hadoop04:8485;hadoop05:8485/
hbb001</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.
hbb</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<!-- 打开zk自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
2、配置core-site.xml文件
<configuration>
<!-- 访问服务编号,服务编号作为访问入口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://
hbb</value>
</property>
<!--
hadoop
存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.5</value>
</property>
<!-- journalnode存放目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/journalnode/data</value>
</property>
<!-- zk集群配置 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
</property>
</configuration>
3、搭建
ZK集群步骤
,zoo.cfg配置文件(
zoo_sample.cfg-->zoo.cfg)
a. 修改dataDir=/opt/zookeeper
// ZK数据存放目录
b. server.
1=hadoop03:2888:3888
//
2888--通信端口,3888--选举端口
server.
2=hadoop04:2888:3888
server.
3=hadoop05:2888:3888
c. 在dataDir目录中创建一个
myid的文件,文件内容为
1,2,3(不重复)
4、配置hadoop中的slaves(文件形式)datanode($HADOOP_HOME/etc/hadoop),masters不需要配置
hadoop02
hadoop03
hadoop04
hadoop05
5、启动三个zookeeper(各个节点均执行)
:
./zkServer.sh start
./zkServer.sh status(查看zookeeper启动状态是否正常)
6、启动3个JournalNode
(各个节点均执行,hadoop03,hadoop04,hadoop05):
./hadoop-daemon.sh start journalnode
7、在其中一个namenode(hadoop01或者hadoop02)上格式化:
hdfs namenode -format
8、
把刚刚格式化之后的元数据拷贝到另外一个namenode上
a. 启动刚刚格式化的namenode
:hadoop-daemon.sh start namenode
b. 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby
c. 启动第二个namenode
9、在其中一个namenode上初始化zkfc:
hdfs zkfc -formatZK
10、停止上面节点:
stop-dfs.sh
11、全面启动:
start-dfs.sh
12、查看
HA是否搭建成功:
查看hadoop01和hadoop02状态(
active和
standby)