HDFS添加节点
现有环境如下:
192.168.30.203 hdnode1
192.168.30.204 hdnode2
192.168.30.205 hdnode3
其中hdnode1是namenode,hdnode2和hdnode3是datanode我们要新增加两个datanode:
192.168.30.206 hdnode4
192.168.30.207 hdnode5
那么首先初始化hdnode4和hdnode5两节点,初始化节点部分就不再重复了吧,操作步骤可以参与之前"HADOOP安装"中的内容。
初始化完之后,hdnode4和hdnode5两节点应该都拥有了grid用户,配置好用户环境变量,解压好了hadoop软件包(最好是将原节点中的hadoop文件夹打包复制过来,可以减少配置)。
下面需要进行若干修改了,操作时要注意了,有些操作仅在新增节点执行,还有些操作需要在所有的节点上进行。
修改hosts文件
修改hosts文件配置,所有节点都需要执行,通过vi编辑/etc/hosts文件:
增加两行:
192.168.30.206 hdnode4
192.168.30.207 hdnode5
配置节点间节密码访问
注意本步都在grid用户下操作的哟。首先在hdnode1端执行:
$ ssh hdnode4 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh hdnode5 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将新的authorized_keys文件复制到所有的节点:
$ scp ~/.ssh/authorized_keys hdnode2:/home/grid/.ssh/authorized_keys
$ scp ~/.ssh/authorized_keys hdnode3:/home/grid/.ssh/authorized_keys
$ scp ~/.ssh/authorized_keys hdnode4:/home/grid/.ssh/authorized_keys
$ scp ~/.ssh/authorized_keys hdnode5:/home/grid/.ssh/authorized_keys
而后可以尝试在各尝试相互访问,看看是否需要输入密码。
本步操作中有不明白的可以参考“hadoop安装手册”第1.3小节。
修改masters和slaves文件
Masters
文件其实也可以不用修改,还记得masters的用途不?没错就是secondary namenode嘛,咱们这个测试环境中,就跟namenode放
在一起也没关系的。 如果要修改的话,可以编译masters文件,新增一个节点保存secondary namenode:
修改所有节点的slaves文件,将新增的hdnode4和hdnode5加进去:
echo "hdnode4" >> /usr/local/hadoop-0.20.2/conf/slaves
echo "hdnode5" >> /usr/local/hadoop-0.20.2/conf/slaves
修改后的slaves文件内容如下:
新节点中单独启动datanode和tasktracker
环境现在已经初始化好了,那么接下来就可以单独启动新节点中的datanode和tasktracker进程了。
分别在hdnode4和hdnode5节点执行:
$ hadoop-daemon.sh start datanode
$ hadoop-daemon.sh start tasktracker
这样HDFS的扩容就完成了,可以通过hadoop dfsadmin命令查看统计信息:
[grid@hdnode4 ~]$ hadoop dfsadmin -report
Configured Capacity: 422752010240 (393.72 GB)
Present Capacity: 400489983786 (372.99 GB)
DFS Remaining: 400489492480 (372.98 GB)
DFS Used: 491306 (479.79 KB)
DFS Used%: 0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
-------------------------------------------------
Datanodes available: 4 (4 total, 0 dead)
……
……
容量已经扩充到四百G了。
平衡存储负载
尽管容量扩展了,但数据目前仍然是保存在原有的两个节点上,接下来可以通过start-balancer.sh进行数据负载均衡:
$ start-balancer.sh
starting balancer, logging to /usr/local/hadoop-0.20.2/bin/../logs/hadoop-grid-balancer-hdnode4.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
The cluster is balanced. Exiting...
对于数据规模较大的HDFS来说,本操作可能需要花费较长时间,因为它需要将数据重新平衡到不同的节点上,因此正式环境操作的话需要慎重。
删除节点
这个就不演示了吧,直接关机,就当那台节点宕机了:)
然后呢,然后做什么?哥们,我们现在部署好了HDFS可以存储数据,Tasktracker和Jobtracker也已就绪,我们目前已经为分布式计算打好了基础,接下来,找个顺手的java开发工具吧。