对于hadoop的HA高可用多个namenode连接地址判断的工具类

package HaUtil;

 

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FileUtil;

import org.apache.hadoop.fs.Path;

 

 

public class HaUtil {

        public static void confset(Configuration conf) {  

            Path[] paths=null;

            try {

 

                conf.set("fs.defaultFS", "hdfs://hh1:8020");

                //必须写下面的代码必须还要存在一个遍历hdfs的一个目录,因为没有这个遍历不出现异常的,name就不会走catch语句了

               

                FileSystem hdfs = FileSystem.get(conf);

                 //System.out.println("测试1");

             //判断前天目录存在的话,且part文件的大小不是0的话吧a改成1

             FileStatus[] fs = hdfs.listStatus(new Path("/cgi3/"));

              paths = FileUtil.stat2Paths(fs);

              

                 //执行下面的打印长度,要是没有连接上hdfs,就会出现空指针异常,会跳转catch的。必须存在这个代码

                 System.out.println("测试1");

                 System.out.println(paths.length+"");

                 System.out.println("测试2");

 

         } catch (Exception e) {

             // try执行完成执行catch里面的语句(try连代码出现异常就执行catch里面的语句)

             //上面出现异常说明没有连接成功,这个时候更换一下namenode的连接地址

                conf.set("fs.defaultFS", "hdfs://hh:8020");

               

 

         }

           

        }

       

}

你可能感兴趣的:(对于hadoop的HA高可用多个namenode连接地址判断的工具类)