增加节点
1、新增加节点192.168.203.113
2、配置无密码rsh,将namenode节点/home/hdpuser/.ssh/authorized_keys拷贝同113的同等目录下,并设置.ssh目录权限为700,authorized_keys权限为600
3、则namenode的slaves文件中,增添新机器的hostname
4、在/etc/hosts中增添新机器hostname和ip的对应
5、将hadoop目录以及配置文件copy至新节点
6、在新节点中,启动服务
./hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
增添一个节点,他最初是空的,然后早先的节点已经存储了一些数据。这个时候,文件系统认为是不平衡的。虽然新写入的文件可以进入新节点,但原有的副本数据仍然分布在之前的节点。此时,可以调用HDFS的一个平衡器,让集群节点中的数据平衡,平衡器可以设置平均利用率的阀值以及均衡操作时占用的网络资源,例如限制带宽。
7、可以使用start-balancer.sh均衡节点
删除节点
删除之前有
Live Nodes | : | 3 (Decommissioned: 0) |
1、编辑hdfs-site.xml,增添如下内容,设定排除的节点
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hdpuser/hadoop-2.2.0/conf/exclude</value>
</property>
<name>dfs.hosts.exclude</name>
<value>/home/hdpuser/hadoop-2.2.0/conf/exclude</value>
</property>
2、编辑/创建/home/hdpuser/hadoop-2.2.0/conf/exclude
其中需要包含被排除节点的hostname,例如
[hdpuser@hdpNameNode conf]$ cat exclude
hdpDataNode2
hdpDataNode2
3、执行hadoop dfsadmin -refreshNodes
4、在web页面中可以看到一个节点正在退役(此时在copy相应的文件)。
Decommissioning Nodes | : | 1 |
[hdpuser@hdpNameNode logs]$ grep 'Decommission complete' ./*
./hadoop-hdpuser-namenode-hdpNameNode.log:2013-12-17 16:29:51,605 INFO org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager: Decommission complete for 192.168.203.113:50010
./hadoop-hdpuser-namenode-hdpNameNode.log:2013-12-17 16:29:51,605 INFO org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager: Decommission complete for 192.168.203.113:50010
6、此时可以将节点从集群中移出。
其实hadoop删除节点,还有一种不推荐的做法。因为HDFS设计本身是非常有弹性的,所以确实勊有直接杀死节点或将之从集群中断开。namenode会检测到节点的死亡,并开始复制那些低于约定副本数的数据块。