拉着狗继续写
现在开始加入zookeeper
zookeeper3.4.6, 解压到/usr/local
目录下(所有的服务器)
zookeeper的介绍请自行百度,或者去官网查看
ok,节点分布如下
服务器 |
NN |
JN |
DN |
ZK(zookeeper|QuorumPeerMain) |
ZKFC(DFSZKFailoverController) |
hadoop004 |
Y |
|
|
Y |
Y |
hadoop001 |
Y |
Y |
Y |
Y |
Y |
hadoop002 |
|
Y |
Y |
Y |
|
hadoop003 |
|
Y |
Y |
|
|
接下来继续写配置文件,还是那几个
1. core-site.xml
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop004:2181,hadoop001:2181,hadoop2:2181</value>
</property>
配置zookeeper所在服务器
2. hdfs-site.xml
<property>
<!--启用命名空间-->
<name>dfs.nameservices</name>
<!-- 这个名字随便取,注意后面配置中要与之对应 -->
<value>zyf</value>
</property>
<property>
<!--配置namenode节点别名-->
<name>dfs.ha.namenodes.zyf</name>
<value>nn1,nn2</value>
</property>
<property>
<!--配置namenode节点地址-->
<name>dfs.namenode.rpc-address.zyf.nn1</name>
<value>hadoop004:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.zyf.nn2</name>
<value>hadoop001:8020</value>
</property>
<property>
<!-- http服务地址 -->
<name>dfs.namenode.http-address.zyf.nn1</name>
<value>hadoop004:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.bjsxt.nn2</name>
<value>hadoop001:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<!--配置JN--> <value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/zyf</value
>
</property>
<property>
<name>dfs.client.failover.proxy.provider.zyf</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<!--ssh验证方式,官网还有另一种-->
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/zhengyifan/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/journal</value>
</property>
<property>
<!--启用高可用-->
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
ok,和之前的/opt/hadoop
一样,保证/opt/journal
为空或没有,记得保证有权限
3. zoo.cfg
在ZOOKEEPER_HOME
目录下/conf
下,
cp zoo_sample.cfg zoo.cfg
编辑文件zoo.cfg
# 修改dataDir
dataDir=/opt/zookeeper
# 编辑节点
server.1=hadoop004:2888:3888
server.2=hadoop001:2888:3888
server.3=hadoop002:2888:3888
4. 创建myid
在被指定配置zookeeper的服务器的/opt/zookeeper
下新建文件myid
并写入与配置文件对应的数字,例如,hadoop004这台服务器在配置文件中被指定的是server.1,那么myid中写入1,不要有多余的字符
5. scp zookeeper到各个服务器中
6. 分别在三台服务器中启动zookeeper
./zkServer.sh start
7. 启动 JournalNode
./hadoop-daemon.sh start journalnode
8. 格式化其中一台namenode
hdfs namenode -format
9. 同步数据到第二台namenode
启动刚刚格式化的namenode:
start-dfs.sh
在没有格式化的namenode上执行:
hdfs namenode -bootstrapStandby
启动第二个namenode:
start-dfs.sh
10 .格式化ZK
在其中一个namenode上初始化zkfc
hdfs zkfc -formatZK
ok,启动完毕,jps验证各个节点对应的服务是否全部启动
查看hadoop004:50070
和hadoop001:50070
,是否一个为active,一个为standby
停掉active的namenode
hadoop-daemon.sh stop namenode
验证:active的服务页面是否挂掉,standby的节点是否变为active