zoukankan      html  css  js  c++  java
  • 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相关的内容

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/easycloud/p/3724908.html
Copyright © 2011-2022 走看看