1. 环境准备与基础配置
在CentOS 7上部署Hadoop 3集群前,需要完成一系列基础环境准备工作。我通常会选择最小化安装的CentOS 7系统作为基础环境,这样既能保证系统纯净度,又能减少不必要的资源占用。
1.1 系统更新与依赖安装
首先执行系统更新和基础工具安装:
bash复制yum update -y
yum install -y wget curl tar openssl openssh-server openssh-clients java-1.8.0-openjdk-devel
这里有几个关键点需要注意:
- 必须安装完整的JDK开发包(java-1.8.0-openjdk-devel),仅安装JRE会导致后续编译失败
- SSH服务必须启用并配置免密登录,这是Hadoop节点间通信的基础
- 建议使用OpenJDK 8,这是Hadoop 3.x官方推荐的Java版本
1.2 创建专用用户
为Hadoop创建专用用户是个好习惯:
bash复制groupadd hadoop
useradd -g hadoop hduser
passwd hduser # 设置密码
配置sudo权限(可选):
bash复制echo "hduser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
1.3 SSH免密登录配置
Hadoop集群管理需要SSH免密登录:
bash复制su - hduser
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
测试SSH连接:
bash复制ssh localhost
如果仍需输入密码,检查以下配置:
bash复制sudo vi /etc/ssh/sshd_config
确保以下参数设置正确:
code复制RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Hadoop 3安装与配置
2.1 下载与解压
选择稳定版本的Hadoop 3.x(当前最新为3.3.6):
bash复制wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.6 /opt/hadoop
chown -R hduser:hadoop /opt/hadoop*
2.2 环境变量配置
编辑~/.bashrc文件:
bash复制export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=$(readlink -f /usr/bin/java | sed 's:bin/java::')
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
使配置生效:
bash复制source ~/.bashrc
验证安装:
bash复制hadoop version
2.3 核心配置文件修改
Hadoop的核心配置文件位于$HADOOP_HOME/etc/hadoop目录下,需要修改以下几个关键文件:
2.3.1 hadoop-env.sh
bash复制export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export HADOOP_HOME=/opt/hadoop
export HADOOP_LOG_DIR=/var/log/hadoop
2.3.2 core-site.xml
xml复制<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
2.3.3 hdfs-site.xml
xml复制<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/data</value>
</property>
</configuration>
2.3.4 mapred-site.xml
xml复制<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.3.5 yarn-site.xml
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>
3. 初始化与启动
3.1 格式化HDFS
首次使用前需要格式化NameNode:
bash复制hdfs namenode -format
警告:格式化操作会清除所有HDFS数据,只能在首次安装时执行!
3.2 启动HDFS服务
启动NameNode和DataNode:
bash复制start-dfs.sh
验证服务:
bash复制jps
应该看到以下进程:
- NameNode
- DataNode
- SecondaryNameNode
3.3 启动YARN服务
启动YARN资源管理器:
bash复制start-yarn.sh
再次验证:
bash复制jps
新增进程:
- ResourceManager
- NodeManager
3.4 Web UI访问
Hadoop提供了Web管理界面:
- HDFS: http://localhost:9870
- YARN: http://localhost:8088
如果无法访问,检查防火墙设置:
bash复制sudo firewall-cmd --permanent --add-port=9870/tcp
sudo firewall-cmd --permanent --add-port=8088/tcp
sudo firewall-cmd --reload
4. 常见问题与解决方案
4.1 Java环境问题
错误现象:
code复制Error: JAVA_HOME is not set and could not be found
解决方案:
- 确认JAVA_HOME在hadoop-env.sh中正确设置
- 检查Java安装路径:
bash复制readlink -f /usr/bin/java | sed 's:bin/java::'
4.2 端口冲突问题
错误现象:
code复制java.net.BindException: Port in use
解决方案:
- 查看端口占用:
bash复制netstat -tulnp | grep <端口号>
- 修改hdfs-site.xml中的默认端口或停止冲突服务
4.3 权限问题
错误现象:
code复制Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
解决方案:
- 确保SSH免密登录配置正确
- 检查authorized_keys文件权限为600
- 确认SELinux状态:
bash复制getenforce
如果为Enforcing,临时关闭:
bash复制setenforce 0
4.4 磁盘空间不足
错误现象:
code复制Could only write 0 bytes to the FSOutputStream
解决方案:
- 检查磁盘空间:
bash复制df -h
- 清理日志文件或调整HDFS数据目录位置
5. 性能优化建议
5.1 内存配置调整
根据服务器配置调整内存参数(在yarn-site.xml中):
xml复制<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value> <!-- 根据实际内存调整 -->
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
5.2 HDFS块大小优化
对于大文件处理场景,可以增大HDFS块大小(hdfs-site.xml):
xml复制<property>
<name>dfs.blocksize</name>
<value>268435456</value> <!-- 256MB -->
</property>
5.3 数据本地化优化
配置机架感知策略,编辑$HADOOP_HOME/etc/hadoop/topology.sh:
bash复制#!/bin/bash
# 这里根据实际网络拓扑返回机架信息
echo "/default-rack"
然后在core-site.xml中启用:
xml复制<property>
<name>net.topology.script.file.name</name>
<value>/opt/hadoop/etc/hadoop/topology.sh</value>
</property>
6. 安全配置建议
6.1 启用HDFS权限检查
在hdfs-site.xml中启用权限检查:
xml复制<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
6.2 配置YARN ACL
在yarn-site.xml中配置访问控制:
xml复制<property>
<name>yarn.acl.enable</name>
<value>true</value>
</property>
<property>
<name>yarn.admin.acl</name>
<value>hduser</value>
</property>
6.3 日志文件轮转
配置日志文件大小和保留策略(在log4j.properties中):
code复制hadoop.log.maxfilesize=256MB
hadoop.log.maxbackupindex=10
