CentOS下HDFS单机模式部署指南与实践
2025.09.17 11:04浏览量:0简介:本文详细阐述在CentOS系统上部署HDFS单机模式的完整流程,涵盖环境准备、安装配置、启动验证及故障排查,为开发者提供可复用的技术方案。
一、部署前环境准备与注意事项
1.1 系统版本与软件依赖
CentOS 7/8是HDFS部署的稳定选择,需确认系统内核版本≥3.10(通过uname -r
查看)。建议使用全新安装的CentOS最小化版本,避免残留配置干扰。依赖包包括Java JDK 1.8+(OpenJDK或Oracle JDK)、wget、tar等基础工具,可通过yum install -y java-1.8.0-openjdk wget tar
快速安装。
1.2 防火墙与SELinux配置
HDFS默认使用9000(NameNode RPC)、50070(Web UI)等端口,需在防火墙放行:
sudo firewall-cmd --zone=public --add-port={9000,50070,50075,8020}/tcp --permanent
sudo firewall-cmd --reload
SELinux需设置为permissive模式或禁用:
sudo setenforce 0 # 临时关闭
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 永久修改
1.3 用户与目录权限
创建专用用户hdfs
并设置密码:
sudo useradd hdfs
sudo passwd hdfs
创建数据存储目录并授权:
sudo mkdir -p /opt/hadoop/data/{namenode,datanode}
sudo chown -R hdfs:hdfs /opt/hadoop
二、Hadoop安装与配置详解
2.1 版本选择与下载
推荐Hadoop 3.3.x系列(如3.3.6),兼容性最佳。通过清华镜像站下载:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzf hadoop-3.3.6.tar.gz -C /opt/
sudo ln -s /opt/hadoop-3.3.6 /opt/hadoop
2.2 核心配置文件修改
2.2.1 hadoop-env.sh配置
设置JAVA_HOME并调整内存参数:
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /opt/hadoop/etc/hadoop/hadoop-env.sh
echo "export HADOOP_HEAPSIZE=1024" >> /opt/hadoop/etc/hadoop/hadoop-env.sh
2.2.2 core-site.xml配置
定义HDFS基础参数:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data/tmp</value>
</property>
</configuration>
2.2.3 hdfs-site.xml配置
配置单机模式存储路径:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单机模式设为1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
</configuration>
2.3 环境变量配置
在/etc/profile
末尾添加:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
执行source /etc/profile
使配置生效。
三、HDFS服务启动与验证
3.1 格式化NameNode
首次启动前需格式化存储目录:
sudo -u hdfs hdfs namenode -format
观察输出中”Storage directory … has been successfully formatted”确认成功。
3.2 启动HDFS服务
使用start-dfs.sh
脚本启动所有服务:
sudo -u hdfs $HADOOP_HOME/sbin/start-dfs.sh
通过jps
验证进程:
28456 NameNode
28789 DataNode
29012 SecondaryNameNode
3.3 Web界面验证
访问http://<服务器IP>:50070
,应看到Dashboard显示:
- “Live Nodes”数量为1
- “Configured Capacity”显示正确存储空间
- “Dfs Used”随文件操作变化
3.4 基础命令测试
创建测试目录并上传文件:
sudo -u hdfs hdfs dfs -mkdir /test
sudo -u hdfs hdfs dfs -put /etc/hosts /test/
sudo -u hdfs hdfs dfs -ls /test
四、常见问题与解决方案
4.1 端口冲突处理
若9000端口被占用,修改core-site.xml
中的fs.defaultFS
为其他端口(如9001),同时更新防火墙规则。
4.2 权限拒绝错误
出现”Permission denied”时,检查:
- 数据目录权限是否属于
hdfs
用户 - SELinux是否处于permissive模式
- 使用
hdfs dfs -chmod
调整HDFS目录权限
4.3 内存不足问题
当出现”OutOfMemoryError”时,调整hadoop-env.sh
中的:
export HADOOP_NAMENODE_OPTS="-Xmx2048m"
export HADOOP_DATANODE_OPTS="-Xmx1024m"
五、性能优化建议
5.1 本地缓存配置
在hdfs-site.xml
中启用本地缓存:
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
5.2 I/O性能调优
调整块大小和副本数:
<property>
<name>dfs.blocksize</name>
<value>134217728</value> <!-- 128MB -->
</property>
<property>
<name>dfs.datanode.handler.count</name>
<value>10</value>
</property>
六、维护与监控
6.1 日志管理
配置日志滚动策略,在log4j.properties
中设置:
log4j.appender.DRFA.MaxFileSize=100MB
log4j.appender.DRFA.MaxBackupIndex=10
6.2 监控工具集成
推荐使用Ganglia或Prometheus监控:
- 启用HDFS的JMX接口:
<property>
<name>hadoop.metrics.enable</name>
<value>true</value>
</property>
- 配置Prometheus的JMX Exporter采集指标
6.3 定期维护脚本
创建/usr/local/bin/hdfs_maint.sh
:
#!/bin/bash
# 清理过期日志
find /opt/hadoop/logs -name "*.log.*" -mtime +30 -delete
# 检查磁盘空间
df -h /opt/hadoop/data
# 运行HDFS检查
sudo -u hdfs hdfs fsck / -files -blocks -locations
通过以上步骤,可在CentOS上完成稳定的HDFS单机部署。实际生产环境中,建议结合集群部署方案提升可用性,但单机模式在开发测试、边缘计算等场景仍具有重要价值。部署完成后,建议通过压力测试验证系统稳定性,典型测试命令包括:
# 生成1GB测试文件
dd if=/dev/zero of=testfile bs=1M count=1024
# 上传并验证
sudo -u hdfs hdfs dfs -put testfile /test/
sudo -u hdfs hdfs dfs -cat /test/testfile | wc -c
发表评论
登录后可评论,请前往 登录 或 注册