HA&Federation

架构图

从nameNode1、namenode2克隆出namenode3、namenode4,分别作为1、2的standby node。

把datanode2、3、4作为namenode1的jounalnodes,datanode4、5、6作为namenode2的journalnodes。

同时将datanode2、3、4组成zookeeper cluster1,datanode5、6、7组成zookeeper cluster2,分别为namenode1、2管理的两个nameservice,提供namonode间的HA自动切换。


配置

1. 在datanode2、3、4、5、6、7上安装zookeeper

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
 修改datanode2、3、4中的zoo.cfg文件为

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hduser/mydata/zookeeper/zkdata
dataLogDir=/home/hduser/mydata/zookeeper/zkdatalog
clientPort=2181
server.1=datanode2:2888:3888
server.2=datanode3:2888:3888
server.3=datanode4:2888:3888

datanode5、6、7中的zoo.cfg为

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hduser/mydata/zookeeper/zkdata
dataLogDir=/home/hduser/mydata/zookeeper/zkdatalog
clientPort=2181
server.1=datanode5:2888:3888
server.2=datanode6:2888:3888
server.3=datanode7:2888:3888

在每个节点上创建配置文件中所设的目录,同时在dataDir下新建myid文件

mkdir -p /home/hduser/mydata/zookeeper/zkdata
mkdir -p /home/hduser/mydata/zookeeper/zkdatalog
vi /home/hduser/mydata/zookeeper/zkdata/myid
myid文件里就写一个数字,就是zoo.cfg文件里所配置的

server.X = datanodeN:2888:3888

中,节点N所对应的数字X。所以datanode2、5中myid文件内容就是数字1,datanode3、6是数字2,datanode4、7是数字3。

最后还要设置一下环境变量,添加一行到~/.bashrc

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH

2. 修改配置文件core-site.xml

基本的配置前面的文章都写了,这里只贴出需要修改和增加的配置项。

修改所有namenode和datanode的core-site.xml

  <property>
    <name>fs.defaultFS</name>
    <value>viewfs:///</value>
  </property>
  <property>
    <name>fs.viewfs.mounttable.default.link./ns1</name>
    <value>hdfs://ns1</value>
  </property>
  <property>
    <name>fs.viewfs.mounttable.default.link./ns2</name>
    <value>hdfs://ns2</value>
  </property>

其中ns1、ns2与下面hdfs-site.xml中配置的nameservices对应。

在datanode1、3的core-site.xml中添加

<property>
<name>ha.zookeeper.quorum</name>
<value>datanode2:2181,datanode3:2181,datanode4:2181</value>
</property>

在datanode2、4的core-site.xml中添加

<property>
<name>ha.zookeeper.quorum</name>
<value>datanode5:2181,datanode6:2181,datanode7:2181</value>
</property>


3.修改配置文件hdfs-site.xml

在所有节点(datanode1-3、namenode2-7)中的hdfs-site.xml中都添加以下配置

  <property>
    <name>dfs.nameservices</name>
    <value>ns1,ns2</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.ns1</name>
    <value>nn1,nn3</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
    <value>namenode1:9000</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns1.nn3</name>
    <value>namenode3:9000</value>
  </property>
  <property>
    <name>dfs.client.failover.proxy.provider.ns1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.ns2</name>
    <value>nn2,nn4</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns2.nn2</name>
    <value>namenode2:9000</value>                                                                                                               
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns2.nn4</name>
    <value>namenode4:9000</value>
  </property>
  <property>
    <name>dfs.client.failover.proxy.provider.ns2</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>/home/hduser/.ssh/id_rsa</value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
  </property>
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/hduser/mydata/hdfs/journalnode</value>
  </property>
然后单独在namenode1、3的hdfs-site.xml中添加
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值