Hadoop高可用(HA)集群是企业级大数据平台的核心基础设施,通过多主节点冗余和自动故障转移机制,确保系统在单点故障时仍能正常运行。本文将详细介绍如何基于CentOS 7搭建Hadoop 3.X高可用集群,涵盖环境准备、组件配置、集群启动及管理的全流程。

一、环境要求与准备

1. 基础环境配置
# 系统要求
CentOS 7.x
JDK 8+
Zookeeper 3.7+
Hadoop 3.X
2. 环境变量配置
# 编辑~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk
export ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 使配置生效
source ~/.bash_profile
3. 集群节点规划
主机名NameNodeResourceManagerZKFCDataNodeNodeManagerJournalNodeZookeeper
hadoop01
hadoop02
hadoop03
hadoop04

二、网络与SSH配置

1. 关闭防火墙
# 所有节点执行
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
2. 配置域名解析
# 编辑所有节点的/etc/hosts
vi /etc/hosts# 添加以下内容
192.168.1.101 hadoop01
192.168.1.102 hadoop02
192.168.1.103 hadoop03
192.168.1.104 hadoop04
3. SSH免密登录配置
# 所有节点生成密钥对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa# 所有节点互传公钥
ssh-copy-id hadoop@hadoop01
ssh-copy-id hadoop@hadoop02
ssh-copy-id hadoop@hadoop03
ssh-copy-id hadoop@hadoop04# 验证免密登录
ssh hadoop01

三、Zookeeper集群安装

1. 解压与配置
# 解压安装包(hadoop01执行)
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C ~/app/
cd ~/app/
mv apache-zookeeper-3.7.1-bin zookeeper# 配置文件
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vi $ZOOKEEPER_HOME/conf/zoo.cfg# 修改内容
dataDir=/home/hadoop/data/zk
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
2. 复制配置到其他节点
# 从hadoop01复制到其他节点
scp -r ~/app/zookeeper hadoop@hadoop02:~/app/
scp -r ~/app/zookeeper hadoop@hadoop03:~/app/
3. 创建myid文件
# hadoop01执行
mkdir -p /home/hadoop/data/zk
echo 1 > /home/hadoop/data/zk/myid# hadoop02执行
mkdir -p /home/hadoop/data/zk
echo 2 > /home/hadoop/data/zk/myid# hadoop03执行
mkdir -p /home/hadoop/data/zk
echo 3 > /home/hadoop/data/zk/myid
4. 启动Zookeeper集群
# 所有ZK节点启动服务
zkServer.sh start# 检查状态(每个节点应显示leader或follower)
zkServer.sh status

四、Hadoop配置文件详解

1. hadoop-env.sh
# 配置Java路径
export JAVA_HOME=/home/hadoop/app/jdk
2. core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data/hdfs</value></property><property><name>ha.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property>
</configuration>
3. hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop01:8020</value></property><!-- 其他NameNode配置... --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>
4. yarn-site.xml
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 其他RM配置... -->
</configuration>
5. mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.application.classpath</name><value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value></property>
</configuration>
6. workers文件
# 配置DataNode节点
hadoop01
hadoop02
hadoop03

五、Hadoop集群启动流程

1. 启动JournalNode
# 在hadoop02、hadoop03、hadoop04上执行
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode# 验证启动
jps | grep JournalNode
2. 格式化HDFS
# 在hadoop01上执行
$HADOOP_HOME/bin/hdfs namenode -format# 启动第一个NameNode
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode
3. 同步第二个NameNode
# 在hadoop02上执行
$HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
4. 格式化ZKFC
# 在hadoop01上执行
$HADOOP_HOME/bin/hdfs zkfc -formatZK
5. 启动集群
# 停止所有服务(确保干净启动)
$HADOOP_HOME/sbin/stop-all.sh# 启动HDFS和YARN
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh# 启动ZKFC
$HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc

六、Web UI访问

服务URL说明
YARN ResourceManagerhttp://hadoop01:8088/ui2资源管理与作业监控
HDFS NameNodehttp://hadoop01:9870HDFS文件系统查看
MapReduce HistoryServerhttp://hadoop01:19888历史作业详情

七、高可用集群管理

1. ResourceManager管理
# 查看RM状态
yarn rmadmin -getServiceState rm1# 手动切换为Active状态
yarn rmadmin -transitionToActive rm2# 刷新队列配置
yarn rmadmin -refreshQueues
2. NameNode管理
# 查看NN状态
hdfs haadmin -getServiceState nn1# 手动故障转移
hdfs haadmin -failover --forceactive nn1 nn2# 检查健康状态
hdfs haadmin -checkHealth nn2

八、常见问题排查

1. 服务无法启动
  • 检查日志:$HADOOP_HOME/logs/
  • 确认配置文件一致性
  • 检查端口占用:netstat -tulpn | grep <端口号>
2. 自动故障转移失败
  • 验证Zookeeper集群状态
  • 检查SSH免密配置
  • 确认dfs.ha.fencing.methods配置正确
3. 数据不同步
  • 检查JournalNode服务状态
  • 查看NameNode日志中的编辑日志同步情况
  • 手动执行bootstrapStandby操作

九、性能优化建议

  1. 内存配置优化

    # 修改yarn-site.xml
    <property><name>yarn.nodemanager.resource.memory-mb</name><value>65536</value>
    </property>
    <property><name>yarn.scheduler.maximum-allocation-mb</name><value>32768</value>
    </property>
    
  2. HDFS块大小调整

    # hdfs-site.xml
    <property><name>dfs.blocksize</name><value>268435456</value> <!-- 256MB -->
    </property>
    
  3. 数据本地化优化

    # yarn-site.xml
    <property><name>yarn.nodemanager.local-dirs</name><value>/data1/hadoop/nm-local-dir,/data2/hadoop/nm-local-dir</value>
    </property>
    

通过以上步骤,你可以成功搭建一个高可用的Hadoop集群,实现HDFS和YARN的双高可用架构。在生产环境中,建议定期备份关键数据,监控集群性能,并进行必要的容量规划,以确保系统稳定运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90054.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90054.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90054.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Next.js 实战笔记 1.0:架构重构与 App Router 核心机制详解

Next.js 实战笔记 1.0&#xff1a;架构重构与 App Router 核心机制详解 上一次写 Next 相关的东西都是 3 年前的事情了&#xff0c;这 3 年里 Next 也经历了 2-3 次的大版本变化。当时写的时候 Next 是 12 还是 13 的&#xff0c;现在已经是 15 了&#xff0c;从 build 到实现…

Pillow 安装使用教程

一、Pillow 简介 Pillow 是 Python 图像处理库 PIL&#xff08;Python Imaging Library&#xff09;的友好分支&#xff0c;是图像处理的事实标准。它支持打开、编辑、转换、保存多种图像格式&#xff0c;常用于图像批量处理、验证码识别、缩略图生成等应用场景。 二、安装 Pi…

SQL Server从入门到项目实践(超值版)读书笔记 20

9.4 数据的嵌套查询所谓嵌套查询&#xff0c;就是在一个查询语句中&#xff0c;嵌套进另一个查询语句&#xff0c;即&#xff0c;查询语句中可以使用另一个查询语句中得到的查询结果&#xff0c;子查询可以基于一张表或者多张表。子查询中常用的操作符有ANY、SOME、ALL、IN、EX…

【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案

【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案 问题1&#xff1a;序列值不自动刷新问题 下面SQL只针对单库操作以及每个序列只绑定一张表的情况 -- 自动生成的序列&#xff0c;设置序列值 with sequences as (select *from (select table_schema,table_…

【Maven】Maven命令大全手册:28个核心指令使用场景

Maven命令大全手册&#xff1a;28个核心指令使用场景 Maven命令大全手册&#xff1a;28个核心指令深度解析一、构建生命周期核心命令1. mvn clean2. mvn compile3. mvn test4. mvn package5. mvn install6. mvn deploy二、依赖管理命令7. mvn dependency:tree8. mvn dependency…

大语言模型(LLM)按架构分类

大语言模型&#xff08;LLM&#xff09;按架构分类的深度解析 1. 仅编码器架构&#xff08;Encoder-Only&#xff09; 原理 双向注意力机制&#xff1a;通过Transformer编码器同时捕捉上下文所有位置的依赖关系# 伪代码示例&#xff1a;BERT的MLM任务 masked_input "Th…

MySQL(120)如何进行数据脱敏?

数据脱敏&#xff08;Data Masking&#xff09;是指通过某种方式对敏感数据进行变形&#xff0c;使其在使用过程中无法识别原始数据&#xff0c;从而保护数据隐私。数据脱敏通常应用在开发、测试和数据分析等场景中。下面我们详细介绍如何在Java应用程序中进行数据脱敏&#xf…

使用 Dockerfile 构建基于 .NET9 的跨平台基础镜像

官方基础镜像准备 微软官方 dotnet sdk 基础镜像&#xff1a; docker pull mcr.microsoft.com/dotnet/sdk:9.0拉取 ubuntu 镜像&#xff1a; docker pull ubuntu:24.04更多资源请参考&#xff1a; dotnet sdk images&#xff0c;https://mcr.microsoft.com/en-us/artifact/mar/…

C++ : 线程库

C : 线程库一、线程thread1.1 thread类1.1.1 thread对象构造函数1.1.2 thread类的成员函数1.1.3 线程函数的参数问题1.2 this_thread 命名空间域1.2.1 chrono二、mutex互斥量库2.1 mutex的四种类型2.1.1 mutex 互斥锁2.2.2 timed_mutex 时间锁2.2.3 recursive_muetx 递归锁2.2.…

idea的使用小技巧,个人向

idea的使用小技巧&#xff0c;个人向 一、前言二、过程1、显示内存的使用情况2、去掉xml文件中的黄色背景3、显示所有打开文件4、显示工具栏到菜单下面5、使用JDK8 一、前言 每次重装idea都需要重新设置一下&#xff0c;这里做个记录。 这些技巧只是个人感觉的好用 演示用的…

debian及衍生发行版apt包管理常见操作

好的&#xff0c;这是 Debian 及其衍生版&#xff08;如 Ubuntu&#xff09;使用的 apt 包管理器的常用命令速查表。 一点说明&#xff1a;apt 是新一代的命令行工具&#xff0c;整合了 apt-get 和 apt-cache 的常用功能&#xff0c;并提供了更友好的交互体验。本表主要使用现…

vue调用函数

好的&#xff0c;我们来讲解如何在 Vue 模板中调用函数。您提供的代码是一个非常棒的、很实用的例子。 在 Vue 模板中&#xff0c;你可以在两个主要地方调用函数&#xff1a; 文本插值中&#xff1a;像 {{ formatDate(date) }} 这样&#xff0c;函数的返回值会作为文本被渲染到…

前端常用构建工具介绍及对比

打包构建工具是现代软件开发中必不可少的,它们帮助开发者自动化构建、打包、部署等流程,提升开发效率。不过,不同时期构建工具略有差异。 每个构建工具都有其擅长的领域,我们需要知道其优势,才能在我们实际开发中选择合适的构建工具进行构建处理。 1. Gulp Gulp 是一个…

Web后端开发-SpringBootWeb入门、Http协议、Tomcat

文章目录Web后端开发简介SpringBootWeb入门HTTP协议HTTP-概述HTTP-请求协议HTTP-响应协议HTTP-协议解析Web服务器-Tomcat简介基本使用SpringBootWeb入门程序解析Web后端开发简介 SpringBootWeb入门 package com.wuxuan.javaweb_wushuang.controller;import org.springframework…

物联网通信技术全景剖析:从LoRa到5G的深度对比与选型指南

物联网通信技术全景剖析&#xff1a;从LoRa到5G的深度对比与选型指南在万物互联时代&#xff0c;选择合适的通信技术如同为设备构建“神经网络”。本文将深入解析七大主流物联网通信技术&#xff0c;助您在技术选型中精准决策。一、低功耗广域网&#xff08;LPWAN&#xff09;技…

俄罗斯方块AI深度解析:从算法原理到实现细节

俄罗斯方块AI深度解析:从算法原理到实现细节 前言 俄罗斯方块,这个诞生于1984年的经典游戏,至今仍然是人工智能研究领域的热门课题。当简单的几何形状在网格中不断下落时,看似简单的规则背后却隐藏着复杂的策略决策问题。本文将深入剖析一个基于Python实现的俄罗斯方块AI…

Spring Boot 框架创建一个简单的后端接口,并介绍如何使用 Apifox 连接该接口

目录 一、配置 二、使用 IntelliJ IDEA 创建 Spring Boot 项目 1.打开 IntelliJ IDEA&#xff0c;选择 File > New > Project 2.在左侧面板选择 Spring Initializr&#xff0c;项目名称设置为HelloWorldAPI 3.点击 Create 完成项目创建 三、创建控制器类 四、运行项…

CICD[导航]、docker+gitlab+harbor+jenkins从安装到部署

一、安装 CICD[软件安装]&#xff1a;docker安装gitlab-CSDN博客 CICD[软件安装]&#xff1a;ubuntu安装jenkins-CSDN博客 CICD[软件安装]&#xff1a;ubuntu安装私有镜像仓库-Harbor-CSDN博客 CICD[软件安装]&#xff1a;ubuntu24安装Docker-CSDN博客 二、镜像执行 CICD[…

深度学习图像分类数据集—蘑菇识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;蘑菇识别分类&#xff1a;[Agaricus, Amanita, Boletus, Cortinarius, …

iOS 多线程导致接口乱序?抓包还原 + 请求调度优化实战

在一次性能优化过程中&#xff0c;我们将 iOS App 内多处请求改为并行处理&#xff0c;以提高页面加载速度。但上线后却收到部分用户反馈&#xff1a;进入页面后数据加载错乱&#xff0c;有时展示前一次页面内容&#xff0c;有时同一个接口请求重复返回不同内容。 日志仅显示正…