# HDFS 扩容 ## 动态添加DataNode节点 本节将描述 HDFS 扩容的方法,并假设原有集群主节点分别为 hdfs1,hdfs2,hdfs3,新添加的节点为 hdfs4。其中hdfs1为active namenode角色。 ### 安装 配置yum源,安装lava命令行管理工具, yum 源需自行配置 ```sh ssh hdfs1 # 从yum源所在机器(假设为192.168.1.10)获取repo文件 scp root@192.168.1.10:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo # 追加yum源所在机器信息到/etc/hosts文件 yum clean all yum makecache yum install -y lava ``` 使用 yum install 的安装方式: ```bash ssh hdfs4 yum install -y hdfs ``` ### 准备 在hdfs1节点创建一个`hdfshost`文件 ```shell ssh hdfs1 touch ${HOME}/hdfshost ``` 配置hdfshost内容为所有安装HDFS的服务的hostname ``` sh hdfs1 hdfs2 hdfs3 hdfs4 ``` 同步配置之前需要确认hdfs-site.xml文件中的 dfs.datanode.data.dir参数是否符合预期: ```xml dfs.datanode.data.dir /data1/hdfs/datanode,/data2/hdfs/datanode ``` conf中的配置文件同步到新节点: ```sh lava scp -r -f hdfs4 /usr/local/oushu/conf/common/* =:/usr/local/oushu/conf/common/ ``` 新节点创建DataNode目录: ```sh ssh hdfs4 sudo su root mkdir -p /data1/hdfs/datanode mkdir -p /data2/hdfs/datanode chmod -R 755 /data1/hdfs chmod -R 755 /data2/hdfs chown -R hdfs:hadoop /data1/hdfs chown -R hdfs:hadoop /data2/hdfs mkdir -p /var/lib/hadoop-hdfs/ chmod -R 755 /var/lib/hadoop-hdfs/ chown -R hdfs:hadoop /var/lib/hadoop-hdfs/ ``` #### Kerberos准备(可选) 如果开启Kerberos,则需要在所有HDFS节点安装Kerberos客户端。 ```shell lava ssh -f ${HOME}/hdfshost -e "yum install -y krb5-libs krb5-workstation" ``` ### 启动 步骤如下: 1. 启动datanode ``` sudo -u hdfs hdfs --daemon start datanode ``` 2. 在NameNode上刷新节点 ``` hdfs dfsadmin -refreshNodes ``` 3. 启动 balancer ``` start-balancer.sh ``` 4. 添加新节点的IP或hostname到slave文件中,并分发到每台机器上 ``` lava scp -r -f hdfs4 /usr/local/oushu/conf/common/* =:/usr/local/oushu/conf/common/ ``` ## 动态删除DataNode节点 1,配置NameNode的hdfs-site.xml,增加dfs.hosts.exclude配置 ```xml dfs.hosts.exclude /usr/local/oushu/conf/common/excludes ``` 2,在对应路径(/usr/local/oushu/conf/common/)下新建 excludes 文件,并写入待删除DataNode的ip或域名 3,在NameNode上刷新所有DataNode并进行数据平衡 ```bash hdfs dfsadmin -refreshNodes start-balancer.sh ```