栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS的API使用

HDFS的API使用

HDFS的API总体来说有两个主要的类。

FileSystem 和Configuration。

导入依赖

        

            org.apache.hadoop

            hadoop-client

            2.7.3

        

    

(1)初始化HDFS

//因为远程提交的情况下如果没有hadoop 的系统环境变量,就会读取当前主机的用户名,所以Hadoop集群的节点中没有该用户名的权限,所以出现的异常。

System.setProperty("HADOOP_USER_NAME","root");

Configuration conf = new Configuration();

        conf.set("fs.defaultFS", "hdfs://master:9000");

        conf.set("dfs.replication", "2");

        FileSystem fs = FileSystem.get(conf);

(2) 上传文件

  fs.copyFromLocalFile(new Path("D:\abc\wordcount\input\test.txt"),new Path("/wordcount/a.txt"));

(3)下载文件

        fs.copyToLocalFile(new Path("/wordcount/a.txt"),new Path("D:\abc\wordcount\input\test2.txt"));

(4)创建

        fs.create(new Path("/wordcount/b.txt"));

(5)删除

        fs.delete(new Path("/wordcount/b.txt"));

(6)获取一个文件的副本数

        short i = fs.getDefaultReplication(new Path("/wordcount/b.txt"));

        System.out.println(i);

(7)获取所有的文件

        RemoteIterator listFiles = fs.listFiles(new Path("/"),true);

        while (listFiles.hasNext()){

            LocatedFileStatus fileStatus = listFiles.next();

            Path path = fileStatus.getPath();

            System.out.println(path);

            //获取Block块的信息

            BlockLocation[] blockLocations = fileStatus.getBlockLocations();

            for (BlockLocation blockLocation:blockLocations) {

                String[] hosts = blockLocation.getHosts();

                String[] names = blockLocation.getNames();

                long offset = blockLocation.getOffset();

                System.out.println(offset);

                System.out.println(ArrayUtils.toString(hosts));

                System.out.println(ArrayUtils.toString(names));

            }

        }

        fs.close();

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号