ITPub博客

首页 > 大数据 > Hadoop > Hadoop增加和删除节点

Hadoop增加和删除节点

Hadoop 作者:yanke_shanghai 时间:2016-05-06 15:42:14 0 删除 编辑

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 style="font-family: Arial, Helvetica, sans-serif;">.hosts</name>
		<value>/opt/hadoop/conf/tasktracker-allow.list</value>
	</property>
	<property>
		<name><span style="font-family: Arial, Helvetica, sans-serif;">mapred.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进程,需要先关闭再重新启动。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30316686/viewspace-2094927/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Spring官网
请登录后发表评论 登录
全部评论

注册时间:2015-06-30

  • 博文量
    65
  • 访问量
    353703