HDFS在CentOS上如何正确配置
小樊
33
2025-12-19 19:50:05
在 CentOS 上配置 HDFS 的正确步骤
一 环境准备
- 操作系统建议使用 CentOS 7/8,更新系统并安装基础工具:sudo yum update -y && sudo yum install -y wget tar openssh-server openssh-clients。
- 安装 Java 8(Hadoop 3.x 常用):sudo yum install -y java-1.8.0-openjdk-devel;验证:java -version。
- 配置 SSH 免密登录(单机伪分布式也建议配置,便于启动脚本):ssh-keygen -t rsa -P “”,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;如需多机部署,将公钥分发到各节点。
- 配置 主机名与 hosts:编辑 /etc/hosts,确保 namenode 与 datanode 主机名可解析。
- 防火墙放行端口或临时关闭:firewall-cmd --permanent --add-port=9000/tcp; firewall-cmd --permanent --add-port=50070/tcp; firewall-cmd --reload(或 systemctl stop firewalld 仅测试环境)。
二 安装与环境变量
- 下载并解压 Hadoop(示例版本 3.3.1):
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
- 设置环境变量(推荐写入 /etc/profile.d/hadoop.sh):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使生效:source /etc/profile.d/hadoop.sh
- 在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中显式设置:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk。
三 核心配置
- 配置 $HADOOP_HOME/etc/hadoop/core-site.xml:
fs.defaultFS
hdfs://namenode:9000
hadoop.tmp.dir
/usr/local/hadoop/tmp
- 配置 $HADOOP_HOME/etc/hadoop/hdfs-site.xml(单机伪分布式示例,副本数设为 1):
dfs.replication
1
dfs.namenode.name.dir
/usr/local/hadoop/data/namenode
dfs.datanode.data.dir
/usr/local/hadoop/data/datanode
- 多机部署要点:将 fs.defaultFS 指向 namenode 主机名:9000;各节点的 dfs.namenode.name.dir 与 dfs.datanode.data.dir 使用本地绝对路径;确保 所有节点 hadoop.tmp.dir 一致 且目录可写。
四 启动与验证
- 首次启动前格式化 NameNode:hdfs namenode -format(仅首次)。
- 启动 HDFS:start-dfs.sh;如需 YARN 可再执行 start-yarn.sh。
- 进程检查:jps,应看到 NameNode、DataNode(及 SecondaryNameNode/ResourceManager/NodeManager 等,视配置而定)。
- Web 界面:访问 http://<namenode_ip>:50070 查看 HDFS 状态;YARN 为 http://<resourcemanager_ip>:8088。
- 基本操作验证:
hdfs dfs -mkdir -p /user/test
hdfs dfs -put /etc/hosts /user/test
hdfs dfs -ls /user/test。
五 常见问题与关键参数优化
- 目录与权限:确保 namenode/datanode 数据目录 存在且属运行用户;生产建议启用权限:dfs.permissions.enabled=true。
- 关键参数建议:
- 块大小:dfs.blocksize=134217728(即 128MB,Hadoop 2.6+ 默认值)。
- 副本数:dfs.replication 生产常用 3(单机测试用 1)。
- NameNode 并发:dfs.namenode.handler.count 可按集群规模调优,经验值约为 20·log(N)。
- DataNode 传输线程:dfs.datanode.max.transfer.threads(旧名 dfs.datanode.max.xcievers)建议 8192。
- 磁盘保留:dfs.datanode.du.reserved 每盘建议预留 10GB,避免磁盘被 MapReduce 写满。
- 回收站:core-site.xml 中设置 fs.trash.interval=1440(分钟),误删可恢复。
- 时间同步:集群节点建议启用 NTP 同步,避免 NameNode/DataNode 心跳异常。
- 防火墙与端口:生产环境不建议直接关闭防火墙,按需放行 9000、50070、50075、50090 等端口。