首页 > 其他分享 >Apache Hadoop开启HA

Apache Hadoop开启HA

时间:2023-09-25 11:07:28浏览次数:37  
标签:hdfs Hadoop dfs hadoop host Apache namenode HA mycluster

一、修改配置文件

hdfs-site.xml

<configuration>
    <!--NameNode元数据存储目录-->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>"{{ data_dir }}/hadoop/hdfs/namenode"</value>
      <final>true</final>
    </property>

    <!--DataNode数据存储目录-->
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>"{{ data_dir }}/hadoop/hdfs/data"</value>
      <final>true</final>
    </property>

    <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>{{ host.host2 }}:50090</value>
    </property>

    <!-- 配置namenode的web界面-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>{{ host.host1 }}:50070</value>
    </property>

    <!-- 配置副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <!-- ###############下面为开启HA配置############### -->
    
    <!-- HDFS逻辑名称 -->
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>

    <!-- 使用逗号分隔的名称节点 ID 列表进行配置。数据节点将使用它来确定集群中的所有名称节点。 -->
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>

    <!-- 设置名称节点进程的完整地址和 IPC 端口 -->
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>{{ host.host1 }}:8020</value>
    </property>
     <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>{{ host.host2 }}:8020</value>
    </property>   

    <!--  NameNode 的 HTTP 服务器设置地址 -->
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>{{ host.host1 }}:9870</value>
    </property>
     <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>{{ host.host2 }}:9870</value>
    </property>

    <!-- 配置提供共享编辑存储的 JournalNode 的地址 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://{{ host.host1 }}:8485;{{ host.host2 }}:8485;{{ host.host3 }}:8485/mycluster</value>
    </property>
  
    <!-- 配置 DFS 客户端将使用的 Java 类的名称,以确定哪个 NameNode 是当前活动节点 -->
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <!-- 配置 DFS 客户端将使用的 Java 类的名称,以确定哪个 NameNode 是当前活动节点 -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <!-- 存储 JN 使用的编辑和其他本地状态 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>{{data_dir }}/hadoop/hdfs/journalnode/</value>
    </property>

    <!-- 阻止安全模式名称节点变为活动状态 -->
    <property>
        <name>dfs.ha.nn.not-become-active-in-safemode</name>
        <value>true</value>
    </property>

    <!-- 配置自动故障转移 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

core-site.xml

<configuration>
    <!-- 配置HDFS运行时临时数据路径到持久化目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>"{{ data_dir }}/hadoop/tmp"</value>
        <description>Abase for other temporary directories.</description>
    </property>

    <!--默认的文件系统名称,HDFS访问地址-->
    <!-- <property>
        <name>fs.defaultFS</name>
        <value>hdfs://{{ host.host1 }}:9000</value>
    </property> -->

   <!-- 下面两项为开启HA需要的配置 -->
   <!-- 开启HA后的NN访问地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://{{ NamenodeserviceId }}</value>
    </property>

    <!-- Zookeeper集群地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>{{ host.host1 }}:2181,{{ host.host2 }}:2181,{{ host.host3 }}:2181</value>
    </property> 

  
    <!--配置所有节点的root用户都可作为代理用户-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    
    <!--配置root用户能够代理的用户组为任意组-->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    
    <!--配置root用户能够代理的用户为任意用户-->
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>

    <property>
      <name>hadoop.proxyuser.hdfs.groups</name>
      <value>*</value>
    </property>
    
    <property>
      <name>hadoop.proxyuser.hdfs.hosts</name>
      <value>*</value>
    </property>

    <property>
      <name>hadoop.proxyuser.hive.groups</name>
      <value>*</value>
    </property>
    
    <property>
      <name>hadoop.proxyuser.hive.hosts</name>
      <value>*</value>
    </property>
</configuration>

二、格式化

1、启动所有 JournalNode 集群,所有JN节点执行,用于同步两个 HA 名称节点的磁盘元数据

hdfs --daemon start journalnode

2、主节点格式化并启动 NameNode

hdfs namenode -format
hdfs --daemon start namenode

格式化执行结果:

Apache Hadoop开启HA_hadoop

3、备节点格式化并启动 NameNode

hdfs namenode -bootstrapStandby #将 NameNode 元数据目录的内容复制到另一个未格式化的 NameNode
hdfs --daemon start namenode

Apache Hadoop开启HA_root用户_02

4、现在访问两个HFDFS的web页面内,查看都是standby状态

Apache Hadoop开启HA_root用户_03

Apache Hadoop开启HA_hadoop_04

5、手动指定active节点

hdfs haadmin -transitionToActive nn1

查看状态已变更

[root@ky10sp2-wnc-test01 sbin]# hdfs haadmin -getServiceState nn1
active
[root@ky10sp2-wnc-test01 sbin]# hdfs haadmin -getServiceState nn2
standby


6、在maser1上格式化zookeeper,将在 ZooKeeper 中创建一个 znode,自动故障转移系统在其中存储其数据

hdfs zkfc -formatZK

执行结果:

Apache Hadoop开启HA_hdfs_05

7、在master1上初始化共享编辑日志

需要先停止NameNode,且

hdfs namenode -initializeSharedEdits
# 该命令将使用本地 NameNode 编辑目录中的编辑数据初始化 JournalNodes

执行过程需要确认

Apache Hadoop开启HA_hdfs_06

执行结果

Apache Hadoop开启HA_hadoop_07


问题处理

问题1:JN存储目录不为空

Apache Hadoop开启HA_hdfs_08

进入JN数据目录,删除所有文件,再次进行格式化

[root@ky10sp2-wnc-test03 ~]# cd /data/hadoop/hdfs/journalnode/mycluster
[root@ky10sp2-wnc-test03 mycluster]# rm -rf ./*

标签:hdfs,Hadoop,dfs,hadoop,host,Apache,namenode,HA,mycluster
From: https://blog.51cto.com/u_16279059/7593410

相关文章

  • FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置
    FlashDuty:一站式告警响应平台,前往此地址免费体验!FlashDuty现在已经全面支持了深色模式,这为您提供了更柔和的光线和舒适的界面外观。并且,您可以根据自己的喜好和使用环境动态切换深色和浅色模式与主题,提高使用体验的个性化和灵活性。深色模式效果预览为了确保在深色模式下能够呈现......
  • FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心
    FlashDuty:一站式告警响应平台,前往此地址免费体验!自定义字段FlashDuty已支持接入大部分常见的告警系统,我们将推送内容中的大部分信息放到了Lables进行展示。尽管如此,我们用户还是会有一些扩展或定制性的需求,比如人工标记一个故障是否为误报。因此我们提供了自定义字段功能,来进一......
  • module开发过程tree_ shaking
    module开发过程tree_shakingmodule开发可以实现tree-shaking注意事项❓:什么情况下就会tree-shaking?......
  • [LeetCode] 1353. Maximum Number of Events That Can Be Attended 最多可以参加的会
    Youaregivenanarrayof events where events[i]=[startDayi,endDayi].Everyevent i startsat startDayi andendsat endDayi.Youcanattendanevent i atanyday d where startTimei<=d<=endTimei.Youcanonlyattendoneeventatanytime ......
  • 部署FaceChain项目
    项目背景:DataWhale组织的AIGC项目,零基础入门项目内容:零基础部署教程:酷蛙部署-三张照片拥有不一样的你FaceChain技术解析与使用演示让你拥有专属且万能的AI摄影师+AI修图师Hugging-SD:https://github.com/datawhalechina/hugging-sd嘉宾分享材料:https://datawhaler.feishu.......
  • 理解并掌握C#的Channel:从使用案例到源码解读(一)
    引言在C#的并发编程中,Channel是一种非常强大的数据结构,用于在生产者和消费者之间进行通信。本文将首先通过一个实际的使用案例,介绍如何在C#中使用Channel,然后深入到Channel的源码中,解析其内部的实现机制。使用案例一:文件遍历和过滤在我们的使用案例中,我们需要遍历一个文件夹及......
  • Pycharm环境配置
    Pycharm环境配置1、安装Python环境访问此地址进行下载 https://mirrors.huaweicloud.com/python/  2、Pycharm配置 3、配置环境变量如果安装Python未勾选 AddPythonxx.xxtoPath,将python.exe所在目录添加到环境变量Path即可配置pip,将Scrips目录添加到环境变量......
  • 华为云云耀云服务器L实例评测|伪分布式环境下部署hadoop2.10.1
    文章目录前言云耀云服务器L实例简介Hadoop简介一、配置环境购买云耀云服务器L实例查看云耀云服务器L实例状态重置密码查看弹性公网IP地址FinalShell连接服务器二、搭建Hadoop单机版本详细安装步骤如下:我们先开始配置java环境hadoop2.x接下来需要利用vim来操作core-site和hdfs-si......
  • python教程:解决报错:ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIRE
    从以下两种途径来解决。清除缓存这个错误通常表示安装的软件包与要求文件中的哈希值不匹配。这可能是由于要求文件被更改或软件包被篡改引起的。为了解决这个问题,你可以尝试以下几个步骤:清理缓存:运行以下命令清理pip缓存:pipcachepurge```更新要求文件:如果你更新了软件包的版本......
  • R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化|附代码数据
    原文链接:http://tecdat.cn/?p=19889原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于Metropolis-Hastings采样的研究报告,包括一些图形和统计输出。如果您可以写出模型的似然函数,则 Metropolis-Hastings算法可以负责其余部分(即MCMC)。我写了r代码来简化对任意模型的后......