设为首页 收藏本站
查看: 1586|回复: 0

[经验分享] hadoop 中添加和删除 datanode和tasktracker

[复制链接]

尚未签到

发表于 2018-11-1 06:40:09 | 显示全部楼层 |阅读模式
  hadoop 添加删除datanode及tasktracker

  首先:
  建议datanode和tasktracker分开写独立的exclude文件,因为一个节点即可以同时是datanode和tasktracker,也可以单独是datanode或tasktracker。
  1、删除datanode
  修改namenode上的hdfs-site.xml

dfs.hosts

/usr/local/hadoop/conf/datanode-allow-list




dfs.hosts.exclude

/usr/local/hadoop/conf/datanode-deny-list



  其中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文件中该节点 即下架目标机器后,再次编辑dfs.hosts.exclude,把刚才下架的机器的ip或机器名移走
  (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一样。

mapred.hosts

/usr/local/hadoop/conf/tasktracker-allow-list




mapred.hosts.exclude

/usr/local/hadoop/conf/tasktracker-deny-list



  动态刷新配置的命令为:
  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文件,或文件为空,直接启动新节点即可。
  6、添加或删除datanode后,平衡磁盘利用率
  运行bin/start-balancer.sh,这个会很耗时间
  备注:
  如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mr的工作效率;
/usr/local/hadoop/bin/start-balancer.sh -threshold 0.1

7下架目标机器后,再次编辑mapred.hosts.exclude,把刚才下架的机器的ip或机器名移走


  threshold 是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长。
  balancer也可以在有mr job的cluster上运行,默认dfs.balance.bandwidthPerSec很低,为1M/s。在没有mr job时,可以提高该设置加快负载均衡时间。
  在namenode的hdfs-site.xml中增加设置balance的带宽,默认只有1M:

dfs.balance.bandwidthPerSec

10485760Specifies themaximum bandwidth that each datanode can utilize for the balancing purpose interm of the number of bytes per second.






  增加Hadoop新节点:
  向一个正在运行的Hadoop集群中增加几个新的Nodes
  1. 新节点上部署java/hadoop程序,配置相应的环境变量
  2. 新节点上增加用户,从master上拷贝id_rsa.pub并配置authorized_keys
  3. 新节点上设置/etc/hosts,只要有本机和master的host即可
  /etc/hosts
  127.0.0.1       localhost
  10.10.10.101 node1
  10.10.10.102 node2
  10.10.10.103 node3
  10.10.10.104 node4
  (在这个文件中要写上所有的namenode 和datanode 的ip 及对应的服务器名称(上面说的好像只需要写namenode的ip服务器名称就行了,这个有待试一下),所有的datanode 和namenode 下该文件的内容都是一样的)
  4. 新节点上建立相关的目录,并修改属主,将Node4之中 ~/tmp目录下的内容都删除掉,否则会被认为已经创建的节点。
  5. master的slaves文件中增加上相的节点(* 注意:只在NameNode之上配置就可以)
  /etc/masters  (masters 是一个没有扩展名的文件,master里面存放的是secondary NameNode 的主机名)
  node1
  /etc/slaves    (slaves 是一个没有扩展名的文件,slaves里面存放的是taskTracker和dataNode 的主机名)
  node2
  node3
  node4
  6. 在新节点上启动datanode和tasktracker
  localadmin@node4:~/hadoop-0.20.2/bin$ hadoop-daemon.sh start datanode
  localadmin@node4:~/hadoop-0.20.2/bin$ hadoop-daemon.sh start tasktracker
  使用'Jps'进行检查。
7. 进行block块的均衡  在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
  
  dfs.balance.bandwidthPerSec
  10485760
  
  Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second.
  
  
  运行以下命令:
  hadoop/bin/start-balancer.sh -threshold 3
  均衡10个节点,移动400G数据,大概花费了3个小时
The cluster is balanced. Exiting…  Balancing took 2.9950980555555557 hours
============================================================  删除Hadoop节点:
Hadoop提供了Decommission的特性,可以按照以下步骤来操作:  1. 在hadoop的conf目录下生成一个excludes的文件 /etc/nn-excluded-list,写上需要remove的节点
  一个节点一行,如:
  node4
2. 在hdfs-site.xml中增加配置:  
  dfs.hosts.exclude
  /etc/nn-excluded-list
  
  3. 复制文件到集群各节点上
  4. 执行hadoop dfsadmin -refreshNodes命令,它会在后台进行Block块的移动
  从移出的Nodes上移动到其它的Nodes上面
  5. 通过以下2种方式查看Decommission的状态:
  hadoop dfsadmin -report
  http://10.10.10.101:50070/dfsnodelist.jsp
  正在执行Decommission,会显示:
  Decommission Status : Decommission in progress
  执行完毕后,会显示:
Decommission Status : Decommissioned6.下架目标机器后,再次编辑/etc/nn-excluded-list,把刚才下架的机器的ip或机器名移走


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629085-1-1.html 上篇帖子: hadoop上安装pig 下篇帖子: hadoop 的参数配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表