news 2026/4/29 6:11:45

Linux软件安装 —— Hadoop高可用安装(集成Zookeeper)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux软件安装 —— Hadoop高可用安装(集成Zookeeper)

文章目录

  • 一、节点说明
  • 二、配置节点间免密登录
  • 三、JDK安装
  • 四、Zookeeper安装
  • 五、Hadoop安装
      • 1、基础环境准备
          • (1)下载安装包
          • (2)上传并解压
          • (3)创建必要的目录
      • 2、hadoop配置文件
          • (1)配置core-site.xml
          • (2)配置hdfs-site.xml
          • (3)配置yarn-site.xml
          • (4)配置mapred-site.xml
          • (5)配置workers
      • 3、将hadoop分发到node03,node04
  • 六、初始化及启动
      • 1、环境变量配置
      • 2、启动zookeeper
      • 3、启动hdfs
      • 4、启动yarn集群
  • 七、集群验证
      • 1、Web UI访问
      • 2、 功能测试
      • 3、故障转移测试

一、节点说明

1、相关软件

IP主机名部署软件
192.168.10.102node02jdk,hadoop,zookeeper
192.168.10.103node03jdk,hadoop,zookeeper
192.168.10.104node04jdk,hadoop,zookeeper

2、相关进程

node02node03node04
HDFSNameNode
DFSZKFailoverController
JournalNode
DataNode
NameNode
DFSZKFailoverController
JournalNode
DataNode
JournalNode
DataNode
YARNResourceManager
NodeManager
ResourceManager
NodeManager
NodeManager
zookeeperQuorumPeerMainQuorumPeerMainQuorumPeerMain

二、配置节点间免密登录

参考本人此篇文章:Linux软件安装 —— SSH免密登录


三、JDK安装

参考本人此篇文章:Linux软件安装 —— JDK安装


四、Zookeeper安装

参考本人此篇文章:Linux软件安装 —— zookeeper集群安装


五、Hadoop安装

1、基础环境准备

(1)下载安装包

下载地址:Apache Hadoop
本文使用版本为:hadoop-3.1.3.tar.gz

(2)上传并解压
# 解压到安装目录tar-zxvf hadoop-3.1.3.tar.gz -C /opt/module/# 修改名称mvhadoop-3.1.3/ hadoop
(3)创建必要的目录
mkdir-p /opt/module/hadoop/tmpmkdir-p /opt/module/hadoop/journalmkdir-p /opt/module/hadoop/pidmkdir-p /opt/module/hadoop/nm-local-dirmkdir-p /opt/module/hadoop/hdfs/namemkdir-p /opt/module/hadoop/hdfs/datamkdir-p /opt/module/hadoop/hdfs/namesecondary

2、hadoop配置文件

以下配置文件均在/opt/module/hadoop/etc/hadoop下

(1)配置core-site.xml
<configuration><!-- 指定HDFS的nameservice为ns --><property><name>fs.defaultFS</name><value>hdfs://ns</value></property><!-- 指定Hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop/tmp</value></property><property><name>io.file.buffer.size</name><value>4096</value></property><!-- 指定Zookeeper集群地址 --><property><name>ha.zookeeper.quorum</name><value>node02:2181,node03:2181,node04:2181</value></property></configuration>
(2)配置hdfs-site.xml
<configuration><!-- 指定副本数量 --><property><name>dfs.replication</name><value>3</value></property><!-- 指定nameservice为ns,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>ns</value></property><!-- ns下面有两个NameNode,分别是nn1和nn2 --><property><name>dfs.ha.namenodes.ns</name><value>nn1,nn2</value></property><!-- RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.nn1</name><value>node02:8020</value></property><property><name>dfs.namenode.rpc-address.ns.nn2</name><value>node03:8020</value></property><!-- HTTP通信地址 --><property><name>dfs.namenode.http-address.ns.nn1</name><value>node02:9870</value></property><property><name>dfs.namenode.http-address.ns.nn2</name><value>node03:9870</value></property><!-- 指定NameNode的edits元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node02:8485;node03:8485;node04:8485/ns</value></property><!-- 指定JournalNode本地磁盘存放路径 --><property><name>dfs.journalnode.edits.dir</name><value>/opt/module/hadoop/journal</value></property><!-- 开启NameNode故障自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失败自动切换实现方式 --><property><name>dfs.client.failover.proxy.provider.ns</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔离机制时需要ssh免登陆 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><property><name>dfs.namenode.name.dir</name><value>file:/opt/module/hadoop/hdfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/opt/module/hadoop/hdfs/data</value></property><!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 --><property><name>dfs.webhdfs.enabled</name><value>true</value></property></configuration>
(3)配置yarn-site.xml
<configuration><!-- NodeManager上运行的辅助服务 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 开启RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>clusterrm</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分别指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>node02</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node03</value></property><!-- 用户通过此地址访问YARN管理界面(如查看应用状态、资源使用情况) --><property><name>yarn.resourcemanager.webapp.address</name><value>node02:8088</value></property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>node02:2181,node03:2181,node04:2181</value></property><!-- 开启自动恢复 --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定resourcemanager的状态信息存储在zookeeper上 --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property><!-- 调度器类型配置:这里使用公平调度器(Fair Scheduler) --><property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property><!-- 启用抢占功能 --><property><name>yarn.scheduler.fair.preemption</name><value>true</value></property><!-- 下面配置用来设置集群利用率的阀值, 默认值0.8f,最多可以抢占到集群所有资源的80% --><property><name>yarn.scheduler.fair.preemption.cluster-utilization-threshold</name><value>1.0</value></property><!-- 虚拟内存与物理内存比例 --><property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>4.2</value></property><!-- NodeManager本地目录 --><property><name>yarn.nodemanager.local-dirs</name><value>/opt/module/hadoop/nm-local-dir</value></property><!-- 开启日志聚集功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志保留时间为7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property></configuration>
<!-- 以下配置根据服务器配置进行配置 --><property><name>yarn.scheduler.maximum-allocation-mb</name><value>16384</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>26214</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>16</value></property>
(4)配置mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
(5)配置workers
node02 node03 node04

3、将hadoop分发到node03,node04

scp-r /opt/module/hadoop/ root@node03:/opt/module/scp-r /opt/module/hadoop/ root@node04:/opt/module/

六、初始化及启动

1、环境变量配置

三节点都需要

# 编辑环境变量,创建单独文件方便管理vim/etc/profile.d/my_env.sh# JAVA_HOME,JDK文章中已配置,此处不配,仅做展示exportJAVA_HOME=/opt/module/jdk8exportPATH=$PATH:$JAVA_HOME/bin# ZOOKEEPER_HOME,zookeeper文章中已配置,此处不配,仅做展示exportZOOKEEPER_HOME=/opt/module/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin# HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoopexportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexportHADOOP_CLASSPATH=$(hadoop classpath)exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoopexportHADOOP_PID_DIR=/opt/module/hadoop/pidexportHADOOP_SECURE_PID_DIR=${HADOOP_PID_DIR}exportHDFS_NAMENODE_USER=rootexportHDFS_DATANODE_USER=rootexportHDFS_JOURNALNODE_USER=rootexportHDFS_ZKFC_USER=rootexportYARN_RESOURCEMANAGER_USER=rootexportYARN_NODEMANAGER_USER=root# 退出后,刷新环境变量source/etc/profile.d/my_env.sh

2、启动zookeeper

# 在三个节点分别启动zookeeperzkServer.sh start# 也可以用zookeeper文章中创建的一键启停脚本,在node02上执行zookeeper.sh start# 查看zookeeper状态zookeeper.sh status

3、启动hdfs

# 创建ZOOKEEPER中hadoop-ha命名空间,任意ZOOKEEPER节点执行,此处node02hdfs zkfc -formatZK# 启动journalnode,在node02,node03,node04分别执行如下命令hadoop-daemon.sh start journalnode# 初始化NameNode节点,任意一个NameNode节点,仅需要初始化一个,此处node02hdfs namenode -format ns# 启动当前NameNode,此处node02hadoop-daemon.sh start namenode# 在另一个NameNode节点执行同步元数据,此处node03hdfs namenode -bootstrapStandby# 启动当前NameNode,此处node03hadoop-daemon.sh start namenode# 在两个NameNode节点node02,node03启动zookeeper协同hadoop-daemon.sh start zkfc# 启动datanode,在node02,node03,node04分别执行如下命令hadoop-daemon.sh start datanode

此处因为第一次启动,涉及NameNode初始化,步骤相对多一点,后续启停步骤如下:

###################### 一般步骤 ####################### 启动journalnode,在node02,node03,node04分别执行如下命令hadoop-daemon.sh start journalnode# 启动NameNode,两个NameNode节点node02,node03hadoop-daemon.sh start namenode# 启动zookeeper协同,两个NameNode节点node02,node03hadoop-daemon.sh start zkfc# 启动datanode,在node02,node03,node04分别执行如下命令hadoop-daemon.sh start datanode# 停止为上述相同节点相反步骤依次执行###################### 一键启停(官方提供) ####################### 启动hdfs集群start-dfs.sh# 停止hdfs集群stop-dfs.sh

4、启动yarn集群

###################### 一般步骤 ####################### 启动resourcemanager,两个resourcemanager节点node02,node03yarn-daemon.sh start resourcemanager### 启动nodemanager,在node02,node03,node04分别执行如下命令yarn-daemon.sh start nodemanager###################### 一键启停(官方提供) ####################### 启动hdfs集群start-yarn.sh# 停止hdfs集群stop-yarn.sh


七、集群验证

1、Web UI访问

(1)HDFS NameNode UI:

  • Active NameNode: http://node02:9870
  • Standby NameNode: http://node03:9870

(2)YARN ResourceManager UI:

  • Active ResourceManager: http://node02:8088
  • Standby ResourceManager: http://node03:8088

2、 功能测试

# 1. 创建HDFS目录hdfs dfs -mkdir /test hdfs dfs -mkdir /input# 2. 上传文件测试echo"Hello Hadoop HA Cluster">test.txt hdfs dfs -put test.txt /test/# 3. 查看文件hdfs dfs -ls /test hdfs dfs -cat /test/test.txt# 4. 运行MapReduce测试# 创建测试文件echo"apple orange banana apple orange">word.txtecho"hadoop spark hive hadoop">>word.txt hdfs dfs -put word.txt /input/# 运行WordCount示例,版本号以自己的版本为准hadoop jar$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/word.txt /output/# 查看结果hdfs dfs -cat /output/part-r-00000

3、故障转移测试

# 1. 查看当前Active NameNodehdfs haadmin -getServiceState nn1 hdfs haadmin -getServiceState nn2# 2. 手动故障转移hdfs haadmin -transitionToStandby nn1 hdfs haadmin -transitionToActive nn2# 3. 模拟故障(杀死Active NameNode进程)# 找到Active NameNode的进程ID并kill# 4. 观察自动故障转移# 大约30秒后,Standby NameNode会自动切换为Active
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 5:23:35

如何本地部署极速TTS?Supertonic设备端语音合成实战

如何本地部署极速TTS&#xff1f;Supertonic设备端语音合成实战 1. 引言&#xff1a;为什么需要本地化TTS解决方案&#xff1f; 在当前AI语音技术广泛应用的背景下&#xff0c;文本转语音&#xff08;Text-to-Speech, TTS&#xff09;系统正逐步从云端服务向设备端本地部署演…

作者头像 李华
网站建设 2026/4/26 2:10:16

网易云音乐永久直链解析:终极免费API工具使用指南

网易云音乐永久直链解析&#xff1a;终极免费API工具使用指南 【免费下载链接】netease-cloud-music-api 网易云音乐直链解析 API 项目地址: https://gitcode.com/gh_mirrors/ne/netease-cloud-music-api 还在为网易云音乐链接频繁失效而烦恼吗&#xff1f;网易云音乐直…

作者头像 李华
网站建设 2026/4/24 14:37:07

AI智能二维码工坊倾斜校正:旋转图像自动对齐实战

AI智能二维码工坊倾斜校正&#xff1a;旋转图像自动对齐实战 1. 引言 1.1 业务场景描述 在日常开发与产品应用中&#xff0c;二维码作为信息传递的重要载体&#xff0c;广泛应用于支付、营销、身份识别等场景。然而&#xff0c;用户在使用手机拍摄二维码时&#xff0c;常常由…

作者头像 李华
网站建设 2026/4/23 16:25:00

Switch手柄PC适配全攻略:从零开始实现完美兼容

Switch手柄PC适配全攻略&#xff1a;从零开始实现完美兼容 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华
网站建设 2026/4/28 16:46:11

游戏翻译神器XUnity.AutoTranslator:让你的游戏说中文的终极指南

游戏翻译神器XUnity.AutoTranslator&#xff1a;让你的游戏说中文的终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂日文游戏剧情而烦恼吗&#xff1f;想体验原版游戏却苦于语言障碍…

作者头像 李华
网站建设 2026/4/29 1:32:45

Qwen3-Reranker-0.6B性能对比:与其他重排序模型评测

Qwen3-Reranker-0.6B性能对比&#xff1a;与其他重排序模型评测 1. 引言 在信息检索系统中&#xff0c;重排序&#xff08;Re-ranking&#xff09;是提升搜索结果相关性的关键环节。传统的检索模型如BM25或基于向量相似度的语义搜索通常能快速召回候选文档&#xff0c;但其排…

作者头像 李华