在 CentOS 上扩容 HDFS 存储,通常有两种常见场景:横向扩容(加 DataNode) 和 纵向扩容(单节点加磁盘)。下面按实操步骤说明。
适合集群存储整体不足
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 配置 hosts
vi /etc/hosts
# 添加所有节点 IP 和 hostname
# 配置 NTP 时间同步
yum install -y ntp
systemctl enable ntpd
systemctl start ntpd
useradd hadoop
passwd hadoop
# 从 NameNode 拷贝公钥
ssh-copy-id hadoop@new-node
yum install -y java-1.8.0-openjdk
# 拷贝 NameNode 的 hadoop 目录
scp -r /opt/hadoop hadoop@new-node:/opt/
在 NameNode 上:
vi $HADOOP_HOME/etc/hadoop/workers
# 添加新节点 hostname
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
# 或
$HADOOP_HOME/bin/hdfs --daemon start datanode
hdfs dfsadmin -report
看到新 DataNode 即成功。
适合单节点磁盘满了
fdisk -l
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /data2
mount /dev/sdb1 /data2
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs</value>
</property>
mkdir -p /data2/dfs
chown -R hadoop:hadoop /data2/dfs
hdfs --daemon stop datanode
hdfs --daemon start datanode
新节点加入后,数据不会立刻迁移:
hdfs balancer
# 或限制带宽
hdfs dfsadmin -setBalancerBandwidth 104857600
如果你能告诉我:
我可以给你更精确的命令和配置文件示例。