CentOS怎样配置HDFS集群
导读:在 CentOS 上配置 HDFS 集群 一 环境准备与规划 节点规划示例:至少准备1 台 NameNode + 多台 DataNode;示例主机名为master、slave1、slave2(可按需扩展)。所有节点需在同一网络,能互相解析...
在 CentOS 上配置 HDFS 集群
一 环境准备与规划
- 节点规划示例:至少准备1 台 NameNode + 多台 DataNode;示例主机名为master、slave1、slave2(可按需扩展)。所有节点需在同一网络,能互相解析主机名。
- 基础环境:安装Java 8(OpenJDK 或 Oracle JDK),配置SSH 免密登录(NameNode 能免密登录各 DataNode),建议时间同步(如 chrony/ntp),并准备 Hadoop 发行包(如 Hadoop 3.3.x)。
- 目录规划:为 HDFS 数据与日志预置本地目录(如 /opt/hadoop/data/namenode、/opt/hadoop/data/datanode),并确保运行用户对这些目录有读写权限。
二 安装与基础配置
- 安装 Java(所有节点)
- 命令:
sudo yum install -y java-1.8.0-openjdk-devel
- 命令:
- 安装 Hadoop(建议只在 NameNode 下载后分发)
- 下载与解压:
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/ & & 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 PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin - 生效:
source /etc/profile.d/hadoop.sh
- 建议写入文件:
- 指定 Java(可选,增强稳定性)
- 编辑
$HADOOP_HOME/etc/hadoop/hadoop-env.sh:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- 编辑
- SSH 免密(NameNode 执行)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa- 将公钥分发至各节点:
ssh-copy-id hadoop@slave1、ssh-copy-id hadoop@slave2(如使用 root,则目标用户为 root)
三 配置 HDFS 核心文件
- 统一在所有节点放置相同配置(建议先在 NameNode 编辑,再同步到各节点)。
- 配置文件路径:
$HADOOP_HOME/etc/hadoop/
- core-site.xml
<
configuration>
<
property>
<
name>
fs.defaultFS<
/name>
<
value>
hdfs://master:9000<
/value>
<
/property>
<
property>
<
name>
hadoop.tmp.dir<
/name>
<
value>
/opt/hadoop/data/tmp<
/value>
<
/property>
<
/configuration>
- hdfs-site.xml
<
configuration>
<
property>
<
name>
dfs.replication<
/name>
<
value>
2<
/value>
<
!-- 小于等于 DataNode 数量 -->
<
/property>
<
property>
<
name>
dfs.namenode.name.dir<
/name>
<
value>
file:/opt/hadoop/data/namenode<
/value>
<
/property>
<
property>
<
name>
dfs.datanode.data.dir<
/name>
<
value>
file:/opt/hadoop/data/datanode<
/value>
<
/property>
<
property>
<
name>
dfs.webhdfs.enabled<
/name>
<
value>
true<
/value>
<
/property>
<
/configuration>
- workers(原 slaves,列出所有 DataNode 主机名)
slave1
slave2
- 同步配置到所有节点(示例)
rsync -av $HADOOP_HOME/etc/hadoop/ hadoop@slave1:$HADOOP_HOME/etc/hadoop/rsync -av $HADOOP_HOME/etc/hadoop/ hadoop@slave2:$HADOOP_HOME/etc/hadoop/
四 启动与验证
- 创建本地数据目录(所有节点)
mkdir -p /opt/hadoop/data/{ tmp,namenode,datanode}
- 格式化 NameNode(仅在 NameNode 执行一次)
hdfs namenode -format
- 启动 HDFS(在 NameNode 执行)
start-dfs.sh
- 进程检查
- NameNode:
jps应看到 NameNode;各 DataNode 应看到 DataNode
- NameNode:
- Web 界面
- HDFS NameNode UI:http://master:9870(Hadoop 3.x 默认端口;Hadoop 2.x 为 50070)
- 基本操作验证
hdfs dfs -mkdir /testhdfs dfs -put /etc/hosts /test/hdfs dfs -ls /test
五 防火墙与常见问题
- 防火墙放行(示例为 firewalld)
sudo firewall-cmd --permanent --add-port=9000/tcpsudo firewall-cmd --permanent --add-port=9870/tcp(Hadoop 3.x;2.x 用 50070)sudo firewall-cmd --reload
- 常见问题与要点
- 主机名解析:确保所有节点
/etc/hosts或 DNS 能正确解析 master/slaveX。 - SSH 免密:NameNode 必须能免密登录各 DataNode,否则 DataNode 不会启动。
- 目录权限:运行用户对 /opt/hadoop/data 及子目录具备读写权限。
- 副本数:生产环境建议 dfs.replication=3,且不超过 DataNode 数量。
- 时间与 SELinux:建议时间同步;如启用 SELinux,需设置为 permissive 或按需配置策略,避免权限拦截。
- 主机名解析:确保所有节点
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS怎样配置HDFS集群
本文地址: https://pptw.com/jishu/788326.html
