HDFS HA java API 实战

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import java.io.*;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class HdfsHADataHouseTmpDeteDataCompute {
    public static void main(String[] args) throws Exception{

        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://HWONE");
        conf.set("dfs.nameservices", "HWONE");
        conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
        conf.set("dfs.ha.namenodes.HZWONE", "nn1,nn2");
        conf.set("dfs.namenode.rpc-address.HZWONE.nn1", "hadoop-master-11:8020");
        conf.set("dfs.namenode.rpc-address.HZWONE.nn2", "hadoop-master-21:8020");
        //conf.setBoolean(name, value);
        conf.set("dfs.client.failover.proxy.provider.HWONE", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider");
        String path="/apps/hive/warehouse/"+args[0];
        //String path="/apps/hive/warehouse/fdm";
        FileSystem fs = FileSystem.get(new URI(path), conf, "hive");
        //FSDataInputStream hdfsInStream = fs.open(new Path("hdfs:apps/hive/warehouse/tmp"));
       // InputStreamReader isr = new InputStreamReader(hdfsInStream, "utf-8");
        RemoteIterator<LocatedFileStatus> fileIter= fs.listFiles(new Path(path),true);
        Map<String,Long> tableTimeStampMap = new HashMap<>();
        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String firstName="";
        int i=0;
        try {
        while (fileIter.hasNext()){
            LocatedFileStatus file = fileIter.next();
                if(fs.exists(file.getPath())){
                    String table= file.getPath().toString().split("/")[7];
                    long time=file.getModificationTime();
                    if(tableTimeStampMap.containsKey(table)){
                        if(time>tableTimeStampMap.get(table)){
                            tableTimeStampMap.put(table,time);
                        }
                    }else {
                        i++;
                        //System.out.println(i+":"+table+":"+time);
                        tableTimeStampMap.put(table,time);
                    }
                    if(!firstName.equals(table)){
                        System.out.println(i+":"+table+" time:"+format.format(tableTimeStampMap.get(table)));
                       // tableTimeStampMap.clear();
                    }
                    firstName=table;
                }
        }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
        }

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值