HDFS HA系列实验之四:HA+Federation

来源:互联网 发布:巨人网络回归a股时间 编辑:程序博客网 时间:2024/05/22 10:29
本篇的配置环境是基于HDFS HA系列实验之二:HA+JournalNode+zookeeper  上进行的。
1:原理图
HDFS HA系列实验之四:HA+Federation - mmicky - mmicky 的博客
  
 A:实验环境之组成
DNS:productserver
HA1(nameservices为cluster1):product201、product202
HA2(nameservices为cluster2):product211、product212
DN:product203、product204、product213、product214
JouralNode:product212、product213、product214
zookeeper:product202、product203、product204

B:实验环境之说明
product201、product202组成nameservices为cluster1的NN HA;
product211、product212组成nameservices为cluster2的NN HA;
product203、product204、product213、product214组成一个DataNode集群,提供HDFS存储;
product212、product213、product214组成的JournalNode集群,提供cluster1、cluster2各自active NN写入的EditLog共享目录,注意不同的nameservices要使用不同的共享目录。
product202、product203、product204组成zookeeper集群,提供cluster1、cluster2的NN HA的自动切换;

2:ssh无密码登陆配置
对本实验中的product201、product202、product203、product204、product211、product212、product213、product214进行ssh无密码登陆配置,具体做法参看 HDFS HA系列实验之经验总结  6:关于ssh免密码的操作步骤。

3:hadoop集群配置
A:修改HDFS HA系列实验之二:HA+JournalNode+zookeeper  中的配置文件hdfs-site.xml文件如下,并发放给所有节点。

<configuration><property><name>dfs.nameservices</name><value>cluster1,cluster2</value></property><!-- hadoop cluster1 --><property><name>dfs.ha.namenodes.cluster1</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.cluster1.nn1</name><value>product201:8020</value></property><property><name>dfs.namenode.rpc-address.cluster1.nn2</name><value>product202:8020</value></property><property><name>dfs.namenode.http-address.cluster1.nn1</name><value>product201:50070</value></property><property><name>dfs.namenode.http-address.cluster1.nn2</name><value>product202:50070</value></property><!-- hadoop cluster2 --><property><name>dfs.ha.namenodes.cluster2</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.cluster2.nn1</name><value>product211:8020</value></property><property><name>dfs.namenode.rpc-address.cluster2.nn2</name><value>product212:8020</value></property><property><name>dfs.namenode.http-address.cluster2.nn1</name><value>product211:50070</value></property><property><name>dfs.namenode.http-address.cluster2.nn2</name><value>product212:50070</value></property><property><name>dfs.namenode.name.dir</name><value>file:///app/hadoop/hadoop220/mydata/name</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://product212:8485;product213:8485;product214:8485/cluster1</value></property><property><name>dfs.datanode.data.dir</name><value>file:///app/hadoop/hadoop220/mydata/data</value></property><property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value></property><property> <name>ha.zookeeper.quorum</name> <value>product202:2181,product203:2181,product204:2181</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/hadoop/.ssh/id_rsa</value></property><property><name>dfs.journalnode.edits.dir</name><value>/app/hadoop/hadoop220/mydata/journal/</value></property></configuration>

B:修改HDFS HA系列实验之二:HA+JournalNode+zookeeper  中的配置文件slaves文件如下,并发放给所有节点。

product203product204product213product214

C:修改节点product211、product212的hdfs-site.xml文件下列配置,使cluster2的NN HA使用JournalNode的不同共享目录,千万不能和cluster1的存放在同一共享目录。

<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://product212:8485;product213:8485;product214:8485/cluster2</value></property>


4:hadoop Federation初次启动
启动的过程可以参看 HDFS HA系列实验之经验总结  1:Hadoop HA启动流程图。具体做法如下:
A:启动zookeeper
[hadoop@product202 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product203 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product204 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start

B:启动JournalNode
[hadoop@product212 hadoop220]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
[hadoop@product213 hadoop220]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
[hadoop@product214 hadoop220]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode

C:启动cluster1
格式化namenode并注册zookeeper锁
[hadoop@product201 hadoop220]$ bin/hdfs namenode -format -clusterid mycluster
[hadoop@product201 hadoop220]$ bin/hdfs zkfc -formatZK
启动nn1
[hadoop@product201 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
启动nn2,在nn2上同步nn1的元数据信息
[hadoop@product202 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product202 hadoop220]$ bin/hdfs namenode -bootstrapStandby
[hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode

D:启动cluster2
格式化namenode并注册zookeeper锁
[hadoop@product211 hadoop220]$ bin/hdfs namenode -format -clusterid mycluster
[hadoop@product211 hadoop220]$ bin/hdfs zkfc -formatZK
启动nn1
[hadoop@product211 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product211 hadoop220]$ sbin/hadoop-daemon.sh start namenode
启动nn2,在nn2上同步nn1的元数据信息
[hadoop@product212 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product212 hadoop220]$ bin/hdfs namenode -bootstrapStandby
[hadoop@product212 hadoop220]$ sbin/hadoop-daemon.sh start namenode

E:启动datanode
[hadoop@product201 hadoop220]$ sbin/hadoop-daemons.sh start datanode

5:hadoop Federation测试
A:在cluster1 NN上创建目录,然后查看cluster2 NN的状态

B:在cluster2 NN上创建目录,然后查看cluster1 NN的状态

C:结论
Federation中的各NN维护着各自的元数据,但他们公用了DataNode的资源。

疑问:
1:客户端如何访问某一个NN?显然,NN的切换和多个NN,造成了client访问的复杂性,如何方便的访问NN HA + Federation是一个重要的课题。具体操作请参看 HDFS HA系列实验之五:client 配置 
2:Federation提供了NN的横向扩展,那么如何增加和缩减NN,如何balance共享的datanode?具体操作请参看HDFS HA系列实验之六:Federation之增减NN和Balancer

TIPS:
相关hadoop配置文件下载(HA+JN+ZK+Federation)
0 0
原创粉丝点击