在 CentOS 上安装 HDFS(通常是 Hadoop 的 HDFS 组件)时,有几个关键点需要特别注意,否则很容易踩坑。下面按安装前 → 安装中 → 安装后给你梳理一遍。
HDFS 强依赖 Java:
java -version
配置:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
HDFS 对主机名非常敏感:
localhost 做集群通信vi /etc/hosts
示例:
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
修改主机名:
hostnamectl set-hostname namenode
CentOS 默认防火墙和 SELinux 会挡端口。
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
# SELINUX=disabled
生产环境应开放端口而不是全关
不要用 root 跑 HDFS:
useradd hadoop
passwd hadoop
NameNode 要能免密登录所有 DataNode:
ssh-keygen -t rsa
ssh-copy-id datanode1
ssh-copy-id datanode2
下载后解压:
tar -zxvf hadoop-3.3.6.tar.gz -C /opt/
主要修改这几个:
core-site.xmlhdfs-site.xmlworkers(Hadoop 3)hadoop-env.sh示例(最小可用):
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/data</value>
</property>
</configuration>
数据目录必须存在且属于 hadoop 用户:
mkdir -p /data/hadoop/name
mkdir -p /data/hadoop/data
chown -R hadoop:hadoop /data/hadoop
只能做一次!
hdfs namenode -format
重复格式化会丢数据。
start-dfs.sh
检查:
jps
# NameNode / DataNode / SecondaryNameNode
Web UI:
http://namenode:9870
如果你愿意,可以告诉我:
我可以给你一份可直接用的配置清单。