免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2252 | 回复: 0
打印 上一主题 下一主题

[Hadoop&HBase] hadoop 添加删除datanode及tasktracker [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 02:32 |只看该作者 |倒序浏览
<div>首先:</div><div>建议datanode和tasktracker分开写独立的exclude文件,因为一个节点即可以同时是datanode和tasktracker,也可以单独是datanode或tasktracker。</div><div><br></div><div>1、删除datanode</div><div><br></div><div>修改namenode上的hdfs-site.xml</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li><span><span style="color:#0000CC;">&lt;</span>property<span style="color:#0000CC;">&gt;</span><br></span></li><li>
<span style="color:#0000CC;">&lt;</span>name<span style="color:#0000CC;">&gt;</span>dfs<span style="color:#0000CC;">.</span>hosts<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>name<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>value<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">/</span>usr<span style="color:#0000CC;">/</span>local<span style="color:#0000CC;">/</span>hadoop<span style="color:#0000CC;">/</span>conf<span style="color:#0000CC;">/</span>datanode-allow-list<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>value<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>property<span style="color:#0000CC;">&gt;</span><br></li><li>
<br></li><li>
<span style="color:#0000CC;">&lt;</span>property<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>name<span style="color:#0000CC;">&gt;</span>dfs<span style="color:#0000CC;">.</span>hosts<span style="color:#0000CC;">.</span>exclude<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>name<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>value<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">/</span>usr<span style="color:#0000CC;">/</span>local<span style="color:#0000CC;">/</span>hadoop<span style="color:#0000CC;">/</span>conf<span style="color:#0000CC;">/</span>datanode-deny-list<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>value<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>property<span style="color:#0000CC;">&gt;</span></li></ol></div></div><div>其中dfs.host列出了连入namenode的节点,如果为空,则所有的datanode都可以连入namenode。如果不为空,则文件中存在的datanode可以连入。</div><div>dfs.hosts.exclude列出了禁止连入namenode的节点。</div><div>如果一个节点同时存在于dfs.hosts和dfs.hosts.exclude,则禁止连入。</div><div><br></div><div>具体步骤</div><div>&nbsp;</div><div>&nbsp;(1)将要删除的datanode加入到dfs.hosts.exclude指定的文件中。(最好使用主机名,IP有时可能不生效)</div><div>&nbsp;</div><div>&nbsp;(2)动态刷新配置,不需要重启namenode</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>hadoop dfsadmin -refreshNodes</li></ol></div><div>&nbsp;</div><div>&nbsp;(3)通过hadoop dfsadmin -report或webui,可以看到,该datanode的状态为Decommissioning</div><div>&nbsp;</div><div>&nbsp;(4)等待一段时间,该节点为dead状态。</div><div>&nbsp;</div><div>&nbsp;(5)删除dfs.hosts文件中该节点</div><div>&nbsp;</div><div>&nbsp;(6)</div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>hadoop dfsadmin -refreshNodes</li></ol></div><div>&nbsp;</div><div>&nbsp;注:按照上面的操作后,如果你想要重新启用该节点为datanode,从dfs.hosts.exclude中删除该节点,refreshNodes,然后,到该节点上,重启启动该datanode:</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>/usr/local/hadoop/bin/hadoop-daemon.sh stop datanode</li><li>
/usr/local/hadoop/bin/hadoop-daemon.sh start datanode</li></ol></div></div><div>&nbsp;</div><div>&nbsp;注:正确的删除datanode的方法应该是按照上面的方法,使用exclude文件,而不应该直接去datanode上去sotp datanode,这样会造出数据丢失,而且stop以后,webui和hadoop dfsadmin -report都仍然显示该datanode节点。除非重新启动namenode。</div><div>&nbsp;之所以重新启用exclude的节点时可以stop datanode,因为此时该datanode不包含在cluster中,所以,stop后不会造成数据丢失。</div><div>&nbsp;</div><div>&nbsp;2、添加datanode</div><div>&nbsp;如果存在dfs.hosts文件,且不为空,则添加新的datanode到该文件中,refreshNodes。</div><div>&nbsp;到新节点上,启动即可</div><div>&nbsp;</div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>/usr/local/hadoop/bin/hadoop-daemon.sh start datanode</li></ol></div><div>&nbsp;如果不存在dfs.hosts文件,或文件为空,直接启动新节点即可。</div><div>&nbsp;</div><div>&nbsp;3、删除tasktracker</div><div>&nbsp;原理和步骤与删除datanode一样。</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li><span><span style="color:#0000CC;">&lt;</span>property<span style="color:#0000CC;">&gt;</span><br></span></li><li>
<span style="color:#0000CC;">&lt;</span>name<span style="color:#0000CC;">&gt;</span>mapred<span style="color:#0000CC;">.</span>hosts<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>name<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>value<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">/</span>usr<span style="color:#0000CC;">/</span>local<span style="color:#0000CC;">/</span>hadoop<span style="color:#0000CC;">/</span>conf<span style="color:#0000CC;">/</span>tasktracker-allow-list<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>value<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>property<span style="color:#0000CC;">&gt;</span><br></li><li>
<br></li><li>
<span style="color:#0000CC;">&lt;</span>property<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>name<span style="color:#0000CC;">&gt;</span>mapred<span style="color:#0000CC;">.</span>hosts<span style="color:#0000CC;">.</span>exclude<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>name<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span>value<span style="color:#0000CC;">&gt;</span><span style="color:#0000CC;">/</span>usr<span style="color:#0000CC;">/</span>local<span style="color:#0000CC;">/</span>hadoop<span style="color:#0000CC;">/</span>conf<span style="color:#0000CC;">/</span>tasktracker-deny-list<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>value<span style="color:#0000CC;">&gt;</span><br></li><li>
<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>property<span style="color:#0000CC;">&gt;</span></li></ol></div></div><div>&nbsp;</div><div>&nbsp;动态刷新配置的命令为:</div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>hadoop mradmin -refreshNodes</li></ol></div><div>&nbsp;立刻生效,可以在webui中看到,nodes节点数量的变化,以及Excluded Nodes节点的变化。</div><div>&nbsp;具体的步骤参考上面的删除datanode的步骤</div><div>&nbsp;</div><div>&nbsp;注:按照上面的操作后,如果你想要重新启用该节点为tasktracker,从mapred.hosts.exclude中删除该节点,refreshNodes,然后,到该节点上,重启启动该tasktracker:</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>/usr/local/hadoop/bin/hadoop-daemon.sh stop tasktracker</li><li>
/usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker</li></ol></div></div><div>&nbsp;</div><div>&nbsp;注:正确的删除tasktracker的方法应该是按照上面的方法,使用exclude文件,而不应该直接去tasktracker上去sotp tasktracker,这样会造成job失败,而且stop以后,webui上仍然显示该tasktracker节点。除非重新启动jobtracker。</div><div><br></div><div>&nbsp;我遇到的一个问题:</div><div>&nbsp;在exclude文件中,我使用了IP,发现tasktracker仍然参与计算。</div><div>&nbsp;在webui中发现,Excluded Nodes中存在该IP,Nodes中仍然存在该tasktracker的hostname。</div><div>&nbsp;解决的办法就是,在exclude中使用hostname而不使用IP。</div><div>&nbsp;判断是否真正生效:如果exclued文件中正确的填写了要失效的node,则总得nodes数量应该减小。</div><div>&nbsp;</div><div>&nbsp;4、添加tasktracker</div><div>&nbsp; 如果存在mapred.hosts文件,且不为空,则添加新的tasktracker到该文件中,refreshNodes。</div><div>&nbsp;到新节点上,启动即可</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li>/usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker</li></ol></div></div><div>&nbsp;如果不存在mapred.hosts文件,或文件为空,直接启动新节点即可。</div><div>&nbsp;</div><div>&nbsp;</div><div>6、添加或删除datanode后,平衡磁盘利用率</div><div><div>运行bin/start-balancer.sh,这个会很耗时间</div><div>备注:</div><div>&nbsp;如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mr的工作效率;</div><div>/usr/local/hadoop/bin/start-balancer.sh -threshold 0.1&nbsp;</div><div>&nbsp; &nbsp;threshold 是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长。</div><div>balancer也可以在有mr job的cluster上运行,默认dfs.balance.bandwidthPerSec很低,为1M/s。在没有mr job时,可以提高该设置加快负载均衡时间。</div></div><div><div>在namenode的hdfs-site.xml中增加设置balance的带宽,默认只有1M:</div><div><div id="codeText" class="codeText"><ol start="1" class="dp-css"><li><span><span style="color:#0000CC;">&lt;</span>property<span style="color:#0000CC;">&gt;</span> <br></span></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">&lt;</span>name<span style="color:#0000CC;">&gt;</span>dfs<span style="color:#0000CC;">.</span>balance<span style="color:#0000CC;">.</span>bandwidthPerSec<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>name<span style="color:#0000CC;">&gt;</span> <br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">&lt;</span>value<span style="color:#0000CC;">&gt;</span>10485760<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>value<span style="color:#0000CC;">&gt;</span> <br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">&lt;</span>description<span style="color:#0000CC;">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second<span style="color:#0000CC;">.</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>description<span style="color:#0000CC;">&gt;</span> <br></li><li>
<span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">/</span>property<span style="color:#0000CC;">&gt;</span></li></ol></div></div></div>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP