zoukankan      html  css  js  c++  java
  • hadoop2 环境的搭建(自动HA)

    zookeeper:hadoop112、hadoop113、hadoop114

    namenode:hadoop110和hadoop111

    datanode:hadoop112、hadoop113、hadoop114

    journalnode:hadoop110、hadoop111、hadoop112

    resourcemanager:hadoop110

    nodemanager:hadoop112、hadoop113、hadoop114

    1、搭建zk集群,并启动

    1.1、搭建zookeeper

    1.1.1、在hadoop112上解压缩,重命名为zookeeper,把conf/zoo_sample.cfg重命名为zoo.cfg

    1.1.2、修改文件conf/zoo.cfg

    dataDir=/usr/zookeeper/data

    增加以下内容

    server.112=hadoop112:2888:3888

    server.113=hadoop113:2888:3888

    server.114=hadoop114:2888:3888

    1.1.3、创建目录mkdir zookeeper/data

    1.1.4、写入节点id:echo 112 > zookeeper/data/myid

    1.1.5、复制zookeeper文件夹到hadoop113和hadoop114上

    scp /usr/zookeeper/ hadoop113:/usr/

    scp /usr/zookeeper/ hadoop114:/usr/

    在hadoop113上执行 echo 113 > zookeeper/data/myid

    在hadoop114上执行 echo 114 > zookeeper/data/myid

    1.2、启动

    在hadoop112、hadoop113、hadoop114上分别执行:

    bin/zkServer.sh start
    

      

    1.3、验证

    执行命令:

    bin/zkCli.sh
    

      

    进入后执行ls /

    2、配置文件(hadoop-env.sh、core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml)

    2.1、hadoop-env.sh

    export JAVA_HOME=/usr/jdk

    上面是我本机的路径,需要改成真实的jdk路径

    export JAVA_HOME=JDK的路径

    2.2、core-site.xml

    <configuration>
    
    <property>
    
    <name>fs.defaultFS</name>
    
    <value>hdfs://cluster1</value>
    
    </property>
    
    <!-- 设置默认的HDFS路径,有多个HDFS集群同时工作时,默认值在这里指定 -->
    
    <property>
    
    <name>hadoop.tmp.dir</name>
    
    <value>/usr/hadoop/tmp</value>
    
    </property>
    
    <!-- 设置NameNode DataNode JournalNode等存放数据的公共目录,也可以单独指定 -->

    <property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop112:2181,hadoop113:2181,hadoop114:2181</value>
    </property>
    <!-- 指定zookeeper集群 -->
    </configuration>

    2.3、hdfs-site.xml

    <configuration>
    
    <property>
    
    <name>dfs.replication</name>
    
    <value>2</value>
    
    </property>
    
    <!-- 集群中文件的副本数 -->
    
    <property>
    
    <name>dfs.nameservices</name>
    
    <value>cluster1</value>
    
    </property>
    
    <!-- 使用federation时,这里填写所有集群的别名,用逗号分隔 -->
    
    <property>
    
    <name>dfs.ha.namenodes.cluster1</name>
    
    <value>hadoop110,hadoop111</value>
    
    </property>
    
    <!-- 配置集群的NameNode几点,这里是NameNode 的别名,需要对每个NameNode再进行详细的配置-->
    
    <property>
    
    <name>dfs.namenode.rpc-address.cluster1.hadoop110</name>
    
    <value>hadoop110:9000</value>
    
    </property>
    
    <!-- 配置NameNode的RPC地址 -->
    
    <property>
    
    <name>dfs.namenode.http-address.cluster1.hadoop110</name>
    
    <value>hadoop110:50070</value>
    
    </property>
    
    <!-- 配置NameNode的HTTP地址 -->
    
    <property>
    
    <name>dfs.namenode.rpc-address.cluster1.hadoop111</name>
    
    <value>hadoop111:9000</value>
    
    </property>
    
    
    
    <property>
    
    <name>dfs.namenode.http-address.cluster1.hadoop111</name>
    
    <value>hadoop111:50070</value>
    
    </property>
    
    
    
    <property>
    
    <name>dfs.namenode.shared.edits.dir</name>
    
    <value>qjournal://hadoop110:8485;hadoop111:8485;hadoop112:8485/cluster1</value>
    
    </property>
    
    <!-- 指定集群(cluster1)的两个NameNode共享edits文件目录时使用的JournalNode集群信息 -->
    
    <property>
    
    <name>dfs.ha.automatic-failover.enabled.cluster1</name>
    <value>true</value>
    </property>
    <!-- 指定集群(cluster1)是否启动自动故障恢复,即当NameNode出故障事,是否自动切换到另一台NameNode -->
    
    <property>
    <name>dfs.client.failover.proxy.provider.cluster1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 指定集群(cluster1)出故障时,哪个实现类负责执行故障切换 -->
    
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/hadoop/tmp/journal</value>
    </property>
    <!-- 指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径 -->
    
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
    </property>
    
    <!-- 一旦需要NameNode切换,使用ssh方式进行切换 -->
    
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
    </property>
    
    </configuration>

    2.4、yarn-site.xml

    <configuration>
    
    <property>
    
    <name>yarn.resourcemanager.hostname</name>
    
    <value>hadoop110</value>
    
    </property>
    
    <property>
    
    <name>yarn.nodemanager.aux-services</name>
    
    <value>mapreduce_shuffle</value>
    
    </property>
    
    </configuration>

    2.5、mapred-site.xml

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

    2.6、slaves

    hadoop112
    
    hadoop113
    
    hadoop114

    2.7、同步修改的配置文件

    3、格式化zookeeper集群

    在hadoop110上执行

    hadoop/bin/hdfs zkfc -formatZK
    

      

    4、启动journalnode集群

    在hadoop110、hadoop111、hadoop112上分别执行:

    sbin/hadoop-daemon.sh start journalnode

     扩展

    停止journalnode

    sbin/hadoop-daemon.sh stop journalnode
    

      

    5、格式化namenode、启动namenode

    在hadoop110或者hadoop111上执行:

    bin/hdfs namenode -format
    
    sbin/hadoop-daemon.sh start namenode

    在hadoop111上执行

    bin/hdfs namenode -bootstrapStandby
    sbin/hadoop-daemon.sh start namenode

    *hadoop111的格式化,操作是关键是是把hadoop110上面的tmp/dfs下的fsimage和edit拷贝过去 

    6、启动datanode

    sbin/hadoop-daemons.sh start datanode
    

    7、启动ZKFC

    在NameNode节点上执行(hadoop110或hadoop111)执行:

    hadoop/sbin/hadoop-daemon.sh start zkfc
    

      

    8、启动resourcemanager和nodemanager

    在hadoop110或者hadoop111上执行

    sbin/yarn-daemon.sh start resourcemanager
    
    sbin/yarn-daemons.sh start nodemanager


    或者
    sbin/start-yarn.sh start resourcemanager

      

     总结:

    自动切换比手动切换多的操作:

    1、在core-site.xml配置zookeeper集群,在hdfs-site.xml中设置允许自动切换

    2、操作上,格式化zookeeper,执行命令bin/hdfs zkfc -formatZK, 启动zk,执行命令sbin/hadoop-daemon.sh start zkfc

  • 相关阅读:
    Mybatis批量插入
    easyui中datagrid常见功能
    mysql下载和安装方式
    Mybatis注意事项
    ol3对地图上某些特定的经纬度进行标注
    ol3开发离线地图
    java利用poi生成excel文件后下载本地
    log4j的基本使用方法
    tomcat8.5之后版本,远程无法登录管理页面
    但构造函数返回对象时
  • 原文地址:https://www.cnblogs.com/hpuCode/p/5202201.html
Copyright © 2011-2022 走看看