hadoop 添加删除datanode及tasktracker

首先:

建议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文件中该节点 即下架目标机器后,再次编辑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一样。

<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文件,或文件为空,直接启动新节点即可。

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:

<property>

<name>dfs.balance.bandwidthPerSec</name>

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

</property>

增加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:

<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>

运行以下命令:

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中增加配置:

<property>    
    <name>dfs.hosts.exclude</name>    
    <value>/etc/nn-excluded-list</value>    
</property>

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 : Decommissioned

6.下架目标机器后,再次编辑/etc/nn-excluded-list,把刚才下架的机器的ip或机器名移走

转载于:https://blog.51cto.com/3937307/1113600

hadoop 中添加和删除 datanode和tasktracker相关推荐

  1. Python:用字典建立一个通讯录,向字典中添加和删除通讯人信息,查询某个人的信息,然后输出通讯录中所有人的信息。

    用字典建立一个通讯录,向字典中添加和删除通讯人(名字.电话.邮箱.工作单位等),查询某个人的信息,然后输出通讯录中所有人的信息. 采用列表里套字典的方法,比较简单 contacts = []def a ...

  2. 在idea 中添加和删除模块Module

    在idea 中添加和删除模块Module ThinkPet 2018-12-22 10:12:50  4125  收藏 1 分类专栏: idea 版权 1.添加模块 2.删除模块 ---------- ...

  3. 如何在 SQL Server 2005 故障转移群集中添加或删除节点(安装程序)

    如何在 SQL Server 2005 故障转移群集中添加或删除节点(安装程序) 使用此过程管理 Microsoft SQL Server 2005 故障转移群集实例中的节点. 重要提示: 若要更新或 ...

  4. Java在PDF文档中添加或删除页面

    前言 当你编辑一个PDF文档时,有时需要删除文档中多余的页面或向文档中添加新的页面.本文将向您演示如何使用Spire.PDF for Java在PDF文档中添加或删除页面. 程序环境 安装Spire. ...

  5. Word开发工具Aspose.Words功能演示:在C ++中以编程方式在Word文档中添加或删除页眉和页脚

    Word文档中的页眉和页脚用于格式化和显示重要信息,例如主题,章节,页码,Copywrite等.以编程方式使用Word文档时,可能需要添加或删除页眉和页脚.为此,本文将教您如何使用C ++在Word文 ...

  6. 创建java取消module_在idea 中添加和删除模块Module操作

    1.添加模块 2.删除模块 补充知识:IDEA添加子Module的正确姿势 因需求要增加一个新的测试模块,于是要在一堆Module中再添加一个Module,单纯的我没有丝毫杂念的开始进行添加了. 1. ...

  7. 在桌面上添加或删除计算机网络等图标,如何在Windows 10中添加或删除默认桌面图标...

    我们将看到如何在Windows 10中添加或 让我们开始吧: 在Windows 10设备中,选择"开始"按钮,然后选择"设置". 如何在Windows 10中添 ...

  8. Microsoft Excel 教程:如何在 Excel 图表中添加或删除次坐标轴?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 图表中添加或删除次坐标轴. 如果图表中的格式从数据系列到数据系列跨度 ...

  9. Word处理控件Aspose.Words功能演示:使用 C++ 在 Word (DOC/DOCX) 中添加或删除水印

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...

  10. Python精讲:在Python中添加和删除集合元素详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中添加和删除集合元素详解>.本知识点主要讲的是添加和删除元素,包括:在Python中向集合里面添加元素可以使用 ...

最新文章

  1. TI CC2530的BasicRF与Zstack的同与异(重点讲了MAC层)
  2. 【MM模块】Taxes / Terms of Payment 税额和付款条件简介
  3. c#NPOI导出2007版本excel
  4. 运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误
  5. C4D快速入门教程——创建模型
  6. 解决方案:Coin3D安装编译以及配合VS2019、QT的使用
  7. JavaWeb 敏感词汇过滤器
  8. 企业发卡系统源码/带有代理功能发卡平台源码
  9. PS知识点大总结(一)——基础操作
  10. vue.js可视化开发工具_Vue.js开发工具
  11. 高端疫苗的新冠疫苗二期数据发表;药明生基新建工艺研发和商业化生产中心投运 | 医药健闻...
  12. WITH TIES语句(SQL)
  13. 杂记之视频监控基础之IPCAM
  14. 2022年数学建模国赛c题论文+代码(附详解)
  15. oracle全局索引改成本地索引,解析一个通过添加本地分区索引提高SQL性能的案例...
  16. 【mmdetection小目标检测教程】三、使用sahi库切分高分辨率图片,一键生成coco格式数据集
  17. canvas制作简单钟表
  18. chrome 浏览器 64位最新版 flash 无法加载插件 问题解决
  19. 聚合物钽电容和普通钽电容的区别
  20. IDEA翻译插件 不需要应用id和密钥

热门文章

  1. Watchman 的安装
  2. git升级后jenkins的报错
  3. nginx 失败问题集合
  4. 试图删除 xx 和yy之间的关系。但是,关系的其中一个外键 (xx_yy.xxID) 无法设置为 null。...
  5. com线程模型实验之三
  6. 3.3 基于GMM-HMM的语音识别
  7. JWT(JSON Web Token) 多网站的单点登录,放弃session 转载https://www.cnblogs.com/lexiaofei/p/7409846.html...
  8. 关于微信隐藏分享按钮的心得
  9. 谷歌浏览器整个网页截图方法
  10. 高亮显示搜索的关键词(二)