• Hadoop HA (二) --------- HDFS-HA 手动模式



    一、环境准备与规划集群

    环境准备

    • 修改 IP

    • 修改主机名及主机名和 IP 地址的映射

    • 关闭防火墙

    • ssh 免密登录

    • 安装 JDK,配置环境变量等

    规划集群

    在这里插入图片描述

    二、配置 HDFS-HA 集群

    官方地址:http://hadoop.apache.org/

    在 opt 目录下创建一个 ha 文件夹

    [fancyry@hadoop102 ~]$ cd /opt 
    [fancyry@hadoop102 opt]$ sudo mkdir ha
    [fancyry@hadoop102 opt]$ sudo chown fancyry:fancyry /opt/ha
    
    • 1
    • 2
    • 3

    将 /opt/module/ 下的 hadoop-3.1.3 拷贝到 /opt/ha 目录下 (记得删除 data 和 log 目录)

    [fancyry@hadoop102 opt]$ cp -r /opt/module/hadoop-3.1.3 /opt/ha/
    
    • 1

    配置 core-site.xml

    <configuration>
    	
    	<property>
    		<name>fs.defaultFSname>
    		<value>hdfs://myclustervalue>
    	property>
    	
    	<property>
    		<name>hadoop.tmp.dirname>
    		<value>/opt/ha/hadoop-3.1.3/datavalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    配置 hdfs-site.xml

    <configuration>
    	
    	<property>
    		<name>dfs.namenode.name.dirname>
    		<value>file://${hadoop.tmp.dir}/namevalue>
        property>
    
    	
    	<property>
    		<name>dfs.datanode.data.dirname>
    		<value>file://${hadoop.tmp.dir}/datavalue>
    	property>
    
    	
    	<property>
    		<name>dfs.journalnode.edits.dirname>
    		<value>${hadoop.tmp.dir}/jnvalue>
    	property>
    	
    	
    	<property>
    		<name>dfs.nameservicesname>
    		<value>myclustervalue>
    	property>
    	
    	
    	<property>
    		<name>dfs.ha.namenodes.myclustername>
    		<value>nn1,nn2,nn3value>
    	property>
    	
    	
    	<property>
    		<name>dfs.namenode.rpc-address.mycluster.nn1name>
    		<value>hadoop102:8020value>
    	property>
    	<property>
    		<name>dfs.namenode.rpc-address.mycluster.nn2name>
    		<value>hadoop103:8020value>
    	property>
    	<property>
    		<name>dfs.namenode.rpc-address.mycluster.nn3name>
    		<value>hadoop104:8020value>
    	property>
    
    	
    	<property>
    		<name>dfs.namenode.http-address.mycluster.nn1name>
    		<value>hadoop102:9870value>
    	property>
    	<property>
    		<name>dfs.namenode.http-address.mycluster.nn2name>
    		<value>hadoop103:9870value>
    	property>
    	<property>
    		<name>dfs.namenode.http-address.mycluster.nn3name>
    		<value>hadoop104:9870value>
    	property>
    	
    	
    	<property>
    		<name>dfs.namenode.shared.edits.dirname>
    		<value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/myclus tervalue>
    	property>
    	
    	
    	<property>
    		<name>dfs.client.failover.proxy.provider.myclustername>
    		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyP rovidervalue>
    	property>
    	
    	
    	<property>
    		<name>dfs.ha.fencing.methodsname>
    		<value>sshfencevalue>
    	property>
    	
    	
    	<property>
    		<name>dfs.ha.fencing.ssh.private-key-filesname>
    		<value>/home/fancyry/.ssh/id_rsavalue>
    	property>
    configuration>
    
    • 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
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83

    分发配置好的 hadoop 环境到其他节点

    三、启动 HDFS-HA 集群

    将 HADOOP_HOME 环境变量更改到 HA 目录 (三台机器)

    [fancyry@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
    
    • 1

    A、将 HADOOP_HOME 部分改为如下

    #HADOOP_HOME
    export HADOOP_HOME=/opt/ha/hadoop-3.1.3 
    export PATH=$PATH:$HADOOP_HOME/bin 
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    • 1
    • 2
    • 3
    • 4

    B、去三台机器上 source 环境变量

    [fancyry@hadoop102 ~]$source /etc/profile	
    
    • 1

    在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务

    [fancyry@hadoop102 ~]$ hdfs --daemon start journalnode 
    [fancyry@hadoop103 ~]$ hdfs --daemon start journalnode 
    [fancyry@hadoop104 ~]$ hdfs --daemon start journalnode
    
    • 1
    • 2
    • 3

    在 [nn1] 上,对其进行格式化,并启动

    [fancyry@hadoop102 ~]$ hdfs namenode -format 
    [fancyry@hadoop102 ~]$ hdfs --daemon start namenode
    
    • 1
    • 2

    在 [nn2] 和 [nn3] 上,同步 nn1 的元数据信息

    [fancyry@hadoop103 ~]$ hdfs namenode -bootstrapStandby 
    [fancyry@hadoop104 ~]$ hdfs namenode -bootstrapStandby
    
    • 1
    • 2

    启动 [nn2] 和 [nn3]

    [fancyry@hadoop103 ~]$ hdfs --daemon start namenode 
    [fancyry@hadoop104 ~]$ hdfs --daemon start namenode
    
    • 1
    • 2

    查看 web 页面显示

    图 hadoop102 (standby)

    图 hadoop103 (standby)

    图 hadoop104(standby)

    在所有节点上,启动 datanode

    [fancyry@hadoop102 ~]$ hdfs --daemon start datanode 
    [fancyry@hadoop103 ~]$ hdfs --daemon start datanode 
    [fancyry@hadoop104 ~]$ hdfs --daemon start datanode
    
    • 1
    • 2
    • 3

    将 [nn1] 切换为 Active

    [fancyry@hadoop102 ~]$ hdfs haadmin -transitionToActive nn1	
    
    • 1

    查看是否 Active

    [fancyry@hadoop102 ~]$ hdfs haadmin -getServiceState nn1
    
    • 1
  • 相关阅读:
    Java21的虚拟线程Virtual Thread初体验
    9 Spring MVC 数据校验
    1+X 职业技能考核平台
    Kubernetes技术与架构-存储 2
    SkyWalking分布式系统应用程序性能监控工具-中
    Java专项进阶篇
    微服务实战系列之玩转Docker(十六)
    SD卡格式化如何恢复数据?
    android 11及以上保存图片视频到相册
    webpack基础版及其常用插件分享超详细~~
  • 原文地址:https://blog.csdn.net/m0_51111980/article/details/126072689