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

网上一些资料说在调整配置文件的时候,优先使用主机名而不是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. (第三章)Java内存模型(中)

    一.volatile的内存语义 1.1 volatile的特性 理解volatile特性的一个好办法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面通过具体 ...

  2. POJ 2318 TOYS/POJ 2398 Toy Storage

    计算几何终于开坑了... 叉积+二分. #include<iostream> #include<cstdio> #include<cstring> #include ...

  3. 你的sscanf用对了吗

    用sscanf解析输入字符串 我们平常编写的很多应用程序都会处理各种各样的输入,这些输入或来自本地文件,或来自网络,或来自用户的输入.今天,让我们来看看sscanf这个和字符串相关的函数可能给你带来的 ...

  4. mybati之day02

    今天开始讲解mybatis的第二天内容  一,拼接sql 在mapper.xml中,会多次使用到同一条sql片段,这时为了简便书写,将其定义出来 <sql id="base_sql&q ...

  5. .NET定时发送邮件

    添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) ...

  6. js函数知识点

    1.即使写成functon a()也是可以调用外面定义的变量的,写(a,b),我估计是为了降低耦合性 2.即使写成function a()也是可以用arguments[a]来默认写了(a,b) 3.在 ...

  7. Mysql创建函数出错

    目前在项目中,执行创建mysql的函数出错, mysql 创建函数出错信息如下: Error Code: 1227. Access denied; you need (at least one of) ...

  8. 记录一下最近开发web移动前端的过程

    两个项目 第一个是公司网站的移动端,我所在的公司是做某方面的新闻站的. 所以说页面基本是以一条条的新闻+图文混排为主,顶部有一个自动slider+触屏滑动的功能, 使用的是swipe插件,轻量,简洁非 ...

  9. android手电筒开发

    最近学习android开发,记录学习过程,分享一写小案例 一. 如下先设置好布局文件 <TextView android:id="@+id/textView1" androi ...

  10. localhost 与 127.0.0.1 的区别

    localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析.看来这个入门问题还有人不清楚,其实这两者是有区别的. ...