• 攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)


    一、环境说明:

        操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
        jdk版本:java version "1.7.0_79"
        hadoop版本:Apache hadoop-2.5.2

        zookeeper:3.4.6

        本文实现hadoop分布式环境搭建,启用YARN,利用zookeeper实现HA。

    二、节点说明:

    zookeeper:node2 ode3 ode4

    namenode:node1 ode5

    journalnode:node2 ode3 ode4

    datanode:node2 ode3 ode4

    ResourceManager:node1 ode5

    三、安装前准备:

    1、实现各个节点之间的免密码登录设置。

    2、在/etc/hosts文件中对各个节点进行配置。我的配置如下:

    192.168.103.101 node1
    192.168.103.102 node2
    192.168.103.103 node3
    192.168.103.104 node4
    192.168.103.105 node5

    四、步骤说明:

    1、安装zookeeper。

    2、配置hadoop相关文件。

    3、启动hadoop系统,浏览器界面验证。

    五、安装zookeeper:

    首先在node2节点上进行以下操作。

    1、首先从官网下载,本文使用的版本为3.4.6。

    2、解压安装包,并复制到指定目录下。

    tar zxvf zookeeper-3.4.6.tar.gz 
    mv zookeeper-3.4.6/ /home/install/

    3、进入到zookeeper安装目录,修改配置文件zoo.cfg,若该文件不存在,将zoo_sample.cfg重命名为zoo.cfg:

    cd /home/install/zookeeper-3.4.6/
    vim conf/zoo.cfg

    添加或修改以下代码:

    dataDir=/opt/tem/zookeeper  #修改此处为/tmp目录以外的其他目录
    
    
    server.2=node2:2888:3888
    server.3=node3:2888:3888
    server.4=node4:2888:3888

    上面的代码定义了3台zookeeper服务器。数量必须为奇数。

    3、切换到上面定义的/opt/tem/zookeeper/目录下,提供一个叫myid的文件。

    cd /opt/tem/zookeeper/
    vim myid

    在myid文件中输入一个2,保存退出即可。

    4、上面相同的操作在node3和node4上重复进行(或者也可以将node2上的安装目录以及/opt/tem/zookeeper/拷贝到node3和node4上)

    注意将node3上的myid文件的内容修改为3,将node4上的myid文件的内容修改为4。

    5、将zookeeper安装目录/bin添加到~/.bash_profile中(可选操作,仅是为了命令行操作方便)

    export PATH=$PATH:/home/install/zookeeper-3.4.6/bin

    6、在node2 ode3 ode4上分别启动zookeeper:

    zkServer.sh start

    7、用以下命令测试一下是否正确启动:

    zkCli.sh

    效果如下图即可:

    image

    至此,zookeeper安装完毕。

    六、配置hadoop相关脚本:

    以下操作在node1上进行。

    配置内容皆参考hadoop官方网站。本文中hadoop安装目录为/home/install/hadoop-2.5.1

    1、修改hadoop-env.sh文件,添加以下内容:

    export JAVA_HOME=/usr/java/jdk1.7.0_79
    export HADOOP_PREFIX=/home/install/hadoop-2.5.1

    2、修改core-site.xml文件:

    <configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/tep/hadoop-2.5.1</value>
    </property>
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
    <property>
       <name>ha.zookeeper.quorum</name>
       <value>node2:2181,node3:2181,node4:2181</value>
     </property>
    </configuration>

    说明:

    • ha.zookeeper.quorum:指定zookeeper的3个节点访问方式。
    • fs.defaultFS:hadoop2.x中的固定写法,其中mycluster是hdfs-site.xml中配置的nameservice-id。
    • hadoop.tmp.dir:这里指定hadoop的临时文件夹,不能放在/tmp目录下。

    3、修改hdfs-site.xml文件:

    <configuration>
    <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>
    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>node1:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>node5:8020</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>node1:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>node5:50070</value>
    </property>
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://node2:8485;node3:8485;node4: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>/root/.ssh/id_dsa</value>
    </property>
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/opt/tem/journalnode</value>
    </property>
    <property>
       <name>dfs.ha.automatic-failover.enabled</name>
       <value>true</value>
     </property>
    </configuration>

    4、修改yarn-site.xml中的内容:

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    <property>
       <name>yarn.resourcemanager.ha.enabled</name>
       <value>true</value>
     </property>
     <property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>cluster1</value>
     </property>
     <property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2</value>
     </property>
     <property>
       <name>yarn.resourcemanager.hostname.rm1</name>
       <value>node1</value>
     </property>
     <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>node5</value>
     </property>
     <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>node2:2181,node3:2181,node4:2181</value>
     </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    </configuration>

    5、修改mapred-site.xml文件:

    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

    6、保证conf目录下不要有masters文件。

    7、修改slaves文件:

    node2
    node3
    node4

    8、将$HADOOP_HOME/etc/hadoop/下的配置文件分别拷贝到node2 ode3 ode4 ode5节点上。

    scp etc/hadoop/* root@node2:/home/install/hadoop-2.5.1/etc/hadoop/
    scp etc/hadoop/* root@node3:/home/install/hadoop-2.5.1/etc/hadoop/
    scp etc/hadoop/* root@node4:/home/install/hadoop-2.5.1/etc/hadoop/
    scp etc/hadoop/* root@node5:/home/install/hadoop-2.5.1/etc/hadoop/

    9、执行下述命令:

    hdfs zkfc -formatZK

    其作用是在zookeeper中创建一个属于当前集群的目录:

    image

    10、启动zk:

    hadoop-daemon.sh start zkfc

    11、启动hdfs:

    start-dfs.sh

    9、在node1上启动yarn:

    start-yarn.sh

    10、在node5上执行下述命令:

    yarn-daemon.sh start resourcemanager

    11、浏览器中查看界面:http://node1:8088

    image

  • 相关阅读:
    资源列表
    资源列表
    编程语言资源列表
    PyTorch简介
    Keras构建回归神经网络
    Keras简介
    Tensorflow之RNN,LSTM
    Tensorflow之CNN
    Tensorflow之dropout
    Tensorflow做分类
  • 原文地址:https://www.cnblogs.com/tq03/p/5100031.html
Copyright © 2020-2023  润新知