系统要求
安装Java环境(JDK 8+)
Hadoop依赖Java运行,需先安装OpenJDK 8:
sudo yum install -y java-1.8.0-openjdk-devel
# 验证安装
java -version # 应输出Java 1.8版本信息
下载并解压Hadoop
从Apache Hadoop官网下载稳定版本(如3.3.1),解压至/usr/local/:
cd /usr/local
sudo wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
sudo tar -xzvf hadoop-3.3.1.tar.gz
sudo mv hadoop-3.3.1 hadoop # 重命名为hadoop方便管理
配置Hadoop环境变量
编辑/etc/profile.d/hadoop.sh(全局生效),添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # Java安装路径(通过`which java`确认)
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source /etc/profile.d/hadoop.sh
# 验证Hadoop命令
hadoop version # 应输出Hadoop版本信息
配置SSH无密码登录(单机模式可选,集群必需)
若需实现NameNode与DataNode的无密码通信,执行以下命令:
ssh-keygen -t rsa # 生成密钥对(直接回车,默认路径)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥加入授权文件
chmod 600 ~/.ssh/authorized_keys # 设置权限
# 测试无密码登录
ssh localhost # 应无需输入密码直接登录
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下4个核心文件:
定义HDFS的默认文件系统和临时目录:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- HDFS的默认URI,localhost表示单机 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- Hadoop临时文件目录(需手动创建) -->
</property>
</configuration>
配置NameNode、DataNode的存储路径及副本数(单机模式副本数为1):
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 数据块副本数(集群中需调整为大于1的值) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
指定MapReduce框架为YARN(需先配置YARN):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- MapReduce运行在YARN上 -->
</property>
</configuration>
配置ResourceManager和NodeManager的辅助服务:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- NodeManager提供的辅助服务(Shuffle) -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value> <!-- Shuffle服务的具体实现 -->
</property>
</configuration>
格式化HDFS(首次启动必需)
格式化会清除HDFS中的所有数据,仅首次启动时执行:
hdfs namenode -format
启动Hadoop集群
启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
验证集群状态
使用jps命令查看进程:
jps
正常应输出以下进程(单机模式):
也可通过Web界面查看集群状态(默认端口):
http://localhost:9870http://localhost:8088端口冲突
若启动时报端口被占用(如9000、50070),可通过netstat -tulnp | grep 端口号查找占用进程,杀掉冲突进程或修改core-site.xml中的端口。
权限问题
若出现Permission denied错误,需检查Hadoop目录的权限(如/usr/local/hadoop),确保hadoop用户有读写权限:
sudo chown -R hadoop:hadoop /usr/local/hadoop
环境变量未生效
若hadoop version报错,需重新执行source /etc/profile或重启终端。
通过以上步骤,即可在CentOS上完成Hadoop的单机/伪分布式安装与配置。如需扩展为多节点集群,只需在每台节点上重复安装步骤,并修改core-site.xml中的fs.defaultFS为NameNode的实际IP地址,同时调整hdfs-site.xml中的dfs.replication为集群节点数即可。