3、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文件:

    # 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:

    $ vi /usr/local/hadoop-0.20.2/conf/masters 

修改所有节点的slaves文件,将新增的hdnode4和hdnode5加进去:

    echo "hdnode4" >> /usr/local/hadoop-0.20.2/conf/slaves

    echo "hdnode5" >> /usr/local/hadoop-0.20.2/conf/slaves

修改后的slaves文件内容如下:

    $ more /usr/local/hadoop-0.20.2/conf/slaves 

    hdnode2

    hdnode3

    hdnode4

    hdnode5

新节点中单独启动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开发工具吧。