一、本文说明:
本文参照网上的一些资料做了对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>
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:50010Decommission 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 1522:59:07CST2013Name: 192.168.1.153:50010Decommission 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 0108:00:00CST1970
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]$ jps3508 Jps3476 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]$ jps3556 DataNode3476 TaskTracker3602Jps
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 forthe balancing purposeintermof
the numberof bytes per second.
</description></property>