• Hadoop2的HA安装(high availability):JournalNode+ zookeeper


    前面介绍过使用NFS+zookeeper来解决namenode单点失败问题,因为NFS可能也会存在单点问题,所以hadoop提供了一种叫做JournalNode技术,这项技术可以在JournalNode节点间共享数据

    我们来介绍这一种技术:JournalNode+ zookeeper

    Hadoop 版本:2.2.0

    OS 版本: Centos6.4

    Jdk 版本: jdk1.6.0_32

    环境配置

    机器名

    Ip地址

    功能

    Hadoop1

    192.168.124.135

    NameNode, DataNode,

    ResourceManager, NodeManager

    Zookeeper

    Zkfc

    JournalNode

    Hadoop2

    192.168.124.136

    NameNode

    DataNode, NodeManager

    Zookeeper

    Zkfc

    JournalNode

    Hadoop3

    192.168.124.137

    DataNode, NodeManager

    Zookeeper

    Zkfc

    JournalNode

    在这里就不介绍安装zookeeper,直接使用前面nfs+zookeeper安装好的zookeeper

    JournalNode也不需要安装,通过配置就可以。

    直接配置hadooper

    vi etc/hadoop/hadoop-env.sh 修改jdk位置
    export JAVA_HOME=/home/hadoop/jdk1.6.0_32

    vi etc/hadoop/mapred-env.sh修改jdk位置

    export JAVA_HOME=/home/hadoop/jdk1.6.0_32

    vi etc/hadoop/yarn-env.sh修改jdk位置

    export JAVA_HOME=/home/hadoop/jdk1.6.0_32

    vi etc/hadoop/core-site.xml

    <configuration>

        <property>

            <name>hadoop.tmp.dir</name>

            <value>/home/hadoop/repo3/tmp</value>

            <description>A base for other temporary directories.</description>

        </property>

        <property>

            <name>fs.defaultFS</name>

            <value>hdfs://mycluster</value>

        </property>

        <property>

            <name>dfs.journalnode.edits.dir</name>

            <value>/home/hadoop/repo3/journal</value>

        </property>

        <property>

            <name>ha.zookeeper.quorum</name>

            <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>

        </property>

    </configuration>

    vi etc/hadoop/hdfs-site.xml

    <configuration>

        <property>

            <name>dfs.replication</name>

            <value>2</value>

        </property>

        <property>

            <name>dfs.namenode.name.dir</name>

            <value>/home/hadoop/repo3/name</value>

        </property>

        <property>

            <name>dfs.datanode.data.dir</name>

            <value>/home/hadoop/repo3/data</value>

        </property>

            <property>

            <name>dfs.nameservices</name>

            <value>mycluster</value>

        </property>

            <property>

            <name>dfs.ha.namenodes.mycluster</name>

            <value>hadoop1,hadoop2</value>

        </property>

            <property>

            <name>dfs.namenode.rpc-address.mycluster.hadoop1</name>

            <value>hadoop1:9000</value>

        </property>

            <property>

            <name>dfs.namenode.http-address.mycluster.hadoop1</name>

            <value>hadoop1:50070</value>

        </property>

            <property>

            <name>dfs.namenode.rpc-address.mycluster.hadoop2</name>

            <value>hadoop2:9000</value>

        </property>

            <property>

            <name>dfs.namenode.http-address.mycluster.hadoop2</name>

            <value>hadoop2:50070</value>

        </property>

        <property>

          <name>dfs.namenode.shared.edits.dir</name>

          <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value>

        </property>

        <property>

            <name>dfs.client.failover.proxy.provider.mycluster</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/hadoop/.ssh/id_rsa</value>

        </property>

            <property>

            <name>dfs.ha.automatic-failover.enabled</name>

            <value>true</value>

        </property>

    </configuration>

    vi etc/hadoop/yarn-site.xml

    <configuration>

        <property>

            <description>the valid service name</description>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

        </property>

        <property>

            <description>The hostname of the RM.</description>

            <name>yarn.resourcemanager.hostname</name>

            <value>hadoop1</value>

        </property>

    </configuration>

    vi etc/hadoop/mapred-site.xml

    <configuration>

        <property>

            <name>mapreduce.framework.name</name>

            <value>yarn</value>

        </property>

    </configuration>

    vi etc/hadoop/slaves

    hadoop1

    hadoop2

    hadoop3

    运行hadoop

    启动zookeeper,在hadoop1 ,hadoop2, hadoop3上运行

    cd /home/hadoop/zookeeper-3.4.5/bin

    ./zkServer.sh  start

    格式化namenode和failovercontroler

    failovercontroler也需要格式化: bin/hdfs zkfc -formatZK

    在hadoop1节点上运行: bin/hdfs namenode -format -clusterid mycluster

    在hadoop2节点上的namenode信息需要与hadoop1节点同步,不能通过简单的格式化做到,hadoop2节点上的namenode需要向hadoop1的namenode发送数据请求。因此我们还需要启动hadoop1上的namenode.

      在hadoop1上运行: bin/hdfs namenode

      在hadoop3上运行:bin/hdfs namenode  -bootstrapStandby

    最后关闭hadoop1上的namenode,然后启动整个hadoop集群。

    启动hadoop集群

    cd /home/hadoop/hadoop-2.2.0

    sbin/start-all.sh

    从图上可以看出,先启动namenode,再启动datanode, 再启动journalnode, 再启动ZK failover controller, 再启动resourcemanger, 最后启动nodemanager。

    使用jps查看启动的进程

    在hadoop1上运行jps

    在hadoop2上运行jps

    在hadoop3上运行jps

    查看namenode的状态

      bin/hdfs haadmin -getServiceState hadoop1

      bin/hdfs haadmin -getServiceState hadoop2

    从图上可以看出hadoop2上的namenode处于active状态,而hadoop1上的namenode处于standby状态

    这些信息也可以通过Hadoop的web界面得到。

    在浏览器里输入:http://hadoop1:50070

    在浏览器里输入:http://hadoop2:50070

    这里就不介绍failover后,有兴趣的可以看看nfs+zookeeper相关的内容

  • 相关阅读:
    堆(优先队列)模板
    线段树(递归)模板
    快速幂(含二阶方阵类)模板
    ACM/CF赛制getstart模板
    [Andrew Stankevich's Contest#21] Lempel-Ziv Compression
    [NOIP2001]Car的旅行路线
    [NOIP2007] 矩阵取数游戏
    [NOIP2010] 关押罪犯
    [NOIP1999] 拦截导弹
    设计模式之第1章-工厂方法模式(Java实现)
  • 原文地址:https://www.cnblogs.com/easycloud/p/3724908.html
Copyright © 2020-2023  润新知