• 大数据Hadoop高可用


    HA高可靠集群

    hdfs中的HA搭建:

    1. 三个namenode如何保证数据一致?
      • fsimage: 更新频率低, 由一台进行修改,剩下的所有机器进行同步
      • edits: 更新频率高,JN日志节点(hadoop的专属zk,只做数据全局一致性保证)
    2. Secondnamenode的工作谁来负责?
      • 由standby的namenode来负责2nn的工作
    3. 怎么确定谁是active,谁是standby?
      • 每个nn创建一个zkfc(zookeeper的客户端)
      • 三个zkfc代替nn跟zk交互
      • 谁优先创建zk中的临时节点谁就是active

    故障转移机制

    1. nn1故障(节点故障或者网络丢失)
    2. nn2和nn3收到监听回执
    3. nn2或nn3的zkfc发生kill -9 杀死nn1,保证nn1不会复活
    4. 另外两台zkfc监听zk中临时节点的变化,随时准备上位
    5. 谁先抢先创建zk的临时节点,谁就是active,另外的nn继续注册监听

    搭建HDFS-HA集群

    步骤1:编辑hdfs-site.xml配置文件

    在Hadoop配置目录中,编辑hdfs-site.xml配置文件,并添加以下配置项:

    <property>
        <name>dfs.nameservicesname>
        <value>myclustervalue>
    property>
    
    <property>
    	
        <name>dfs.ha.namenodes.myclustername>
        <value>nn1,nn2value>
    property>
    
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1name>
        <value>namenode1-hostname:8020value>
    property>
    
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2name>
        <value>namenode2-hostname:8020value>
    property>
    
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1name>
        <value>namenode1-hostname:50070value>
    property>
    
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2name>
        <value>namenode2-hostname:50070value>
    property>
    
    <property>
        <name>dfs.namenode.shared.edits.dirname>
        <value>qjournal://journalnode1-hostname:8485;journalnode2-hostname:8485;journalnode3-hostname:8485/myclustervalue>
    property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • dfs.nameservices:指定HA集群的名称。
    • dfs.ha.namenodes.mycluster:指定HA集群中的NameNode节点。
    • dfs.namenode.rpc-address.mycluster.nn1 和 dfs.namenode.
    • rpc-address.mycluster.nn2:指定NameNode的RPC地址。
    • dfs.namenode.http-address.mycluster.nn1 和 dfs.namenode.
    • http-address.mycluster.nn2:指定NameNode的HTTP地址。
    • dfs.namenode.shared.edits.dir:指定JournalNode的地址,用于共享编辑日志。

    步骤2:配置ZooKeeper

    HDFS HA需要使用ZooKeeper来协调和管理HA状态。确保ZooKeeper集群已经正确配置和运行。

    步骤3:配置JournalNode

    JournalNode用于存储HDFS的编辑日志。在Hadoop配置目录中编辑hdfs-site.xml文件,并添加以下配置项:

    <property>
        <name>dfs.journalnode.edits.dirname>
        <value>/hadoop/hdfs/journalvalue>
    property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    dfs.journalnode.edits.dir:指定JournalNode存储编辑日志的目录。

    步骤4:启动JournalNode

    在JournalNode所在的节点上启动JournalNode服务。

    步骤5:格式化ZooKeeper和HA状态

    在Active NameNode节点上执行以下命令,格式化ZooKeeper和HA状态:

    hdfs zkfc -formatZK -nonInteractive
    
    • 1

    步骤6:启动NameNode和ZKFC

    在两个NameNode节点上启动NameNode服务和ZKFC服务。

    步骤7:监控和测试

    使用hdfs haadmin命令来检查HA集群的状态。
    测试故障转移:模拟Active NameNode的故障,观察是否可以成功切换到Standby NameNode。

  • 相关阅读:
    创新洞察|从2千个Scrum团队实证4大敏捷力提升组织绩效
    【Spring面试】十、SpringBoot相关
    【SQL语法基础】如何理解查询优化、通配符以及存储过程?
    Leetcode---368周赛
    OpenMV输出PWM,实现对舵机控制
    XXL-job-oracle 版本
    Java 性能优化实战高级进阶:JIT 如何影响 JVM 的性能?
    Docker-介绍及生命周期
    [附源码]java毕业设计中华美食网站
    【毕业设计】便携式STM32的红外信号分析仪 - 单片机 物联网 嵌入式
  • 原文地址:https://blog.csdn.net/qq_44273739/article/details/132845162