IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]HDFS HA系列实验之四:HA+Federation

    book_mmicky发表于 2014-05-13 15:23:00
    love 0
    本篇的配置环境是基于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文件如下,并发放给所有节点。

    product203 product204 product213 product214

    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)


沪ICP备19023445号-2号
友情链接