Hadoop 3.1.3 伪分布式环境搭建:Ubuntu 18.04 下 5 步完成配置与验证

📅 2026/7/11 18:19:52 👁️ 阅读次数 📝 编程学习
Hadoop 3.1.3 伪分布式环境搭建:Ubuntu 18.04 下 5 步完成配置与验证

Hadoop 3.1.3 伪分布式环境搭建:Ubuntu 18.04 实战指南

1. 环境准备与基础配置

在开始Hadoop伪分布式环境搭建前,需要确保系统环境满足基本要求。Ubuntu 18.04 LTS作为长期支持版本,提供了稳定的基础运行环境。以下是详细的准备工作:

系统要求

  • Ubuntu 18.04 LTS 64位系统
  • 至少4GB内存(推荐8GB)
  • 20GB可用磁盘空间
  • 稳定的网络连接

首先更新系统软件包并安装必要工具:

sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y ssh pdsh vim git curl wget

Java环境配置: Hadoop 3.1.3需要Java 8运行环境,执行以下命令安装OpenJDK:

sudo apt-get install -y openjdk-8-jdk

验证Java安装是否成功:

java -version

提示:如果系统已安装其他Java版本,可通过update-alternatives --config java切换默认版本

创建专用Hadoop用户能提高系统安全性:

sudo adduser hadoop sudo usermod -aG sudo hadoop su - hadoop

2. SSH免密登录配置

Hadoop集群管理需要SSH免密登录支持,即使单节点伪分布式环境也需要此配置。

生成SSH密钥对:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys

测试SSH连接:

ssh localhost

若仍需输入密码,检查权限设置:

chmod 0700 ~/.ssh chmod 0600 ~/.ssh/*

3. Hadoop安装与核心配置

从Apache官网下载Hadoop 3.1.3二进制包:

wget https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz tar -xzvf hadoop-3.1.3.tar.gz sudo mv hadoop-3.1.3 /usr/local/hadoop

设置环境变量(添加到~/.bashrc末尾):

export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

使配置立即生效:

source ~/.bashrc

核心配置文件修改

  1. hadoop-env.sh:
echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
  1. core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-tmp</value> </property> </configuration>
  1. hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/tmp/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/tmp/hadoop/dfs/data</value> </property> </configuration>
  1. mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
  1. yarn-site.xml:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</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>

4. HDFS初始化与集群启动

格式化HDFS文件系统(仅首次需要):

hdfs namenode -format

启动HDFS和YARN服务:

start-dfs.sh start-yarn.sh

验证服务是否正常启动:

jps

正常应看到以下进程:

  • NameNode
  • DataNode
  • ResourceManager
  • NodeManager
  • SecondaryNameNode

Web管理界面访问

  • NameNode: http://localhost:9870
  • ResourceManager: http://localhost:8088

5. 运行WordCount验证环境

创建测试目录并上传文件:

hdfs dfs -mkdir -p /user/hadoop/input hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/hadoop/input

运行WordCount示例:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/hadoop/input /user/hadoop/output

查看结果:

hdfs dfs -cat /user/hadoop/output/*

常见问题排查

问题现象可能原因解决方案
无法访问Web界面防火墙阻止sudo ufw disable临时关闭防火墙
DataNode未启动多次格式化导致UUID不一致删除/tmp/hadoop*目录后重新格式化
内存不足默认配置过高修改yarn-site.xml中的内存参数

6. 日常管理与维护

服务启停命令

# 启动所有服务 start-all.sh # 停止所有服务 stop-all.sh # 单独启停组件 hadoop-daemon.sh start|stop namenode hadoop-daemon.sh start|stop datanode yarn-daemon.sh start|stop resourcemanager

日志文件位置

  • NameNode日志: $HADOOP_HOME/logs/hadoop-hadoop-namenode-*.log
  • DataNode日志: $HADOOP_HOME/logs/hadoop-hadoop-datanode-*.log
  • YARN日志: $HADOOP_HOME/logs/yarn-hadoop-*.log

性能优化建议

  1. 调整JVM堆内存大小(hadoop-env.sh)
  2. 合理设置HDFS块大小(dfs.blocksize)
  3. 配置MapReduce任务内存参数(mapred-site.xml)
  4. 启用压缩减少IO开销

7. 进阶配置与扩展

启用历史服务器: 在mapred-site.xml中添加:

<property> <name>mapreduce.jobhistory.address</name> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property>

启动历史服务器:

mr-jobhistory-daemon.sh start historyserver

HDFS快照功能

hdfs dfsadmin -allowSnapshot /user hdfs dfs -createSnapshot /user my_snapshot

安全模式操作

# 进入安全模式 hdfs dfsadmin -safemode enter # 离开安全模式 hdfs dfsadmin -safemode leave # 检查状态 hdfs dfsadmin -safemode get

在实际项目中,伪分布式环境适合开发测试阶段使用。当需要处理更大规模数据时,可以考虑迁移到完全分布式集群环境。