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

网上一些资料说在调整配置文件的时候,优先使用主机名而不是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. MVC Controller 基类中的Request

    今天在测试自己MVC程序的时候发现之前写代码的一个BUG,需求是每个页面要获取当前URL链接中包含的城市ID,我把获取url的方法写到了Controller的基类BaseController(Base ...

  2. HTML基础总结<文本格式>

    HTML 文本格式化标签 标签 描述 <b> 定义粗体文本 <em> 呈现为被强调的文本 <i> 定义斜体字 <small> 定义小号字 <str ...

  3. DDD(Domain Driver Designer) 领域驱动设计简介

    领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...

  4. shell脚本实现查找文件夹下重复的文件,并提供删除功能

    Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...

  5. Guava API学习之Multimap

    相信大家对Java中的Map类及其之类有大致的了解,Map类是以键值对的形式来存储元素(Key->Value),但是熟悉Map的人都知 道,Map中存储的Key是唯一的.什么意思呢?就是假如我们 ...

  6. jquery的queue方法

    queue: queue主要用于给元素上的函数队列(默认名为fx)添加函数(动画效果),这样dequeue就可以取出并执行函数队列中的第一个函数(即最先进入函数队列的函数),delay则可以延迟元素上 ...

  7. transition Css3过度详解

    过度语法: .example { transition-property: background-color; //需要过度的css属性 transition-duration: 2s; //过度所需 ...

  8. IIS自定义404错误页显示“系统找不到指定的文件”解决方法

    在IIS站点属性里面设置了自定义的404错误页面为一个文件之后,有时一直不生效,总是提示这样一句话:“系统找不到指定的文件”. 其实这种错误也只是在某些网站程序中出现,其实解决办法很简单.这是由于II ...

  9. php中urlencode使用

    URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu.Yisou等使用),另一种是基于UTF-8的Encode(Google.Yahoo等使用). 本工具分别实现 ...

  10. sqlserver查询分析器创建sql查询日志

    USE [master]GO /****** Object: Audit [ServerAuditDB] Script Date: 2016-04-28 16:02:58 ******/CREATE ...