Hadoop最新版本hadoop-3.4.1搭建伪分布式集群以及相关报错解决
一:概述
Hadoop 是一个开源的分布式计算框架,广泛应用于大数据处理。伪分布式集群是 Hadoop 的一种部署模式,它可以在单台机器上模拟集群环境,适合初学者进行学习和实验。本文将详细介绍如何在单台机器上搭建 Hadoop 3.4.1 的伪分布式集群。
二:具体说明
2.1 环境准备
需要安装好虚拟机CentOS8,并且已经配置了SSH远程连接,以便于更好的操作。
我演示的是在CentOS8中配置伪分布式集群搭建。
首先,我们需要在虚拟机中配置java环境,详细过程如下所示:
首先将jdk的安装包,通过文件传输工具传输到/usr/local/soft/jdk中,让后将其解压的jdk8目录中

接下来在/etc/profile中配置环境变量
vim /etc/profile
在文件中添加如下的内容


JAVA_HOME路径为jdk的解压根目录。
配置完成之后,保存。
为了能够使这个配置生效,需要使用以下的命令来重新加载这个配置文件。
source /etc/profile
接着查看是否配置成功,这里和Win中查看方法相同
java -version
如果出现以下图片的内容,则证明配置成功。

如果没有,说明配置文件中配置的路径有误或者未执行重新加载配置文件的命令。
2.2 搭建Hadoop伪分布式集群
将hadoop的安装包上传到虚拟机的/opt目录中

配置免密登录
修改主机名
vim /etc/hostname
# 或者使用以下的命令
hostnamectl set-hostname master

将默认的主机名改为master,保存并退出
接下来修改hosts文件
vim /etc/hosts

接着重启虚拟机,并生成公钥和私钥对。
cd .ssh
ssh-keygen -t rsa
接着使用下面命令进行免密登录配置
ssh-copy-id master

利用以下的命令检查免密登录是否成功。
ssh master

如果出现上图中的内容,则说明配置免密登录成功了。
配置HDFS
将上传到/usr/local/soft/hadoop/hadoop3.4.1中的压缩包解压到/usr/local/soft/hadoop/hadoop3.4.1/中

通过以下的命令配置hadoop-env.sh文件
cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/etc/hadoop
cd /etc/hadoop

接着去编辑这个hadoop目录中的hadoop-env.sh文件,在里面添加JDK的家目录
通过以下的步骤去进行。
如果你不知道这个已经配置好的jdk家目录中,可以使用以下的命令打印出这个路径
echo $JAVA_HOME
vim hadoop-env.sh


然后保存并且退出。
接下来配置core-site.xml
vim core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://master:8020</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/data</value></property>
</configuration>
再接下来配置hdfs-site.xml
vim hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration
接下来,格式化HDFS

hdfs namenode -format

2.3 HDFS的启动和停止
启动之前,需要做一些准备
进入到sbin目录中,修改四个文件
对于start-dfs.sh和stop-dfs.sh文件,尾部添加如下的参数
cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/sbin
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
[root@master sbin]# vim start-dfs.sh
[root@master sbin]# vim stop-dfs.sh
[root@master sbin]# vim start-yarn.sh
[root@master sbin]# vim stop-yarn.sh
对于start-yarn.sh和stop-yarn.sh文件,尾部添加下列参数:


YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1
# 启动命令
sbin/start-dfs.sh
# 关闭命令
sbin/stop-dfs.sh

在 Hadoop 的配置文件中定义运行服务的用户。编辑
$HADOOP_HOME/etc/hadoop/hadoop-env.sh 文件,添加以下内容:bashexport HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
注意:虽然这里使用了 root 用户,但在实际生产环境中,建议使用非 root 用户来运行 Hadoop 服务,以增强安全性

我们发现,现在执行,刚才那个错误已经没有了,但是又出现了一个错误。这个要去将/etc/hosts中以下内容注释掉
vim /etc/hosts

接着杀死,已经启动的进程,然后重新启动,看是否还有这个错误/警告。

重现启动,发现已经没有了警告。


2.4 YARN的相关配置
(1)配置yarn-site.xml
vim yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostsname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>
(2)配置mapred-site.xml
把mapred-site.xml.template修改成mapred-site.xml,如果不是则不需要修改
# cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
</configuration>
启动和停止YARN
启动命令:
start-dfs.sh
暂停命令:
stop-dfs.sh
同理dfs的启动,若不能成功启动,则需退回/opt/hadoop目录下使用sbin/start-yarn.sh或sbin/stop-yarn.sh

在 Hadoop 的配置文件中定义运行服务的用户。编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 文件,添加以下内容:export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

接下来,就可以顺利启动成功了!!


2.5 web页面访问管理
首先需要关闭防火墙,我们这里直接关闭,一般开发中,只是开放指定端口
[root@master hadoop3.4.1]# systemctl stop firewalld
[root@master hadoop3.4.1]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
接下来去访问HDFS和YARN的Web界面
http://master:9870/
http://master:8088/


dfs.namenode.http-address :NameNode 的 HTTP 服务端口(默认为 50070 ,Hadoop 3.x 中为 9870 )。• dfs.datanode.http.address :DataNode 的 HTTP 服务端口(默认为 50075 ,Hadoop 3.x 中为 9864 )
相关文章:
Hadoop最新版本hadoop-3.4.1搭建伪分布式集群以及相关报错解决
一:概述 Hadoop 是一个开源的分布式计算框架,广泛应用于大数据处理。伪分布式集群是 Hadoop 的一种部署模式,它可以在单台机器上模拟集群环境,适合初学者进行学习和实验。本文将详细介绍如何在单台机器上搭建 Hadoop 3.4.1 的伪分…...
Android SDK与NDK的区别
Android SDK(Software Development Kit)与NDK(Native Development Kit)在Android应用开发中各自扮演着重要角色,它们之间存在显著的区别。以下是Android SDK与NDK的主要区别: 一、定义与用途 Android SDK…...
【保姆级视频教程(二)】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测!
【2025全站首发】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测! 文章目录 1. 数据集准备1.1 标签格式转换1.2 数据集划分1.3 yaml配置文件创建 2. 训练验证 1. 数据集准备 示例数据集下载链接:P…...
smolagents学习笔记系列(八)Examples - Master you knowledge base with agentic RAG
这篇文章锁定官网教程中 Examples 章节中的 Master you knowledge base with agentic RAG 文章,主要介绍了如何将 agent 和 RAG 结合使用。 官网链接:https://huggingface.co/docs/smolagents/v1.9.2/en/examples/rag; Agentic RAG 在之前的…...
满血版DeepSeek R1使用体验
硅基流动的满血版DeepSeek,通过CheeryStudio可以轻松访问,告别DeepSeek官网服务器繁忙,https://cloud.siliconflow.cn/i/ewlWR6A9 即可注册 https://cloud.siliconflow.cn/i/ewlWR6A9https://cloud.siliconflow.cn/i/ewlWR6A9 一、硅基流动平…...
Java类中的this操作
在Java中,`this` 是一个关键字,用于引用当前对象的实例。它通常在类的方法或构造器中使用,主要有以下几种用途: 1. 区分成员变量和局部变量 当成员变量与局部变量同名时,使用 `this` 可以明确引用当前对象的成员变量。 public class Person { private String name; …...
LeetCode刷题---双指针---532
数组中的 k-diff 数对 532. 数组中的 k-diff 数对 - 力扣(LeetCode) 题目 给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。 k-diff 数对定义为一个整数对 (nums[…...
cpp单调栈模板
题目如下 如果利用暴力解法,时间复杂度是O(n^2) 只能过60%的数据 AC解法: 利用单调栈的算法,单调栈里存的是之前遍历过的元素的下标,如果满足while的条件就将栈顶元素记录,然后将其弹出&#x…...
PyCharm 的使用 + PyCharm快捷键 + 切换中文界面
2025 - 02 - 27 - 第 62 篇 Author: 郑龙浩 / 仟濹 【PyCharm的使用】 文章目录 如何使用Pycharm1 新建工程,新建 .py 文件,运行2 常用快捷键3 其他快捷键 - DeepSeek 总结如下**代码编辑****导航与定位****查找与替换****运行与调试****代码重构****其…...
SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系
下面是 SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系,包含它们的英文全称和中文全称: 属性SSL/TLS 协议SSL证书SSH 协议英文全称Secure Sockets Layer / Transport Layer SecuritySecure Sockets Layer CertificateSecure Shell Protocol中文全称安全…...
一个典型的要求: Python | C#实现年月日创建文件夹 时分秒对应文件名的保存路径
赶时间先说python: 用年月日作为文件夹: 年月日 时分秒 保存文件的路径根据年月日 创建文件夹 年里面包含月 月里面包含日 检查是否存在 没有就去创建 最后文件名用 时分秒毫秒.txt 这是一个典型的要求: import os from datetime import datetimenow datetime.now()# 获取当…...
知识库功能测试难点
图表交互功能测试难点 知识库图表类型多,每种图表交互功能不同。像柱状图,可能有点击柱子查看详细数据、鼠标悬停显示数据提示等交互;折线图除了这些,还可能支持缩放查看不同时间段数据。多种交互操作在不同图表间存在差异&#x…...
如何实现某短视频平台批量作品ID的作品详情采集
声明: 本文仅供学习交流使用,请勿用于非法用途。 在短视频平台的数据分析和内容监测中,批量采集作品详情是一个常见的需求。本文将介绍如何使用 Python 编写一个高效的爬虫程序,根据批量作品 ID 实现作品详情的批量采集。 1. 需求分析 输入:一批作品 ID。输出:每个作品 …...
uniapp中使用leaferui使用Canvas绘制复杂异形表格的实现方法
需求: 如下图,要实现左图的样式,先实现框架,文字到时候 往里填就行了,原来的解决方案是想用css,html来实现,发现实现起来蛮麻烦的。我也没找到合适的实现方法,最后换使用canvas来实现ÿ…...
判别分析:原理推导、方法对比与Matlab实战
内容摘要 本文深入解析判别分析的三大核心方法——距离判别、Fisher判别与Bayes判别,结合协方差估计、投影优化及贝叶斯决策理论,系统阐述数学原理与实现细节。通过气象数据春早预测、产品厂家分类及城市竞争力评估三大实战案例,完整演示数据…...
PMP项目管理—整合管理篇—4.管理项目知识
文章目录 基本信息知识的分类显性知识隐性知识 如何分享知识?4W1HITTO输入工具与技术输出 经验教训登记册 基本信息 知识管理指管理显性知识和隐性知识,旨在重复使用现有知识并生成新知识。有助于达成这两个目的的关键活动是知识分享和知识集成…...
Makefile编写和相关语法规则
makefile基本概念 Makefile 本质上是一个文本文件,它包含了一系列规则和指令,用于告诉构建工具(如 make)如何编译和链接程序,以及如何处理项目中的各种文件。其核心思想是通过定义目标(target)…...
点云 PCL 滤波在自动驾驶的用途。
1.直通滤波 2.体素滤波...
NL2SQL的应用-长上下文模型在处理NL2SQL任务时,相较于传统模型,有哪些显著的优势
大家好,我是微学AI,今天给大家介绍一下NL2SQL的应用-长上下文模型在处理NL2SQL任务时,相较于传统模型,有哪些显著的优势。NL2SQL(自然语言转SQL)技术旨在将用户自然语言提问自动转换为结构化查询语句&#…...
图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
本文主要介绍了灰度直方图相关的处理,包括以下几个方面的内容: • 利用OpenCV计算图像的灰度直方图,并绘制直方图曲线 • 直方图均衡化的原理及实现 • 直方图规定化(匹配)的原理及实现 图像的灰度直方图 一…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

