hadoop2.x HDFS HA linux环境搭建
HDFS High Availability Using the Quorum Journal Manager
准备3台机器可以更多
| NN | DN | ZK | ZKFC | JN | RM | DM | |
| node1 | 1 | 1 | 1 | 1 | 1 | 1 | |
| node2 | 1 | 1 | 1 | 1 | 1 | 1 | |
| node3 | 1 | 1 | 1 | 1 | 1 | 
一个NN对应一个ZKFC(FailoverController)
ZKFC为NN竞争锁,ZK采用投票机制,ZK需要奇数个
JN 元数据存储集群
修改hadoop配置文件
hadoop-env.sh
	JAVA_HOME
hdfs-site.sh
<!-- 服务名 -->
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<!-- 所有NameNode名 -->
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<!-- NameNode RPC协议 地址 -->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node2:8020</value>
</property>
<!-- NameNode HTTP协议 地址 -->
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node2:50070</value>
</property>
<!-- JournalNode  地址 -->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
</property>
<!-- JAVA 客户端访问使用类 -->
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- ssh 私钥 地址 -->
<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_rsa</value>
</property>
<!-- journalnode 工作目录 -->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journal/node/data</value>
</property>
<!-- fail 后 自动切换 -->
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
 
 
 
 
 core-site.xml
 
 <!-- NameNode 入口 -->
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<!-- ZooKeeper 集群 -->
 <property>
   <name>ha.zookeeper.quorum</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>
 
 <!-- hadoop 工作临时目录 -->
  <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/hadoop2</value>
 </property>
 
 修改zookeeper配置文件
将conf/zoo_sample.cfg 改为 conf/zoo.cfg
cp zoo_sample.cfg zoo.cfg
dataDir=/opt/zookeeper
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
手动创建dataDir目录
创建文件     myid
1/2/3
将zookeeper 配置到环境变量
启动 zkServer.sh start
 配置完成后
1启动zookeeper  zkServer.sh start 所有节点上都需启动
2启动	JN 在sbin目录下 ./hadoop-daemons.sh start journalnode 所有节点上都需启动
3在任何一个NN节点上格式化NN
 在bin目录下 ./hdfs namenode -format
4将格式化后的元数据文件拷贝到其他	NN节点
 先将格式化好的NN	启动  ./hadoop-daemon.sh start namenode
 在没有格式化的NN节点上执行 ./hdfs namenode -bootstrapStandby
5成功后停止hadoop所有服务sbin下 ./stop-dfs.sh
6初始化zkfc 在其中一台NN节点上执行  bin目录下 ./hdfs zkfc -formatZK
7再一次全部启动 ./start-dfs.sh
                    
                
                
            
        
浙公网安备 33010602011771号