hadoop高可用HA的搭建:
8485:journal node的默认端口号
思路:搭建zookeeper,在hadoop启动之前zookeeper就已经启动了。
免秘钥:就是让zookeeper能够在各台集群机器之间进行自由的交互。
1、上传解压zookeeper
zookeeper在使用的时候,
一种是主从模式
无主模型
在conf下修改文件:cp zoo.cfg
进入zoo.cfg文件:
创建相应的文文件夹:mkdir -p /var/sxt/hadoop/zk
将相应的ID追加到相应的文件中:
echo 1 > /var/sxt/hadoop/zk/myid
依次在node12,node13,node14上边去执行
启动:zkServer.sh start
查看状态:zkServer.sh status
进入文件的新用法:
[root@node11 ~]# cd $HADOOP_HOME
[root@node11 hadoop-2.6.5]# cd
[root@node11 ~]# cd $JAVA_HOME
[root@node11 jdk1.7.0_67]# cd
[root@node11 ~]#
以上,zookeeper就已经配置好了
2、搭建HA模式:
配置两个文件:
文件的内容:
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node11:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node12:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node11:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node12:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node11:8485;node12:8485;node13:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</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>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/ha</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node12:2181,node13:2181,node14:2181</value>
</property>
</configuration>
然后将这两个文件分发给其他节点:
[root@node11 hadoop]# scp core-site.xml hdfs-site.xml node14:`pwd`
3、格式化:
格式化之前必须要先启动journal node
[root@node11 hadoop]# hadoop-daemon.sh start journalnode
同时要确保zookeeper处于启动状态
执行格式化的命令:
[root@node11 hadoop]# hdfs namenode -format
第一台同步,之前需要qidongnamenode:
[root@node11 hadoop]# hadoop-daemon.sh start namenode
第二台执行:
[root@node12 sxt]# hdfs namenode -bootstrapStandby
在node14上边启动zookeeper的客户端:
找node11或者node12格式化zookeeper
[root@node11 hadoop]# hdfs zkfc -formatZK
完成之后启动hdfs:在node11上边执行:
[root@node11 hadoop]# start-dfs.sh
检查node14上边zookeeper的状态:
单独启动:
[root@node11 hadoop]# hadoop-daemon.sh start namenode