大体,正确的做法是首选的配置文件,然后开始详细机对应的进程/停止操作。

网上一些资料说在调整配置文件的时候,优先使用主机名而不是IP进行配置。

总的来说加入/删除DataNode和TaskTracker的方法很相似,仅仅是操作的配置项和使用的命令有微小差异。

1. DataNode

1.0 配置文件

在master/namenode下改动配置文件conf/mapred-site.xml。
关键參数dfs.hosts和dfs.hosts.exclude。

注意:不同hadoop版本号的配置文件规划不太一致!

详细參考相关版本号的hadoop官方文档的cluster setup部分。

http://hadoop.apache.org/docs/ 点击同样或相近版本号。

上面的说法是在hadoop 1.x中的,后面也以该版本号举例;
在hadoop 0.x中上述配置存放在文件conf/hadoop-site.xml中;
在hadoop 2.x中变化非常大,文件为conf/hdfs-site.xml中,參数名为:dfs.namenode.hosts和fs.namenode.hosts.exclude。

參数作用:
dfs.hosts: 同意接入为DataNode的机器列表,假设不配置或所指定的列表文件为空则默认同意全部主机成为DataNode
dfs.hosts.exclude: 拒绝接入为DataNode的机器列表。假设一台机器同一时候出如今两个列表中,则拒绝。

它们的本质作用拒绝某些节点上的datanode进程连接。而不是调度这些节点上datanode进程的同意和关闭。

使用方法举例:
改动conf/mapred-site.xml,加入:
	<property>
<name>dfs.hosts</name>
<value>/opt/hadoop/conf/datanode-allow.list</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop/conf/datanode-deny.list</value>
</property>

假设不须要同意列表,就不要创建相应项了。

然后创建value所指定的文件。一行写一个主机名。

1.1 加入

1,在新slave上进行相关配置。

2,在master上的slave列表增加该slave(非必须,方便以后重新启动cluster用)

3。(若有)在datanode-allow.list中增加该slave

4,在slave上启动datanode进程:

执行:hadoop-daemon.sh start datanode

PS:能够用jps命令查看机器上的java进程的pid和进程名。

1.2 删除

极端不建议直接在slave上通过:
hadoop-daemon.sh stop datanode  
命令关掉datanode。这会导致hdfs中出现missing block。


1。在master上改动datanode-deny.list,加入对应机器
2,在master上刷新节点配置情况:
hadoop dfsadmin -refreshNodes  
此时在Web UI上马上就能够看到该节点变为Decommissioning状态,过一会就变为Dead了。
也能够通过:hadoop dfsadmin -report命令查看。
3。在slave上关闭datanode进程(非必须):
执行:hadoop-daemon.sh stop datanode  

1.2.1 又一次增加各个删除的节点

1,在master的datanode-deny.list删除对应机器
2。在master上刷新节点配置情况:
hadoop
dfsadmin -refreshNodes  
3,在slave上重新启动datanode进程:
hadoop-daemon.sh start datanode
 
PS:假设之前没有关闭该slave上的datanode进程,须要先关闭再又一次启动。

2. TackTracker

2.0 配置文件

hadoop 1.x下在master/namenode下改动配置文件conf/mapred-site.xml。

关键參数mapred.hosts和mapred.hosts.exclude。


对于hadoop 0.x须要改动配置文件conf/hadoop-site.xml;
对于hadoop 2.x还没有搞清楚,先不说。

參数作用:和datanode的相应项一样。

使用方法举例:
改动conf/mapred-site.xml。加入:
	<property>
<name><span style="font-family: Arial, Helvetica, sans-serif;">mapred</span><span style="font-family: Arial, Helvetica, sans-serif;">.hosts</name></span>
<value>/opt/hadoop/conf/tasktracker-allow.list</value>
</property>
<property>
<name><span style="font-family: Arial, Helvetica, sans-serif;">mapred</span>.hosts.exclude</name>
<value>/opt/hadoop/conf/tasktracker-deny.list</value>
</property>

假设不须要同意列表。就不要创建相应项了。

然后创建value所指定的文件。

一行写一个主机名。

2.1 加入

1,在新slave上进行相关配置。

2。在master上的slave列表增加该slave(非必须。方便以后重新启动cluster用)

3,(若有)在tasktracker-allow.list中增加该slave

4,在slave上启动tasktracker进程:

执行:hadoop-daemon.sh start tasktracker

PS:能够用jps命令查看机器上的java进程的pid和进程名。


2.2 删除

不建议直接在slave上通过:
hadoop-daemon.sh stop tasktracker  
命令关掉tasktracker,这会导致namenode觉得这些机器临时失联。在一个超时时间内(默认10min+30s)依旧如果它们是正常的还会将任务发送给它们。

1,在master上改动tasktracker-deny.list,加入对应机器
2。在master上刷新节点配置情况:
hadoop mradmin -refreshNodes  
此时在Web UI上马上就能够看到Nodes的数量降低了。而Exclude Nodes的数量添加了。能够点进去详细查看。

3,在slave上关闭tasktracker进程(非必须):
执行:hadoop-daemon.sh stop tasktracker  

2.2.1 又一次增加各个删除的节点

1,在master的tasktracker-deny.list删除对应机器
2。在master上刷新节点配置情况:
hadoop mradmin -refreshNodes  
3。在slave上重新启动tasktracker进程:
hadoop-daemon.sh start tasktracker  
PS:假设之前没有关闭该slave上的tasktracker进程。须要先关闭再又一次启动。

原载于http://blog.csdn.net/yanxiangtianji

转载请注明出处

版权声明:本文博主原创文章,博客,未经同意不得转载。

Hadoop动态加入/删除节点(datanode和tacktracker)的更多相关文章

  1. hadoop动态添加删除节点datanode及恢复

    1. 配置系统环境 主机名,ssh互信,环境变量等 本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本ha ...

  2. Hadoop新增和删除节点

    #新增节点 1.安装lunix,和以前一样的版本 2.初始化系统环境 2.1.设置静态ip vi /etc/sysconfig/network-scripts/ifcfg-eth0 //增加 #Adv ...

  3. Hadoop 动态扩容 增加节点

    基础准备 在基础准备部分,主要是设置hadoop运行的系统环境 修改系统hostname(通过hostname和/etc/sysconfig/network进行修改) 修改hosts文件,将集群所有节 ...

  4. hadoop 添加,删除节点

    http://www.cnblogs.com/tommyli/p/3418273.html

  5. Hadoop 2.6.3动态增加/删除DataNode节点

    假设集群操作系统均为:CentOS 6.7 x64 Hadoop版本为:2.6.3 一.动态增加DataNode 1.准备新的DataNode节点机器,配置SSH互信,可以直接复制已有DataNode ...

  6. Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向 (四十三)

    不多说,直接上干货! hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集 ...

  7. Hadoop学习记录(5)|集群搭建|节点动态添加删除

    集群概念 计算机集群是一种计算机系统,通过一组松散继承的计算机软件或硬件连接连接起来高度紧密地协作完成计算工作. 集群系统中的单个计算机通常称为节点,通过局域网连接. 集群特点: 1.效率高,通过多态 ...

  8. Hadoop动态增加节点与删除节点

    Hadoop的全分布式安装网上也很多教程,踩过很多坑,整理不出来了……赶紧把增加删除节点留住. 均衡数据 (1)设置数据传输带宽为64M(默认值比较低) hdfs dfsadmin -setBalan ...

  9. hdfs以及hbase动态增加和删除节点

    一个知乎上的问题:Hbase的Region server和hadoop的datanode是否可以部署在一台服务器上?如果是的话,二者是否是一对一的关系?部署在同一台服务器上,可以减少数据跨网络传输的流 ...

随机推荐

  1. Qt - 与众不同的电子时钟

     Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控 ...

  2. openwrt interface

    orige : http://www.cnblogs.com/preorder69/p/3959187.html 这篇算是对openwrt网络接口的一个翻译吧,源地址:http://wiki.open ...

  3. jquery之营销系统(会员促销)

    var appPath = getAppPath(); var cnt = 0; var loadCnt = 0; $(function() { $("#opreateHtml") ...

  4. MenuButton( 菜单按钮)

    一. 加载方式//class 加载方式<a href="javascript:void(0)" id="edit" class="easyui- ...

  5. js实现数字分页

    ///js数字分页 返回数组function page(pageCount, sideNum, pageNum) {    //其实页    var startNum = 0;    //结束页    ...

  6. F# 可以把几个函数组合成新函数

    C#能做的,F#基本都能做,但F#能做的,C#未必能做. F#中的函数可以把几个函数组合起来使用.下面的例子是把由 function1 和 function2 这两个函数通过运算符“>>” ...

  7. ResourceDictionary 和 XAML 资源引用

    XAML 定义应用的 UI,并且 XAML 也可以定义 XAML 中的资源.资源通常是对你希望多次使用的某些对象的定义.你要为 XAML 资源定义一个键,以供将来引用,该键的作用类似于资源的名称.你可 ...

  8. UIColor各种颜色转换

    1.Hex值颜色转换 #import <UIKit/UIKit.h> @interface UIColor (Extension) // 根据无符号的32位整数转换为对应的RGB颜色 + ...

  9. smarty 基本介绍及示例

    什么是smarty? Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一.Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂 ...

  10. 如何在Ubuntu 14.04中使用Samba共享文件

    Linux 下的文件共享利器 Samba 想必大家已经非常熟悉了,今天我们介绍下如何在Ubuntu 14.04中使用 Samba 共享网络文件.打印机和其它公共资源. 1.安装 Samba 和图形配置 ...