本节目标:

掌握HDFS HA的部署

本节参考官方文档进行部署。

所需软件:JDK1.8、Hadoop2.7.6、zookeeper3.4.11

节点部署情况:

 

 

NN

DN

JN

ZK

ZKFC

master

l   

 

 

l   

l   

slave1

l   

l   

l   

l   

l   

slave2

 

l   

l   

l   

 

slave3

 

l   

l   

 

 

基于完全分布式搭建,完成HDFS HA部署。

1、安装zookeeper  /usr/local/src/zookeeper
环境变量:
vi ~/.bashrc
export ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.11
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source ~/.bashrc
进入安装目录下的conf目录下,

mv zoo_sample.cfg zoo.cfg 

添加一下配置信息:

dataDir=/usr/local/src/zookeeper-3.4.11/data
server.1=192.168.188.10:2888:3888
server.2=192.168.188.11:2888:3888
server.3=192.168.188.12:2888:3888
/usr/local/src/zookeeper/data下创建myid  ---》内容为每个机器对应的服务号1、2、3
同步zookeeper到slave1,slave2,修改环境变量,修改对应的myid

2、删除各节点上的masters。masters文件指定SNN,而HDFS HA不需要SNN。

3、删除各节点上的hdfs内容保存目录

4、hdfs-site.xml修改

<property>
  <name>dfs.nameservices</name>  --->命名服务
  <value>HDFSHA</value>
</property>
<property>
  <name>dfs.ha.namenodes.HDFSHA</name>    --->命名服务下指定两台nn
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.HDFSHA.nn1</name>   --》指定rpc
  <value>master:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.HDFSHA.nn2</name>
  <value>slave1:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.HDFSHA.nn1</name>   --》指定http
  <value>master:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.HDFSHA.nn2</name>
  <value>slave1:50070</value>
</property>
<property>    -->指定JN
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://slave1:8485;slave2:8485;slave3:8485/HDFSHA</value>
</property>
<property>  --》自动故障迁移
  <name>dfs.client.failover.proxy.provider.HDFSHA</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_rsa</value>
</property>
<property>   --》指定JN中edit存放目录
  <name>dfs.journalnode.edits.dir</name>
  <value>/usr/local/src/journal/data</value>
</property>
 <property>  -->是否启用自动故障迁移
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>

 </property>

5、core-site.sh
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://HDFSHA</value>
</property>
 <property>  --》指定zk集群
   <name>ha.zookeeper.quorum</name>
   <value>master:2181,slave1:2181,slave2:2181</value>
 </property>

 

     <property>
        <name>hadoop.tmp.dir</name>     
        <value>/usr/localc/hadoop-2.7.6/tmp<value>
    </property> 

6、同步配置文件

scp ./*.xml slave1:/usr/local/src/hadoop-2.7.6/etc/hadoop

scp ./*.xml slave2:/usr/local/src/hadoop-2.7.6/etc/hadoop

scp ./*.xml slave3:/usr/local/src/hadoop-2.7.6/etc/hadoop

7、启动JN
slave1,slave2,slave3上执行 --> hadoop-daemon.sh start journalnode

6、在master上进行格式化,并启动NN

 hadoop namenode -format   

hadoop-daemon.sh start namenode
8、在另一个NN上执行: hdfs namenode –bootstrapStandby,同步元数据信息。

9、启动zk

zkServer.sh start

检查状态:zkServer.sh status

10、在其中一个NN上格式化zk:  hdfs zkfc -formatZK

11、启动hdfs

start-dfs.sh

12、HA检查

Hadoop——HDFS HA部署

Hadoop——HDFS HA部署

关闭其中一个活跃的NN,hadoop-daemon.sh stop namenode;看Standby状态的NN是否自动切换为Active。

注意:先启动zookeeper,然后启动hdfs。

 

 

 

相关文章: