一、本文说明:
本文参照网上的一些资料做了对hadoop节点的添加和删除实验。
二、删除节点:
1.集群配置:
修改/conf/hdfs-site.xml文件
[jack@node1 conf]$ cat hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.name.dir</name> <value>/user/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/user/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.hosts.exclude</name> <value>/hadoop-0.20.2/conf/hdfs_exclude</value> </property> </configuration>
2.确定要下架的机器
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。这个将阻止他们去连接Namenode。如:
[jack@node1 conf]$ vi hdfs_exclude node3
3.强制重新加载配置
1 [jack@node1 conf]$ /hadoop-0.20.2/bin/hadoop dfsadmin -refreshNodes
它会在后台进行Block块的移动。
4.关闭节点
等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了。
1 [jack@node1 conf]$ /hadoop-0.20.2/bin/hadoop dfsadmin -report
可以查看到现在集群上连接的节点:
Name: 192.168.1.153:50010 Decommission Status : Decommission in progress Configured Capacity: 9353789440 (8.71 GB) DFS Used: 36864 (36 KB) Non DFS Used: 3458674688 (3.22 GB) DFS Remaining: 5895077888(5.49 GB) DFS Used%: 0% DFS Remaining%: 63.02% Last contact: Wed May 15 22:59:07 CST 2013 Name: 192.168.1.153:50010 Decommission Status : Decommissioned Configured Capacity: 9353789440 (8.71 GB) DFS Used: 28672 (28 KB) Non DFS Used: 3408281600 (3.17 GB) DFS Remaining: 5945479168(5.54 GB) DFS Used%: 0% DFS Remaining%: 63.56% Last contact: Thu Jan 01 08:00:00 CST 1970
5.再次编辑dfs.hosts.exclude文件
一旦完成了机器下架,它们就可以从dfs.hosts.exclude文件移除。
登录要下架的机器,会发现Datanode进程没有了,但是TaskTracker依然存在,需要手工处理一下。
备注:如果想要重新加入集群中,只需把dfs.hosts.exclude文件中的内容删除,再刷新一次,手动去启动加入进来的节点。
三、添加节点:
大致步骤:
1)、在新节点安装好hadoop;
2)、把namenode的有关配置文件复制到该节点;
3)、修改master和slaves文件,增加该节点;
4)、设置ssh免密码进出该节点;
5)、单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh start tasktracker/datanode);
6)、运行start-balancer.sh进行数据负载均衡。
具体实验步骤:
1.修改hosts
和普通的datanode一样。添加namenode的ip。
2.修改namenode的配置文件conf/slaves
添加新增节点的ip或host
3.在新节点的机器上,启动服务
[jack@node4 conf]$ /hadoop-0.20.2/bin/hadoop-daemon.sh start tasktracker starting tasktracker, logging to /hadoop-0.20.2/bin/../logs/hadoop-jack-tasktracker-node4.out [jack@node4 conf]$ jps 3508 Jps 3476 TaskTracker [jack@node4 conf]$ /hadoop-0.20.2/bin/hadoop-daemon.sh start datanode starting datanode, logging to /hadoop-0.20.2/bin/../logs/hadoop-jack-datanode-node4.out [jack@node4 conf]$ jps 3556 DataNode 3476 TaskTracker 3602 Jps
4.均衡block
[jack@node1 bin]$ ./start-balancer.sh
1)、如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率。
2)、设置平衡阀值,默认是10%,值越低各节点越平衡,但消耗时间也更长。
3)、设置balance的带宽,默认只有1M/s
<property> <name>dfs.balance.bandwidthPerSec</name> <value>1048576</value> <description> Specifies the maximum amount of bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> </property>