如何动态增加节点?
新增一台s4
1)s4 机器基础环境必须搞好(host、ssh、免密登录root),简单方式直接从s3 克隆一台,
注意:要把s4机器上的/data/dfs 目录删掉,因为在启动datanode 节点时会自动在/data/目录下创建dfs目录。
2)在 etc/hadoop/slave 文件中追加 s4 的主机名
3)在s4 机器上用 hadoop-daemon.sh start 启动s4机器上的datanode
5)用 hadoop dfsadmin -refreshNodes
如何删除动态节点
1)在hdfs-site.xml 追加属性dfs.hosts.exclude, 该属性配置的参数是配置要删除节点机器的主机名。
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/excludes</value>
</property>
2)在excludes文件中配置要删除节点的主机名
3)分发hdfs-site.xml 和 exludes 文件
4)执行命令 hdfs dfsadmin -refreshNodes,查看WEBUI,节点状态在Decommission In Progress
5)当所有的要退役的节点都报告为Decommissioned,数据转移工作已经完成
注意:【退役后的节点数要≥ 设置的副本数,否则会一直留在退役中】。
解释:
① 设置hdfs副本数为2
② 上传数据到hdfs,会有两个副本
③ 将三个datanode机器的s2.hadoop 退役,webUI显示s2.hadoop 正在退役,在退役时,会复制该节点数据到其他节点
④ 已经将s2.hadoop 数据复制到了s3.hadoop上,当复制完成后,就编程已退役状态。
⑤ 查看 /zookeeper-3.4.8.tar.gz 文件块位置
metasave filename:
保存NameNode的主要数据结构到hadoop.log.dir属性指定的目录下的<filename> 文件中。
#在hadoop日志目录下创建namenode的数据结构信息
hdfs dfsadmin -metasave namenode_data