hadoop 添加删除datanode及tasktracker _Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2357 | 回复: 0   主题: hadoop 添加删除datanode及tasktracker         上一篇   下一篇 
flying
注册用户
等级:下士
经验:153
发帖:75
精华:0
注册:2011-8-25
状态:离线
发送短消息息给flying 加好友    发送短消息息给flying 发消息
发表于: IP:您无权察看 2015-5-8 10:31:16 | [全部帖] [楼主帖] 楼主

首先:

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



1、删除datanode



 修改namenode上的hdfs-site.xml
<property>
<name>dfs.hosts</name>
<value>/usr/local/hadoop/conf/datanode-allow-list</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/datanode-deny-list</value>
</property>


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

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

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



具体步骤

 

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

 

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


hadoop dfsadmin -refreshNodes


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

 

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

 

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

 

 (6)

    hadoop dfsadmin -refreshNodes

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

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


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

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

 

2、添加datanode

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

 到新节点上,启动即可

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

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

 

3、删除tasktracker

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

    <property>

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


     动态刷新配置的命令为:

    hadoop mradmin -refreshNodes


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

 具体的步骤参考上面的删除datanode的步骤 

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


/usr/local/hadoop/bin/hadoop-daemon.sh stop tasktracker
/usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker


注:正确的删除tasktracker的方法应该是按照上面的方法,使用exclude文件,而不应该直接去tasktracker上去sotp tasktracker,这样会造成job失败,而且stop以后,webui上仍然显示该tasktracker节点。除非重新启动jobtracker。



 我遇到的一个问题:

 在exclude文件中,我使用了IP,发现tasktracker仍然参与计算。

 在webui中发现,Excluded Nodes中存在该IP,Nodes中仍然存在该tasktracker的hostname。

 解决的办法就是,在exclude中使用hostname而不使用IP。

 判断是否真正生效:如果exclued文件中正确的填写了要失效的node,则总得nodes数量应该减小。

 

4、添加tasktracker

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

 到新节点上,启动即可

    /usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker

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

 

5、添加或删除datanode后,平衡磁盘利用率

运行bin/start-balancer.sh,这个会很耗时间

备注:

 如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mr的工作效率;

/usr/local/hadoop/bin/start-balancer.sh -threshold 0.1 

   threshold 是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长。

balancer也可以在有mr job的cluster上运行,默认dfs.balance.bandwidthPerSec很低,为1M/s。在没有mr job时,可以提高该设置加快负载均衡时间。


在namenode的hdfs-site.xml中增加设置balance的带宽,默认只有1M:


<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value>
<description>
Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second.
</description>
</property>


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论