Hadoop2.x动态添加或删除datanode

 

1 涉及到的命令:

hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
 
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
yarn node -list
 
./hdfs dfsadmin -refreshNodes
./hdfs dfsadmin -report

 hadoop job -list 
 hadoop job -kill jobid //停止一个正在运行的job

启动数据负载均衡
/start-balancer.sh -threshold 5

 2 新增加一个节点

 

1 准备机器及运行环境
   配置hostname和hosts 环境变量 
2 配置无秘钥登录ssh 。ssh-copy-id
3 在各个节点中添加新节点的host。
4 修改namenode中slaves文件(每次namenode重启会读取这个文件,启动时候可以直接启动新添加节点)
5 copy hadoop文件夹到新添加节点的一样文件夹中 。 scp
6 删除新节点中 hadoop中的临时文件夹我的是tmp文件夹(hadoop在配置文件中配置的工作目录)
7 启动datanode ,sbin/hadoop-daemon.sh start datanode在hdfs dfsadmin -refreshNodes刷新节点
  hdfs dfsadmin -report或者nameNode50070 查看新添加的节点
8 平衡各个节点中数据块的大小: /start-balancer.sh -threshold 5

9 启动nodeManager,yarn-daemon.sh start nodemanager,通过yarn node -list 查看所有node节点 
  或者通过 http://resourceManagerhost:8088/ 查看其中节点数目 

 3 删除一个节点:

  

移除节点:最好不要直接停止机器否则可能造成机器数据块丢失 
a) 修改hdfs-site,添加exclude字段中的排除的节点
        <property>
            <name>dfs.hosts.exclude</name>
            <value>/web/hadoop-2.5.2/etc/hadoop/datanode-deny.list</value>
       </property>
添加文件: datanode-deny.list其中的内容加入需要删除的节点ip或者主机名称 
(我自己弄的时候这两个文件同步到集群中所有节点中)
b) 刷新节点状态:  hadoop dfsadmin -refreshNodes
查看节点状态变为:decommission
此时namenode不会与该节点进行hdfs相关通信。也即exclude起到了一个防火墙的作用

 4 删除节点后恢复

  

如果删除后想重新加入:
1 ) 删除datanode-deny.list文件中节点
2)hadoop dfsadmin -refreshNodes
3) 重新新加入的节点datanode 进程 

 

 

 

你可能感兴趣的:(Hadoop2.x动态添加或删除datanode)