• 新闻实时分析系统-Hadoop2.X HA架构与部署


    1.HDFS-HA架构原理介绍

    hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法实现的HDFS HA方案,它给出了一种较好的解决思路和方案,示意图如下:

     

    1)基本原理就是用2N+1台 JN 存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。当然这个算法所能容忍的是最多有N台机器挂掉,如果多于N台挂掉,这个算法就失效了。这个原理是基于Paxos算法

    2)在HA架构里面SecondaryNameNode这个冷备角色已经不存在了,为了保持standby NN时时的与主Active NN的元数据保持一致,他们之间交互通过一系列守护的轻量级进程JournalNode

    3)任何修改操作在 Active NN上执行时,JN进程同时也会记录修改log到至少半数以上的JN中,这时 Standby NN 监测到JN 里面的同步log发生变化了会读取 JN 里面的修改log,然后同步到自己的的目录镜像树里面,如下图:

     

    当发生故障时,Active的 NN 挂掉后,Standby NN 会在它成为Active NN 前,读取所有的JN里面的修改日志,这样就能高可靠的保证与挂掉的NN的目录镜像树一致,然后无缝的接替它的职责,维护来自客户端请求,从而达到一个高可用的目的。

    2.HDFS-HA 详细配置

    1)修改hdfs-site.xml配置文件

    vi hdfs-site.xml

    <configuration>

            <property>

                    <name>dfs.replication</name>

                    <value>3</value>

            </property>

            <property>

                    <name>dfs.permissions</name>

                    <value>false</value>

            </property>

            <property>

                    <name>dfs.permissions.enabled</name>

                    <value>false</value>

            </property>

            <property>

                    <name>dfs.nameservices</name>

                    <value>ns</value>

            </property>

            <property>

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

                    <value>nn1,nn2</value>

            </property>

            <property>

                    <name>dfs.namenode.rpc-address.ns.nn1</name>

                    <value>bigdata-pro01.kfk.com:8020</value>

            </property>

                   <property>

                    <name>dfs.namenode.rpc-address.ns.nn2</name>

                    <value>bigdata-pro02.kfk.com:8020</value>

            </property>

            <property>

                    <name>dfs.namenode.http-address.ns.nn1</name>

                    <value>bigdata-pro01.kfk.com:50070</value>

            </property>

           

            <property>

                    <name>dfs.namenode.http-address.ns.nn2</name>

                    <value>bigdata-pro02.kfk.com:50070</value>

            </property>

           

            <property>

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

                    <value>qjournal://bigdata-pro01.kfk.com:8485;bigdata-pro02.kfk.com:8485;bigdata-pro03.kfk.com:8485/ns</value>

            </property>

                   <property>

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

                    <value>/opt/modules/hadoop-2.5.0/data/jn</value>

            </property>

                   <property>

                    <name>dfs.client.failover.proxy.provider.ns</name>

                    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

            </property>

                   <property>

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

                    <value>true</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/kfk/.ssh/id_rsa</value>

            </property>

    </configuration>

    2)修改core-site.xml配置文件

            <configuration>

            <property>

                   <name>fs.defaultFS</name>

                   <value>hdfs://ns</value>

            </property>

            <property>

                   <name>hadoop.http.staticuser.user</name>

                   <value>kfk</value>

            </property>

            <property>

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

                   <value>/opt/modules/hadoop-2.5.0/data/tmp</value>

            </property>

            <property>

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

                   <value>file://${hadoop.tmp.dir}/dfs/name</value>

            </property>

            <property>

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

            <value>bigdata-pro01.kfk.com:2181,bigdata-pro02.kfk.com:2181,

                           bigdata-pro03.kfk.com:2181</value>

            </property>

    </configuration>

    3)将修改的配置分发到其他节点

    scp hdfs-site.xml bigdata-pro02.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp hdfs-site.xml bigdata-pro03.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp core-site.xml bigdata-pro02.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp core-site.xml bigdata-pro03.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    3.HDFS-HA 服务启动及自动故障转移测试

    1)启动所有节点上面的Zookeeper进程

    zkServer.sh start

    2)启动所有节点上面的journalnode进程

    sbin/hadoop-daemon.sh start journalnode

    3)在[nn1]上,对namenode进行格式化,并启动

    #namenode 格式化

    bin/hdfs namenode -format

    #格式化高可用

    bin/hdfs zkfc -formatZK

    #启动namenode

    bin/hdfs namenode

    4)在[nn2]上,同步nn1元数据信息

    bin/hdfs namenode -bootstrapStandby

    5)nn2同步完数据后,在nn1上,按下ctrl+c来结束namenode进程。然后关闭所有节点上面的journalnode进程

    sbin/hadoop-daemon.sh stop journalnode

    6)一键启动hdfs所有相关进程

    sbin/start-dfs.sh

    hdfs启动之后,kill其中Active状态的namenode,检查另外一个NameNode是否会自动切换为Active状态。同时通过命令上传文件至hdfs,检查hdfs是否可用。

    4.YARN-HA架构原理及介绍

     

    ResourceManager HA 由一对Active,Standby结点构成,通过RMStateStore存储内部数据和主要应用的数据及标记。目前支持的可替代的RMStateStore实现有:基于内存的MemoryRMStateStore,基于文件系统的FileSystemRMStateStore,及基于zookeeper的ZKRMStateStore。 ResourceManager HA的架构模式同NameNode HA的架构模式基本一致,数据共享由RMStateStore,而ZKFC成为 ResourceManager进程的一个服务,非独立存在。

    5.YARN-HA详细配置

    1)修改mapred-site.xml配置文件

    <configuration>

            <property>

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

                   <value>yarn</value>

            </property>

    </configuration>

    2)修改yarn-site.xml配置文件

    <configuration>

            <property>

                   <name>yarn.resourcemanager.cluster-id</name>

                   <value>rs</value>

            </property>

            <property>

                   <name>yarn.resourcemanager.ha.rm-ids</name>

                   <value>rm1,rm2</value>

            </property>

            <property>

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

                   <value>bigdata-pro01.kfk.com</value>

            </property>

            <property>

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

                   <value>bigdata-pro02.kfk.com</value>

            </property>

            <property>

                   <name>yarn.resourcemanager.zk.state-store.address</name>

                   <value>bigdata-pro01.kfk.com:2181,bigdata-pro02.kfk.com:2181,

                                   bigdata-pro03.kfk.com:2181</value>

            </property>

            <property>

                   <name>yarn.resourcemanager.zk-address</name>

                   <value>bigdata-pro01.kfk.com:2181,bigdata-pro02.kfk.com:2181,

                                   bigdata-pro03.kfk.com:2181</value>

            </property>

            <property>

                   <name>yarn.resourcemanager.recovery.enabled</name>

                   <value>true</value>

            </property>

            <property>

                   <name>yarn.resourcemanager.ha.enabled</name>

                   <value>true</value>

            </property>

            <property>

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

                   <value>mapreduce_shuffle</value>

            </property>

            <property>

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

                   <value>org.apache.hadoop.mapred.ShuffleHandler</value>

            </property>

    </configuration>

    3)将修改的配置分发到其他节点

    scp yarn-site.xml bigdata-pro02.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp yarn-site.xml bigdata-pro03.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp mapred-site.xml bigdata-pro02.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    scp mapred-site.xml bigdata-pro03.kfk.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

    6.YARN-HA服务启动及自动故障转移测试

    1)在rm1节点上启动yarn服务

    sbin/start-yarn.sh    

    2)在rm2节点上启动ResourceManager服务

    sbin/yarn-daemon.sh start resourcemanager

    3)查看yarn的web界面

    http://bigdata-pro01.kfk.com:8088

    http://bigdata-pro02.kfk.com:8088

    4)查看ResourceManager主备节点状态

    #bigdata-pro01.kfk.com节点上执行

    bin/yarn rmadmin -getServiceState rm1

    #bigdata-pro02.kfk.com节点上执行

    bin/yarn rmadmin -getServiceState rm2

    5)hadoop集群测试WordCount运行

    bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/kfk/data/wc.input 

  • 相关阅读:
    EasyUI-datagrid中load,reload,loadData方法的区别
    CAD ObjectARX扩展工具的源码(二)
    CAD ObjectARX扩展工具的源码(一)
    ObjectARX常用类和函数
    acdb类杂记
    ARX错误1 LINK : fatal error LNK1104: 无法打开文件“D:win10Desktop123x64Debugxxx.arx”
    关键功能函数是 (VLAX-Add-Cmd)。
    ObjectARX_2020函数收集
    得到ARX程序当前的路径
    objectarx向量的用法2
  • 原文地址:https://www.cnblogs.com/misliu/p/10926058.html
Copyright © 2020-2023  润新知