在 CentOS 7 系统上部署 Hadoop 2.8 是构建大数据处理平台的一个经典且稳定的选择,这套组合以其成熟性、稳定性和广泛的社区支持,成为许多企业和开发者入门与实践大数据技术的基石,本文将详细介绍在 CentOS 7 环境下,从零开始搭建一个 Hadoop 2.8 伪分布式集群的完整流程,涵盖环境准备、核心配置、启动验证等关键步骤。

环境准备
在安装 Hadoop 之前,必须确保系统环境满足其运行的基本要求,一个干净、配置正确的环境是后续工作顺利进行的前提。
安装 Java 环境 Hadoop 是基于 Java 开发的,Java 开发工具包(JDK)是必需的,Hadoop 2.8 官方推荐使用 JDK 1.7 或 1.8 版本,这里以 JDK 1.8 为例。
可以通过 yum 命令进行安装:
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
安装完成后,需要配置 JAVA_HOME 环境变量,编辑 /etc/profile 文件,在文件末尾添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$PATH:$JAVA_HOME/bin
保存并退出后,执行 source /etc/profile 使配置立即生效,通过 java -version 和 echo $JAVA_HOME 命令验证安装与配置是否成功。
创建 Hadoop 专用用户 出于安全和管理便利性的考虑,建议为 Hadoop 创建一个独立的用户,而不是直接使用 root 用户。
sudo useradd hadoop sudo passwd hadoop
后续的所有 Hadoop 相关操作,都将在此用户下进行。
配置 SSH 免密登录 Hadoop 集群内部节点(即使是伪分布式模式的本地节点)之间的通信依赖于 SSH,配置免密登录可以简化启动流程。
切换到 hadoop 用户,并执行以下命令:
su - hadoop ssh-keygen -t rsa
一路按回车键,生成密钥对,然后将公钥追加到授权列表中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
修改 .ssh 目录权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
通过 ssh localhost 命令测试,若无需输入密码即可登录,则配置成功。

关闭防火墙和 SELinux 在学习和测试环境中,为了简化网络配置,可以暂时关闭防火墙和 SELinux。
sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0
编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 修改为 SELINUX=disabled,确保系统重启后也保持关闭状态。
Hadoop 下载与核心配置
下载与解压
从 Apache Hadoop 官方归档网站下载 Hadoop 2.8.x 的稳定版本(hadoop-2.8.5.tar.gz),使用 wget 命令下载或下载后上传至服务器。
解压安装包并创建一个方便管理的软链接:
tar -zxvf hadoop-2.8.5.tar.gz -C /usr/local cd /usr/local sudo ln -s hadoop-2.8.5 hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop
配置环境变量
同样地,将 Hadoop 的路径加入到环境变量中,编辑 /etc/profile 文件,追加:
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source /etc/profile 使其生效。
修改 Hadoop 核心配置文件
进入 $HADOOP_HOME/etc/hadoop 目录,这里是 Hadoop 所有配置文件的所在地,伪分布式模式主要需要修改以下几个文件:
hadoop-env.sh: 确保JAVA_HOME路径正确。export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
core-site.xml: 配置 HDFS 的默认文件系统地址和 Hadoop 临时目录。<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> </property> </configuration>hdfs-site.xml: 配置 HDFS 的副本数量(伪分布式设为1)以及数据存储目录。<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>yarn-site.xml: 配置 YARN 相关的服务。<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>mapred-site.xml: 此文件需要先从模板mapred-site.xml.template复制而来,配置 MapReduce 运行在 YARN 框架上。cp mapred-site.xml.template mapred-site.xml
然后编辑
mapred-site.xml:<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
为了更清晰地展示配置,以下是一个核心配置文件的小编总结表格:
| 配置文件 | 属性 | 建议值 | 
|---|---|---|
core-site.xml | 
fs.defaultFS | 
hdfs://localhost:9000 | 
core-site.xml | 
hadoop.tmp.dir | 
file:/usr/local/hadoop/tmp | 
hdfs-site.xml | 
dfs.replication | 
1 | 
yarn-site.xml | 
yarn.nodemanager.aux-services | 
mapreduce_shuffle | 
mapred-site.xml | 
mapreduce.framework.name | 
yarn | 
格式化与启动
格式化 NameNode 在首次启动 HDFS 之前,必须对 NameNode 进行格式化,这个操作会初始化 HDFS 的文件系统元数据。注意:此操作会清空所有 HDFS 数据,且只需执行一次。
hdfs namenode -format
在输出日志中看到 "has been successfully formatted" 字样,即表示格式化成功。
启动 Hadoop 集群 Hadoop 的启动脚 conveniently 分为 HDFS 和 YARN 两部分。

# 启动 HDFS start-dfs.sh # 启动 YARN start-yarn.sh
也可以使用一条命令同时启动:start-all.sh。
启动后,使用 jps 命令查看 Java 进程,伪分布式模式下,应该能看到 NameNode、DataNode、SecondaryNameNode、ResourceManager 和 NodeManager 这几个核心进程。
验证安装
Web UI 界面验证 Hadoop 提供了直观的 Web 界面来监控集群状态。
- HDFS 管理界面:
http://<服务器IP>:50070 - YARN 资源管理界面:
http://<服务器IP>:8088通过浏览器访问这些地址,可以查看集群概况、节点状态、存储信息以及正在运行的任务等。 
运行 MapReduce 示例
Hadoop 自带了一些示例程序,可以用来验证整个集群是否工作正常,以经典的 WordCount 为例:
# 在 HDFS 上创建输入目录 hdfs dfs -mkdir -p /user/hadoop/input # 将本地文件上传到 HDFS hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml input # 运行 WordCount 作业 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output # 查看运行结果 hdfs dfs -cat output/part-r-00000
如果能看到单词计数的输出结果,恭喜你,Hadoop 2.8 伪分布式环境已经成功搭建并运行。
相关问答FAQs
Q1: 为什么每次启动 Hadoop 前都要格式化 NameNode?这有必要吗?
A: 这是一个常见的误解。NameNode 格式化只需要在首次安装部署时执行一次。 格式化(hdfs namenode -format)的作用是初始化 HDFS 的文件系统元数据,它会创建并清空 NameNode 和 DataNode 的工作目录,如果在已有数据的集群上再次执行格式化,会导致所有元数据丢失,造成数据灾难,除非你希望彻底清空并重建整个 HDFS 文件系统,否则切勿重复格式化,正常情况下,每次重启服务器或 Hadoop 服务,直接使用 start-dfs.sh 和 start-yarn.sh 启动即可。
Q2: 如何检查 Hadoop 集群的整体状态是否健康?
A: 检查 Hadoop 集群状态有多种方法,可以结合使用:
- jps 命令:这是最直接的方式,在集群的每个节点上执行 
jps,检查所有必需的守护进程是否都已启动,对于伪分布式模式,应该看到 NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager,缺少任何一个进程都意味着相应组件启动失败,需要查看日志排查。 - Web UI:这是最直观的方式,通过访问 NameNode 的 50070 端口,可以查看 HDFS 的总体容量、使用情况、存活 DataNode 数量等,通过访问 ResourceManager 的 8088 端口,可以查看集群资源总量、已用资源、正在运行和已完成的任务列表,UI 会用颜色和状态图标清晰地标识集群的健康状况。
 - HDFS 命令:执行如 
hdfs dfsadmin -report这样的命令,可以在终端获取一份详细的集群报告,包括每个 DataNode 的容量和使用情况,执行hdfs dfs -ls /可以检查文件系统根目录是否可访问。