动态上下线datanode节点及副本均衡机制

本篇博客继hadoop-2.4.1 HA 分布式集群安装部署,现在我们的状态如下:

动态上下线datanode节点及副本均衡机制_第1张图片

此时我们的集群是好的。

1.现在我们通过Java程序向HDFS提交文件。

package com.npf.hadoop;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HdfsApp {

        public static void main(String[] args) throws Exception{

                Configuration configuration = new Configuration();

                FileSystem fileSystem = FileSystem.get(new URI("hdfs://ns1/"), configuration);

                fileSystem.copyFromLocalFile(new Path("/flowcount.jar"), new Path("/"));

        }
}

并且在classpath下面添加下面两个配置文件:

core-site.xml








        
        
                fs.defaultFS
                hdfs://ns1
        

        
        
                hadoop.tmp.dir
                /usr/local/hadoop-2.4.1/tmp
        

        
        
                ha.zookeeper.quorum
                npf5:2181,npf6:2181,npf7:2181
        




hdfs-site.xml








        
        
                dfs.nameservicesns1                                                                                                   

        
        
                dfs.ha.namenodes.ns1nn1,nn2
        

        
        
                dfs.namenode.rpc-address.ns1.nn1
                npf1:9000
        

        
        
                dfs.namenode.http-address.ns1.nn1
                npf1:50070
        

        
        
                dfs.namenode.rpc-address.ns1.nn2
                npf2:9000
        

        
        
                dfs.namenode.http-address.ns1.nn2
                npf2:50070
        

        
        
                dfs.namenode.shared.edits.dir
                qjournal://npf5:8485;npf6:8485;npf7:8485/ns1
        

        
        
                dfs.journalnode.edits.dir
                /usr/local/hadoop-2.4.1/journaldata
        

        
        
                dfs.ha.automatic-failover.enabled
                true
        

        
        
                dfs.client.failover.proxy.provider.ns1
                org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        

        
        
                dfs.ha.fencing.methods
                
                        sshfence
                        shell(/bin/true)
                
        

        
        
                dfs.ha.fencing.ssh.private-key-files
                /root/.ssh/id_rsa
        

        
        
                dfs.ha.fencing.ssh.connect-timeout
                30000
        



现在我们运行HdfsApp.java,然后访问http://npf1:50070

动态上下线datanode节点及副本均衡机制_第2张图片

2.现在我们测试,如果在上传文件的过程中,active namenode故障了,上传文件的过程会被中断么?

现在我们的npf1是active namenode,npf2是standby namenode。

现在我们运行程序,上传jkd-7u79,在上传的过程了,kill 掉npf1 上面的namenode进程。

运行的过程中:

动态上下线datanode节点及副本均衡机制_第3张图片

kill 掉npf1上面的namenode进程:

动态上下线datanode节点及副本均衡机制_第4张图片

然后访问http://npf2:50070

动态上下线datanode节点及副本均衡机制_第5张图片

结果表明:

即使在上传的过程中,namenode发生了故障,standby namenode上面的zkfc会检测到active namenode故障,然后standy namenode通过zkfc向npf1发生SSH kill的指令,已确定npf1的namenode确实已经被kill掉了,然后standby namenode会切换成active namenode,对外提供服务。

3.动态增加一个datanode节点

主机名 IP 安装的软件 运行的进程
npf8 192.168.1.83 jdk、hadoop DataNode
分别修改npf1,npf2,npf3,npf4,npf5,npf6,npf7,npf8下面的/etc/hosts

动态上下线datanode节点及副本均衡机制_第6张图片
我们的JDK已经安装完毕,现在只要安装hadoop就可以了,在npf7上面,运行下面的命令,将npf7上面的hadoop环境拷贝到npf8上面。

动态上下线datanode节点及副本均衡机制_第7张图片

分别配置npf1,npf2到npf8的免密码登录

动态上下线datanode节点及副本均衡机制_第8张图片


动态上下线datanode节点及副本均衡机制_第9张图片

在npf8上面启动datanode启动之前,我们来看下现在的datanode的活动数目:

动态上下线datanode节点及副本均衡机制_第10张图片

在npf8上面启动datanode:

动态上下线datanode节点及副本均衡机制_第11张图片

现在我们再来看下datanode的活动数目:

动态上下线datanode节点及副本均衡机制_第12张图片

已经有4个了,说明我们的npf8的datanode已经被集群感知了。


你可能感兴趣的:([专栏]Hadoop原理分析)