HDFS集群在CentOS如何配置
小樊
35
2025-12-15 20:35:22
在CentOS上配置HDFS集群
一 环境准备
- 操作系统与网络
- 建议使用CentOS 7/8,节点间通过主机名互通,统一配置**/etc/hosts**;确保SSH可用(安装并启动服务)。
- Java
- 安装OpenJDK 8(或Oracle JDK 8):sudo yum install -y java-1.8.0-openjdk-devel。
- Hadoop
- 下载并解压(示例版本3.3.4):
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
- 无密码SSH
- 在各节点生成密钥并将公钥分发至集群所有节点:
ssh-keygen -t rsa
ssh-copy-id hadoop@node2
ssh-copy-id hadoop@node3
- 时间同步
二 安装与基础配置
- 环境变量
- 新建文件**/etc/profile.d/hadoop.sh**:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使生效:source /etc/profile.d/hadoop.sh
- 配置Hadoop环境脚本
- 编辑**$HADOOP_HOME/etc/hadoop/hadoop-env.sh**:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- 核心配置文件
- core-site.xml:
fs.defaultFS
hdfs://namenode:9000
- hdfs-site.xml:
dfs.replication
3
dfs.namenode.name.dir
/usr/local/hadoop/data/namenode
dfs.datanode.data.dir
/usr/local/hadoop/data/datanode
- mapred-site.xml(可选,若需MapReduce):
mapreduce.framework.name
yarn
- yarn-site.xml(可选,若需YARN):
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
- 目录准备
- 在对应节点创建数据目录并赋权(示例用户hadoop):
sudo mkdir -p /usr/local/hadoop/data/{namenode,datanode}
sudo chown -R hadoop:hadoop /usr/local/hadoop
三 启动与验证
- 格式化NameNode(仅首次)
- 在NameNode执行:hdfs namenode -format
- 启动HDFS
- 在NameNode执行:start-dfs.sh(脚本会自动在DataNode节点拉起进程)。
- 进程与端口检查
- 使用jps查看进程:应见到NameNode/DataNode(若启用YARN,还会有ResourceManager/NodeManager)。
- Web UI
- NameNode:http://namenode:50070
- 若启用YARN:ResourceManager http://resourcemanager:8088
- 基础验证
- 创建目录并上传测试文件:
hdfs dfs -mkdir -p /user/hadoop
echo “Hello HDFS” | hdfs dfs -put - /user/hadoop/hello.txt
hdfs dfs -cat /user/hadoop/hello.txt
- 防火墙与端口
- 开放必要端口(示例):9000(HDFS RPC)、50070(NN Web)、8088(RM Web);或临时停用防火墙用于测试。
四 高可用HA配置(可选)
- 架构组件
- Active/Standby NameNode ×2、JournalNode ×3(建议奇数)、ZooKeeper 集群(建议奇数)。
- ZooKeeper部署
- 下载解压并配置conf/zoo.cfg:
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
- 各节点写入myid并启动ZK。
- Hadoop HA关键配置
- core-site.xml:
fs.defaultFS
hdfs://mycluster
- hdfs-site.xml(要点):
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
nn1:8020
dfs.namenode.rpc-address.mycluster.nn2
nn2:8020
dfs.namenode.http-address.mycluster.nn1
nn1:50070
dfs.namenode.http-address.mycluster.nn2
nn2:50070
dfs.namenode.shared.edits.dir
qjournal://jn1:8485;jn2:8485;jn3:8485/mycluster
dfs.journalnode.edits.dir
/usr/local/hadoop/data/journalnode
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/hadoop/.ssh/id_rsa
- 初始化与启动顺序
- 启动所有JournalNode;
- 在nn1执行:hdfs namenode -format;
- 在nn1启动NameNode,在nn2执行:hdfs namenode -bootstrapStandby;
- 启动两台NameNode;
- 通过**ZKFailoverController(ZKFC)**启用自动故障转移(配合ZooKeeper)。
五 常见问题与优化
- 权限与用户
- 建议使用专用用户hadoop运行集群,目录与文件属主保持一致。
- 防火墙与端口
- 生产环境请按需放行端口(如9000/50070/8088/8485/2181),避免直接关闭防火墙。
- 时间与DNS
- 保证NTP时间同步;使用**/etc/hosts**或内网DNS确保主机名解析稳定。
- 数据目录与磁盘
- 将dfs.datanode.data.dir配置为多个磁盘目录(逗号分隔)以提升吞吐与容量。
- 副本与容量规划
- 结合节点数设置dfs.replication(常用3),确保数据可靠性与集群容量平衡。