发布日期:2015-12-07 14:32 来源: 标签: 云计算与大数据 Hadoop教程 新增节点 删除节点
本章我们主要学习如何在一个hadoop集群新增或删除一些机器而不重启 ?下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
新增节点 
操作如下: 
首先,把新节点的IP或主机名 加入主节点(master )的conf/slaves文件。 
然后登录新的从节点,执行以下命令: 
$ cd $HADOOP_HOME 
$ bin/hadoop-daemon.sh start datanode 
$ bin/hadoop-daemon.sh start tasktracker 
然后就可以在namenode机器上运行balancer,执行负载均衡 
$bin/hadoop balancer 
(或者:bin/start-balancer.sh) 
运行bin/start-balancer.sh,这个会很耗时间 
备注: 
1.如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mr的工作效率; 
2.也可调用bin/start-balancer.sh 命令执行,也可加参数 -threshold 5threshold是平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长。 
3.balancer也可以在有mr job的cluster上运行,默认dfs.balance.bandwidthPerSec很低,为1M/s。在没有mr job时,可以提高该设置加快负载均衡时间。 
其他备注: 
1.必须确保slave的firewall已关闭; 
2.确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中
注:在0.21中执行bin/hadoop-daemon.sh start datanode 会提示该命令已废除,建议使用./hdfs datanode命令

删除节点 
比如我原来有 10 个节点的集群. 现在我想停掉 2 个,但数据不能丢失,只能让它们的数据转 
移到其它8台上.这道过程就是decommission. 我们不能直接把那2台停掉, 要在停掉之前 
把数据转移出去.  
1)确定要下架的机器  
首先在namenode服务器,在HADOOP_HOME目录下建立一个excludes文件.它是一个文本, 里面每行就是想要停掉的主机名或IP.这里excludes放在$HADOOP_HOME下  
例如  
192.168.10.160  
这样就表明要把 1 台机器给停了.  
2)修改conf/hdfs-site.xml文件 
然后在conf/ core-site.xml添加这样的属性:  
<property>  
   <name>dfs.hosts.exclude</name>   
   <value>excludes</value> 
</property>    
3)强制重新加载配置  
做完这步, 用 bin/hadoop dfsadmin -refreshNodes 命令更新结点以及 hadoop 配置
然后你可以通过 bin/hadoop dfsadmin -report 就可以查看到类似这样的信息:  
-------------------------------------------------  
Datanodes available: 2 (2 total, 0 dead)  
         
Name: 192.168.10.160:50010  
Decommission Status : Decommission in progress  
Configured Capacity: 37169479680 (34.62 GB)  
DFS Used: 94208 (92 KB)  
Non DFS Used: 30112800768 (28.04 GB)  
DFS Remaining: 7056584704(6.57 GB)  
DFS Used%: 0%  
DFS Remaining%: 18.98%  
Last contact: Tue Jul 26 15:31:17 CST 2011  
         
Name: 192.168.10.245:50010  
Decommission Status : Normal  
Configured Capacity: 253935173632 (236.5 GB)  
DFS Used: 94208 (92 KB)  
Non DFS Used: 188234915840 (175.31 GB)  
DFS Remaining: 65700163584(61.19 GB)  
DFS Used%: 0%  
DFS Remaining%: 25.87%  
Last contact: Tue Jul 26 15:31:16 CST 2011  
可以看到 160 在停止中(Decommission Status : Decommission in progress ),执行完成会显示(Decommission Status : Decommissioned)。  
注:在没停止之前, mapreduce会拒绝操作. 会出异常的  
4)再次编辑excludes文件 
一旦完成了机器下架,它们就可以从excludes文件移除了 
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工终止(kill)一下。 
注:附带说一下 -refreshNodes  命令的另外三种用途: 
2.添加允许的节点到列表中(添加主机名到 dfs.hosts  里来) 
3.直接去掉节点,不做数据副本备份(在 dfs.hosts  里去掉主机名) 
4.退服的逆操作——停止exclude里面和dfs.hosts里面都有的,正在进行decomission的节点的退服,也就是把 Decomission in progress的节点重新变为Normal(在web界面叫in service)  
                                                                          

相关评论

专题信息
    Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。本教程对Hadoop做了详解的介绍与讲解,教程中的实例能让大家更快的学习Hadoop,望大家多多支持中国站长网络学院。