• hadoop-hdfs-ha配置-搭建


    官方配置原文:

     http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

     

     

     

     

    zookeeper搭建:

    node02下:

     

    配置zk环境变量:

     

     ZK配置文件:

     

     修改为:

     

     

     分发zk:分发给 node03 和 node04 

     

     然后存放各自的id 和 配置zk环境变量:

     node03:

     

    node04:

     开启ZK服务:

    node02:

     

    node03:

    node04:

     

     hadoop-HA-搭建:

     配置 hdfs-site.xml 文件:

     

     之前配置过的完全分布式的配置文件进行修改

     后面追加的内容:

    #dfs.nameservices   命名空间的逻辑名称
    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>
    
    
    #dfs.ha.namenodes.[nameservice ID]   所有NameNode标示名称
    <property>
      <name>dfs.ha.namenodes.mycluster</name>
      <value>nn1,nn2</value>
    </property>
    
    
    #dfs.namenode.rpc-address.[nameservice ID].[name node ID]   每个namenode监听的RPC地址
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn1</name>
      <value>node01:8020</value>
    </property>
    
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>node02:8020</value>
    </property>
    
    #dfs.namenode.http-address.[nameservice ID].[name node ID]   每个namenode监听的http地址。
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>node01:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>node02:50070</value>
    </property>
    
    
    
    
    #journalnode配置信息
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://node01:8485;node2:8485;node3:8485/mycluster</value>
    </property>
    
    #journalnode持久化数据目录
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/var/sxt/hadoop/ha/jn</value>
    </property>
    
    
    #这里配置HDFS客户端连接到Active NameNode的一个java类
    
    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>




    #dfs.ha.fencing.methods 配置active namenode出错时的处理类。当active namenode出错时,一般需要关闭该进程。处理方式可以是ssh也可以是shell

    <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>

    #在namenode身边启动ZKFC 开启自动故障转移
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
     



    配置 core-site.xml 文件:

     

    #fs.defaultFS 客户端连接HDFS时,默认的路径前缀。如果前面配置了nameservice ID的值是mycluster,那么这里可以配置为授权信息的一部分
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>

    #hadoop.tmp.dir

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/var/sxt/hadoop/ha</value>
    </property>



    #ha.zookeeper.quorum 标记三台zookeeper地址
    <property>
      <name>ha.zookeeper.quorum</name>
      <value>node02:2181,node03:2181,node04:2181</value>
    </property>

     

    分发修改好的文件:

     

    给node01 和 node02 做免秘钥:

    node01 -> node01 的免秘钥

    node01 -> node02 的免秘钥

    node02 -> node02 的免秘钥

    node02 -> node01 的免秘钥

    由于之前完全分布式node01已经和自己还有node02 做过免秘钥现在只需要做

    node02 -> node02 的免秘钥

    node02 -> node01 的免秘钥

    实现方式和

    node01 -> node01 的免秘钥

    node01 -> node02 的免秘钥 一样

    node02 下:

    node01 下:

     

     必须优先启动 journalnode:

     启动node01 node02 node03 的 journalnode

     

     

     

     

     

     格式化namenode:

     

    我这边出现了报错信息:显示无法构建journal  后面两台服务器地址写错了

     

     

     启动namenode:

     

     

    格式化ZKFC:

     

     

    node04 下:

     

     

     

    启动服务:

    node01:

    node02:

     node03:

     

     node04:

     zoo

     

     node01:50070

     node02:50070

     

    演示:

    杀死node01:

     

     杀死node02 的 ZKFC:

    停止服务:

     node01:stop-dfs.sh

     

      node02:zkServer.sh stop

     node03:zkServer.sh stop

     

     node04:zkServer.sh stop

     

    再次启动:

    node02、node03、node04:

    zkServer.sh start

    node01:

    hadoop-daemon.sh  start namenode

    node02:

    hdfs namenode -bootstrapStandby

    node01:

    start-dfs.sh

    手动启动historyserver。

    启动命令:mr-jobhistory-daemon.sh start historyserver

    关闭命令:mr-jobhistory-daemon.sh stop historyserver

  • 相关阅读:
    C#扩展方法(转)
    设计模式与足球(一)创建型模式
    java设计模式之适配器模式
    java设计模式之建造者模式
    java设计模式之原型模式
    java设计模式之单例模式
    java之设计模式工厂三兄弟之抽象工厂模式
    java之设计模式工厂三兄弟之工厂方法模式
    创建对象与使用对象——谈谈工厂的作用
    java之设计模式工厂三兄弟之简单工厂模式
  • 原文地址:https://www.cnblogs.com/LXL616/p/10859711.html
Copyright © 2020-2023  润新知