添加删除datanode及tasktracker,动态增删节点

Hadoop 添加删除datanode及tasktracker

Hadoop增加节点:

首先:

新节点正常安装hadoop copy过来就行了,建立相关目录

建议datanode和tasktracker分开写独立的exclude文件,因为一个节点即可以同时是datanode和tasktracker,也可以单独是datanode或tasktracker。

然后在新节点上运行

1、删除datanode

./hadoop-daemon.sh start datanode

修改namenode上的hdfs-site.xml

./hadoop-daemon.sh start tasktracker

  1. <property>   
  2. <name>dfs.hosts</name>   
  3. <value>/usr/local/hadoop/conf/datanode-allow-list</value>   
  4. </property>  

然后在namenode上运行hadoop balance

 

(在数据平衡的时候,注意传输块大少的选择)

  1. <property>   
  2. <name>dfs.hosts.exclude</name>   
  3. <value>/usr/local/hadoop/conf/datanode-deny-list</value>   
  4. </property>  

删除节点(整个过程要把数据的录入和删除任务停止):

其中dfs.host列出了连入namenode的节点,如果为空,则所有的datanode都可以连入namenode。如果不为空,则文件中存在的datanode可以连入。

  1. 把需要删除的节点填入一个文件 echo "192.168.239.71" > /data/hadoop-0.20.2/conf/excludes

  2. 在主节点的core-site.xml配置文件中添加如下内容:

dfs.hosts.exclude列出了禁止连入namenode的节点。

<property>

如果一个节点同时存在于dfs.hosts和dfs.hosts.exclude,则禁止连入。

<name>dfs.hosts.exclude</name>

具体步骤

<value>/data/hadoop-0.20.2/conf/excludes</value>

(1)将要删除的datanode加入到dfs.hosts.exclude指定的文件中。(最好使用主机名,IP有时可能不生效)

</property>

(2)动态刷新配置,不需要重启namenode

说明

hadoop dfsadmin -refreshNodes  

dfs.hosts.exclude:指要删除的节点

(3)通过hadoop dfsadmin -report或webui,可以看到,该datanode的状态为Decommissioning

/data/hadoop-0.20.2/conf/excludes:指定要被删除文件所在路径及名称,该处定义为excludes

(4)等待一段时间,该节点为dead状态。

  1. 运行命令使其生效

(5)删除dfs.hosts文件中该节点

hadoop dfsadmin -refreshNodes

(6)

该命令可以动态刷新dfs.hosts和dfs.hosts.exclude配置,无需重启NameNode。节点删除后,节点的tasktracker还是在运行中,需手动删除。

  1. hadoop dfsadmin -refreshNodes  

./hadoop-daemon.sh stop datanode

注:按照上面的操作后,如果你想要重新启用该节点为datanode,从dfs.hosts.exclude中删除该节点,refreshNodes,然后,到该节点上,重启启动该datanode:

hadoop dfsadmin -report查看结果,如下

  1. /usr/local/hadoop/bin/hadoop-daemon.sh stop datanode   
  2. /usr/local/hadoop/bin/hadoop-daemon.sh start datanode  

Name: 192.168.239.71:50010

注:正确的删除datanode的方法应该是按照上面的方法,使用exclude文件,而不应该直接去datanode上去sotp datanode,这样会造出数据丢失,而且stop以后,webui和hadoop dfsadmin -report都仍然显示该datanode节点。除非重新启动namenode。

Decommission Status : Decommissioned

之所以重新启用exclude的节点时可以stop datanode,因为此时该datanode不包含在cluster中,所以,stop后不会造成数据丢失。

Configured Capacity: 0 (0 KB)

2、添加datanode

DFS Used: 0 (0 KB)

如果存在dfs.hosts文件,且不为空,则添加新的datanode到该文件中,refreshNodes。

Non DFS Used: 0 (0 KB)

到新节点上,启动即可

DFS Remaining: 0(0 KB)

  1. /usr/local/hadoop/bin/hadoop-daemon.sh start datanode  

DFS Used%: 100%

如果不存在dfs.hosts文件,或文件为空,直接启动新节点即可。

DFS Remaining%: 0%

3、删除tasktracker

Last contact: Thu Jan 01 08:00:00 CST 1970

原理和步骤与删除datanode一样。

如果Status为 Decommissione in process则表现数据还在平衡,这时候请不要运行数据录入或剔除机器。

  1. <property>   
  2. <name>mapred.hosts</name>   
  3. <value>/usr/local/hadoop/conf/tasktracker-allow-list</value>   
  4. </property>  

  5. <property>   

  6. <name>mapred.hosts.exclude</name>   
  7. <value>/usr/local/hadoop/conf/tasktracker-deny-list</value>   
  8. </property>  

图片 1

动态刷新配置的命令为:

hadoop mradmin -refreshNodes

立刻生效,可以在webui中看到,nodes节点数量的变化,以及Excluded Nodes节点的变化。

图片 2

本文由华夏彩票发布于华夏彩票网络,转载请注明出处:添加删除datanode及tasktracker,动态增删节点

您可能还会对下面的文章感兴趣: