• hadoop-ha组态


    HADOOP HA组态

    hadoop2.x的ha组态。这份文件是在那里的描述中hdfs与yarn的ha组态。

    这份文件的假设是zk它已被安装并配置,事实上,任何安装。

    hdfs ha组态

    首先。配置core-site.xml配置文件:

    <property>

    在老版本号中使用mr1,还可能使用fs.default.name来进行配置

      <name>fs.defaultFS</name>

    此处配置的mycluster眼下还未定义。我们须要记住这个值,

    这个表示此namenodenameServiceId,hdfs-site中定义,此处进行引用

      <value>hdfs://mycluster</value>

    </property>

    接下来,配置当namenode发生切换时的检查方法。当NAMENODE切换时。

    须要检查并确保仅仅有一个active节点。

    因此会通过SHELL或SSH的方式过去强制中止或运行检查

    <property>
      <name>dfs.ha.fencing.methods</name>
    此处的可配置值sshfence/shell
      <value>sshfence</value>
    </property>
     
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/root/.ssh/id_rsa</value>
    </property>

    配置ha连接的zk的连接地址,

    <property>
      <name>ha.zookeeper.quorum</name>
      <value>one.cluster:2181,two.cluster:2181,three.cluster:2181</value>
    </property>

    还能够有例如以下几个配置:

    ha.zookeeper.session-timeout.ms,zk的session超时时间,默认是5000ms

    ha.zookeeper.parent-znode,hdfs的ha在zk上的存储路径 ,默认是/hadoop-ha

    接下来对hdfs-site.xml进行配置

    定义上面提到过的nameserviceid的值,

    <property>
      <name>dfs.nameservices</name>
    此处对当前配置的hanameserviceid进行定义,此处的mycluster中间不能使用"_"线
      <value>mycluster</value>
    </property>

    接下来定义nameserviceid中须要使用到的namenode的id,

    <property>
      <name>dfs.ha.namenodes.mycluster</name>
    此处定义了两个namenodeid,也就是须要配置两具namenode,id各自是nn1nn2
      <value>nn1,nn2</value>
    </property>

    在定义完毕须要的namenode id后。

    须要针对每个namenode,定义其相关的rpc,http地址。

    假设有启用https,还须要设置https-address

    此处的配置通过nameserviceid.namenodeid来进行配置。

    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>one.cluster:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>two.cluster:8020</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>one.cluster:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>two.cluster:50070</value>
    </property>

    接下来配置namenode edits的共享存储。在这里使用QJM来进行配置:

    qjm是一个非常轻量的进程,能够直接部署到namenode或datanode中。

    qjm的默认rpcport是8485,默认httpport是8480,

    可通过配置dfs.journalnode.rpc-address。dfs.journalnode.http-address来改动port。

    qjm必须配置为单数个(N),可以保证在(N-1)/2个正常执行时,可以正常提供服务。

    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://one.cluster:8485;two.cluster:8485;three.cluster:8485/mycluster</value>
    </property>

    配置QJM的存储路径 :

    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/data/1/dfs/jn</value>
    </property>

    设置针对此nameserviceid的client代理:

    client请求时通过nameserviceid来做请求。

    nameserviceid解析出相应的active namenode就通过此配置中的java类来完毕。

    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    接下来配置namenode的自己主动故障转换。

    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>

    把配置文件 拷贝到全部的节点中。这个不能忘呀。

    在配置有QJM的节点中启动QJM.

    进入hadooop_home/sbin文件夹

    ./hadoop-daemon.sh start journalnode

    进入hadoop_home/bin文件夹下,运行./hdfs zkfc -formatZK在zk上进行格式化

    对namenode进行format操作:

    进入hadoop_home/bin文件夹,并运行例如以下命令

    运行./hadoop namenode -format -clusteridhacluster命令。

    ./hdfs namenode-initializeSharedEdits

    接下来启动主的namenode, 进入hadooop_home/sbin文件夹,运行例如以下命令

    ./hadoop-daemon.sh start namenode

    赶往standby的namenode节点。

    进入hadoop_home/bin文件夹,运行例如以下命令:

    ./hdfs namenode -bootstrapStandby

    启动standby 的namenode,进入hadooop_home/sbin文件夹,运行例如以下命令

    ./hadoop-daemon.sh start namenode

    接下来启动各个datanode节点。

    ./hadoop-daemon.sh start datanode

    最后一步。启动zkfc,自己主动切换namenode节点的服务。

    由于此时两个namenode都是standby的状态,须要启动zkfc来实现切换。

    在主namenode与standby的namenode中进行hadoop_home/sbin文件夹。并运行例如以下命令

    ./hadoop-daemon.sh start zkfc

    the end.

    YARN RM的HA配置

    配置yarn中resourcemanager的HA仅仅有在hadoop2.3.x后才引进,

    yarn的ha配置相对简单,直接配置yarn-site.xml文件

    <property>
    rm连接失败的重试间隔
        <name>yarn.resourcemanager.connect.retry-interval.ms</name>
        <value>2000</value>
      </property>
    <property>
    是否启用ha配置。默认是false.
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
      </property>
    <property>
    启动自己主动故障转移,默觉得false
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
      </property>
    <property>
    启用一个内嵌的故障转移,与ZKRMStateStore一起使用。
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
        <value>true</value>
      </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>rm-cluster</value>
      </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
      </property>
    <property>
    配置当前的rm节点。这个地方要注意。在rm1这个机器上时,配置为rm1
    rm2这台机器上时,须要配置为rm2.它们之间通过zk来实现active操作
        <name>yarn.resourcemanager.ha.id</name>
        <value>rm1</value>
      </property>
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
      </property>
    <property>
    HA时,RMStateStore须要配置为这个值。

        <name>yarn.resourcemanager.store.class</name>
     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
      </property>
    <property>
    配置与zk的连接地址
        <name>yarn.resourcemanager.zk.state-store.address</name>
        <value>localhost:2181</value>
      </property>
    <property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>localhost:2181</value>
    </property>
    <!-- RM1 configs -->
      <property>
        <name>yarn.resourcemanager.address.rm1</name>
        <value>host1:23140</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>host1:23130</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.https.address.rm1</name>
        <value>host1:23189</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>host1:23188</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
        <value>host1:23125</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address.rm1</name>
        <value>host1:23141</value>
      </property>
    <!-- RM2 configs -->
      <property>
        <name>yarn.resourcemanager.address.rm2</name>
        <value>host2:23140</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address.rm2</name>
        <value>host2:23130</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.https.address.rm2</name>
        <value>host2:23189</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>host2:23188</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
        <value>host2:23125</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address.rm2</name>
        <value>host2:23141</value>
      </property>
     
     

    启动yarn的各节点,

    在主resourcemanager与standby的resourcemanager运行

    yarn-daemon.sh start resourcemanager

    在nodemanager运行

    yarn-daemon.sh start nodemanager

  • 相关阅读:
    linux:centOs7换源阿里云
    nginx:负载均衡实战(一)
    linux-安装jdk以及tomcat
    nginx:在linux上进行nginx的安装
    开源 免费 java CMS
    使用PHP获取汉字的拼音(全部与首字母)
    php版获取重定向后地址的代码分享
    php获取数组中重复数据的两种方法
    php删除html标签的三种解决方法
    php curl 伪造IP来源的代码分享
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4561233.html
Copyright © 2020-2023  润新知