Hadoop 伪分布式安装详解:定义、步骤与适用场景

一、什么是 Hadoop 伪分布式安装?

Hadoop 伪分布式安装是一种在单台物理机器上模拟分布式集群环境的部署方式。其核心特点是:

  • 分布式服务启用:运行 Hadoop 的所有核心组件(如 HDFS 的 NameNode、DataNode,YARN 的 ResourceManager、NodeManager 等),但所有组件均部署在同一台主机上。
  • 模拟集群行为 :通过配置让各组件以 "伪分布式" 模式运行,节点间通过本地环回地址(localhost)通信,完全模拟真实分布式集群的交互逻辑。
  • 轻量易部署:无需多台服务器,适合本地开发、调试或学习 Hadoop 核心原理。

适用场景

  • 初学者入门 Hadoop 分布式架构。
  • 开发阶段调试 MapReduce 程序或 HDFS 操作。
  • 验证 Hadoop 配置文件的正确性(如权限、端口、路径等)。

二、伪分布式安装核心步骤(以 Hadoop 3.x 为例)

1.用户权限准备

  • 建议创建专用用户(如hadoop)进行部署,避免使用root用户:
bash 复制代码
useradd hadoop	#使用 root 用户进行创建用户 hadoop
passwd hadoop	#设置 hadoop 用户密码
sudo usermod -aG whell hadoop	# 赋予 sudo 权限(按需)
su - hadoop	#切换到 hadoop 用户

2.检查并卸载系统自带 OpenJDK(如有)

CentOS 7 默认预装 OpenJDK,需先卸载以避免版本冲突:

bash 复制代码
# 1.1 查看已安装的 Java 相关包
rpm -qa | grep -i java

# 示例输出(可能包含以下一个或多个包):
# java-1.8.0-openjdk-headless-1.8.0.372.b07-1.el7_9.x86_64
# tzdata-java-2023g-1.el7.noarch
# java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64

# 1.2 卸载所有 OpenJDK 相关包(强制删除,忽略依赖)
sudo rpm -e --nodeps $(rpm -qa | grep -i openjdk)
sudo rpm -e --nodeps $(rpm -qa | grep -i tzdata-java)

# 1.3 验证卸载结果(应无输出)
java -version

3.安装 Oracle JDK(通过压缩包部署,推荐 1.8 或 11)

注意:JDK 版本兼容性

  • Hadoop 3.x 支持 Java 8/11,避免使用 Java 17+(可能存在类缺失问题)。

3.1 下载 JDK 安装包

Oracle JDK 官网 下载对应版本(如 jdk-8u371-linux-x64.tar.gz),上传至服务器(如 /opt/software/ 目录)。

bash 复制代码
cd /opt/software/	#进入到/opt/software文件夹下
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u371-b07/3d5a2bb8f8d4428bbe94aed7ec7ae784/jdk-8u371-linux-x64.tar.gz	#网络请求Oracle JDK官网对应版本JDK包

3.2 解压并安装 JDK

bash 复制代码
# 创建安装目录(推荐 /usr/local/java/)
sudo mkdir -p /usr/local/java/

# 解压到目标目录(注意替换实际文件名)
sudo tar -zxvf jdk-8u371-linux-x64.tar.gz -C /usr/local/java/

# 重命名为简洁名称(可选)
sudo mv /usr/local/java/jdk1.8.0_371 /usr/local/java/jdk8

3.3 配置环境变量

bash 复制代码
sudo vi /etc/profile  # 或编辑当前用户的 ~/.bash_profile 或者是 ~/.bashrc

# 添加以下内容(按实际 JDK 路径修改):
export JAVA_HOME=/usr/local/java/jdk8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

# 使配置生效
source /etc/profile

# 验证安装(输出 JDK 版本)
java -version

4.配置本地免密码登录(Hadoop 服务启动依赖)

Hadoop 脚本会通过 SSH 协议本地通信,需配置免密登录以避免交互验证:

bash 复制代码
# 4.1 生成 SSH 密钥对(一路回车,不设密码)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

# 4.2 将公钥添加到本地授权列表
mkdir -p ~/.ssh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 4.3 设置文件权限(关键!否则 SSH 可能拒绝登录)
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

# 4.4 测试免密登录(应直接进入,无需密码)
ssh localhost
exit  # 退出 SSH 会话

4.下载并安装 Hadoop

4.1 下载 Hadoop

从官网下载稳定版(如hadoop-3.3.6.tar.gz),解压到指定目录:

bash 复制代码
tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/	#解压操作,解压到/usr/local
cd /usr/local/
sudo mv hadoop-3.3.6 hadoop  # 重命名方便后续操作

4.2 配置环境变量

编辑~/.bashrc/etc/profile或者当前用户的 ~/.bash_profile,添加内容:

hadoop 复制代码
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效:

bash 复制代码
source ~/.bashrc

5.配置 Hadoop 核心文件

Hadoop 通过 XML 文件配置,需修改以下 4 个文件(路径:$HADOOP_HOME/etc/hadoop/)。

(1) core-site.xml

配置 HDFS 的默认地址和临时目录:

xml 复制代码
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>  # HDFS默认地址(伪分布式)
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>  # 临时文件存储路径(需手动创建)
  </property>
</configuration>

(2) hdfs-site.xml

配置 HDFS 副本数(伪分布式下设为 1,因只有一个 DataNode):

xml 复制代码
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

(3) mapred-site.xml

配置 MapReduce 框架使用 YARN:

xml 复制代码
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

(4) yarn-site.xml

配置 YARN 的 ResourceManager 地址和 NodeManager 的环境变量:

xml 复制代码
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

5.1 初始化 HDFS 文件系统

格式化 NameNode(首次启动必做,且仅需执行一次):

bash 复制代码
hdfs namenode -format

5.2 启动服务

依次启动 HDFS 和 YARN 服务:

bash 复制代码
start-dfs.sh  # 启动HDFS(NameNode、DataNode)
start-yarn.sh  # 启动YARN(ResourceManager、NodeManager)

5.3 验证安装

  • 查看进程
bash 复制代码
jps  # 应包含NameNode、DataNode、ResourceManager、NodeManager、Jps等进程
bash 复制代码
systemctl stop firewalld	#关闭防火墙
systemctl disable firewall	#关闭开机自启
  • 简单操作测试
bash 复制代码
# 在HDFS创建目录
hdfs dfs -mkdir -p /user/hadoop  

# 上传本地文件到HDFS
hdfs dfs -put /etc/profile /user/hadoop  

# 查看HDFS文件列表
hdfs dfs -ls /user/hadoop  

三、伪分布式 vs 完全分布式 vs 单机模式

模式 节点数 组件部署 用途
单机模式 1 仅运行非分布式进程(无守护进程) 快速验证程序逻辑(无分布式功能)
伪分布式 1 所有分布式组件运行在同一节点 学习、调试、本地测试
完全分布式 ≥2 各组件分布在不同节点(主从架构) 生产环境大规模数据处理

四、常见问题与注意事项

  1. 端口冲突 :若 9000、8088 等端口被占用,需修改配置文件中的端口号(如fs.defaultFS改为hdfs://localhost:9001)。

  2. 权限问题:避免用sudo启动服务(可能导致文件权限混乱),建议用普通用户操作,或提前设置目录权限:

    bash 复制代码
    chown -R $USER:$USER /usr/local/hadoop  # 赋予当前用户目录所有权
  3. 日志排查 :启动失败时,查看$HADOOP_HOME/logs/下的日志文件(如hadoop-${USER}-namenode-${HOSTNAME}.log)。

  4. 关闭服务 :用stop-dfs.shstop-yarn.sh正常停止,避免直接 kill 进程导致数据不一致。

五、总结

通过以上详细的步骤,我们完成了 Hadoop 伪分布式的安装、配置与验证,对其特点、适用场景也有了更深入的了解。这种轻量级且功能强大的部署方式,无疑是初学者探索 Hadoop 世界的一把金钥匙,更是开发者在本地调试与学习过程中的得力助手。

然而,Hadoop 的魅力远不止于此。在大数据的浪潮中,它是处理海量数据的中坚力量,每一次的操作都像是在与数据进行一场深度对话。想象一下,当你掌握了 Hadoop 伪分布式的精髓,你就能够更加自由地在数据的海洋中遨游,挖掘出那些隐藏在数据背后的宝贵信息。

如果你在安装过程中遇到了任何问题,或者有独特的经验想要分享,欢迎在评论区留言讨论。让我们一起在大数据的征程中携手共进,探索更多的可能性!

别忘了点赞👍、收藏和分享这篇文章,让更多对 Hadoop 感兴趣的朋友能够受益。关注我,获取更多关于大数据技术的精彩内容,一起解锁大数据领域的无限潜力!期待与你在大数据的世界中再次相遇!

相关推荐
CHrisFC2 小时前
江苏硕晟LIMS:坚守合规底线,构建生态监测信息管理合规体系
大数据·人工智能
武子康3 小时前
大数据-213 Python 手写 K-Means 聚类实战(鸢尾花 Iris 数据集):从距离函数到迭代收敛与坑点
大数据·后端·机器学习
零售ERP菜鸟3 小时前
安全与合规的确定性保障:构建“内置安全”的弹性防线
大数据·人工智能·职场和发展·创业创新·学习方法·业界资讯
科创致远3 小时前
国内ESOP电子作业系统头部企业格局与科创致远技术发展历程
大数据·数据库·人工智能·嵌入式硬件·精益工程
tebukaopu1483 小时前
es searchSourceBuilder.trackTotalHits(true);的作用
大数据·elasticsearch·搜索引擎
福客AI智能客服3 小时前
图像识别落地:AI智能客服系统重塑电瓶车尾箱头盔电商服务
大数据·人工智能·机器人
合合技术团队3 小时前
跨越AI落地“最后一公里”,合合信息推出多模态文本智能AI产品矩阵
大数据·人工智能
kuankeTech3 小时前
从经验驱动到数据驱动:外贸ERP打通大宗矿业企业管理“任督二脉”
大数据·人工智能·经验分享·软件开发·erp
YangYang9YangYan3 小时前
2026高职大数据与财务管理专业学数据分析的技术价值分析
大数据·数据挖掘·数据分析