zoukankan      html  css  js  c++  java
  • hadoop2.5.0 HA高可用配置

    hadoop2.5.0 HA配置

    1.修改hadoop中的配置文件

    进入/usr/local/src/hadoop-2.5.0-cdh5.3.6/etc/hadoop目录,修改hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml ,yarn-site.xml,yarn-env.sh,slaves等文件

    1.1 core-site.xml文件

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <!--mycluster:配置多个nn,需要为集群取名-->
            <value>hdfs://mycluster</value>
        </property>
    
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/src/hadoop-2.5.0-cdh5.3.6/data</value>
        </property>
    
        <!-- 指定zookeeper地址 -->
        <property>
            <name>ha.zookeeper.quorum</name>
            <value>master:2181,slave1:2181,slave2:2181</value>
        </property>
    </configuration>
    

    1.2 hadoop-env.sh文件

    export JAVA_HOME=/usr/local/src/jdk1.8.0_121

    1.3 hdfs-site.xml文件

    <configuration>
        <!-- 指定数据冗余份数 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    
        <!-- 完全分布式集群名称 -->
        <property>
            <name>dfs.nameservices</name>
            <!--mycluster:该名称与core-site.xml文件中的名称一致-->
            <value>mycluster</value>
        </property>
    
        <!-- 集群中NameNode节点都有哪些 -->
        <property>
            <name>dfs.ha.namenodes.mycluster</name>
            <value>nn1,nn2</value>
        </property>
    
        <!-- nn1的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn1</name>
            <value>master:8020</value>
        </property>
    
        <!-- nn2的RPC通信地址 -->
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn2</name>
            <value>slave1:8020</value>
        </property>
    
        <!-- nn1的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.mycluster.nn1</name>
            <value>master:50070</value>
        </property>
    
        <!-- nn2的http通信地址 -->
        <property>
            <name>dfs.namenode.http-address.mycluster.nn2</name>
            <value>slave1:50070</value>
        </property>
    
        <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
        </property>
    
        <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>shell(/bin/true)</value>
        </property>
    
        <!-- 使用隔离机制时需要ssh无秘钥登录-->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/root/.ssh/id_rsa</value>
        </property>
    
        <!-- 声明journalnode服务器存储目录-->
        <property>
            <name>dfs.journalnode.edits.dir</name>
            <value>/usr/local/src/hadoop-2.5.0-cdh5.3.6/data/jn</value>
        </property>
    
        <!-- 关闭权限检查-->
        <property>
            <name>dfs.permissions.enable</name>
            <value>false</value>
        </property>
    
        <!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
        <property>
            <name>dfs.client.failover.proxy.provider.mycluster</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
    
        <!--自动故障转移-->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>
    </configuration>
    

    注意:

    <property>
        <name>dfs.ha.fencing.methods</name>
        <!--
            value默认为:sshfence,
            要实现nn主备切换,将其设置为:shell(/bin/true)
        -->
        <value>shell(/bin/true)</value>
    </property>
    

    1.4 mapred-site.xml文件

    <configuration>
        <!-- 通知框架MR使用YARN -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    1.5 mapred-env.sh文件

    export JAVA_HOME=/usr/local/src/jdk1.8.0_121

    1.6 yarn-site.xml文件

    <configuration>
    
        <!-- Site specific YARN configuration properties -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
    
        <!--任务历史服务-->
        <property>
            <name>yarn.log.server.url</name>
            <value>http://master:19888/jobhistory/logs/</value>
        </property>
    
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>86400</value>
        </property>
    
        <!--启用resourcemanager ha-->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>
    
        <!--声明两台resourcemanager的地址-->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>cluster-yarn1</value>
        </property>
    
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>
    
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>slave1</value>
        </property>
    
        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>slave2</value>
        </property>
    
        <!--指定zookeeper集群的地址-->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>master:2181,slave1:2181,slave2:2181</value>
        </property>
    
        <!--启用自动恢复-->
        <property>
            <name>yarn.resourcemanager.recovery.enabled</name>
            <value>true</value>
        </property>
    
        <!--指定resourcemanager的状态信息存储在zookeeper集群-->
        <property>
            <name>yarn.resourcemanager.store.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
        </property>
    </configuration>
    

    1.7 yarn-env.sh文件

    export JAVA_HOME=/usr/local/src/jdk1.8.0_121

    1.8 slaves文件

    • master
    • slave1
    • slave2

    2.启动HA集群(单点手动启动)

    2.1 在各个JournalNode节点上,输入以下命令启动journalnode服务

    $ sbin/hadoop-daemon.sh start journalnode

    2.2 在[nn1]上,对其进行格式化,并启动

    $ bin/hdfs namenode -format

    $ sbin/hadoop-daemon.sh start namenode

    2.3 手动把nn1设置为active

    $ bin/hdfs haadmin -transitionToActive nn1

    注:以上的配置已经提前配置了zk的自动选择哪台nn作为active,该命令不生效

    2.4 查看服务状态

    $ bin/hdfs haadmin -getServiceState nn1

    2.5 启动HA集群(一次性启动)

    $ hdfs zkfc -formatZK

    zk启动之后z执行以上命令,在zk节点上创建znode(不然启动hadoop时,配置的两台namenode都为standby状态)

    $ sbin/start-dfs.sh

    jps查看进程,看是否有DFSZKFailoverController进程出现,该进程表示nn1,nn2受到zk调度管理,出现故障是可以自动切换节点由待命变为激活,完成高可用

    2.6 启动yarn机制

    • 在slave1中启停yarn

      启动命令:$ sbin/start-yarn.sh

      停止命令:$ sbin/stop-yarn.sh

    • 在slave2中单独启停yarn

      启动命令:$ sbin/yarn-daemon.sh start resourcemanager

      停止命令:$ sbin/yarn-daemon.sh stop resourcemanager

    • 查看服务状态

      命令:$ bin/yarn rmadmin -getServiceState rm1

  • 相关阅读:
    ELK日志分析系统
    amoeba_mysql 读写分离
    while for if ---语句和编写计划任务
    Shell awk文本处理,shell脚本编写
    shell---正则表达式和文本处理器
    linux---网络相关配置,ssh服务,bash命令及优先级,元字符
    linux---nginx服务nfs服务nginx反向代理三台web
    linux---进程,(rpm,yum)软件包
    linux---tar命令,vim编辑器,磁盘分区,挂载,链接
    linux命令权限
  • 原文地址:https://www.cnblogs.com/screen/p/8999089.html
Copyright © 2011-2022 走看看