zoukankan      html  css  js  c++  java
  • HDFS的JavaAPI

    配置windows平台的Hadoop环境 

      在 windows 上做 HDFS 客户端应用开发,需要设置 Hadoop 环境,而且要求是windows 平台编译的 Hadoop,不然会报以下的错误:

    Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable nullinwinutils.exe in the Hadoop binaries.

      参考:https://blog.csdn.net/huyishero/article/details/72896484

    创建Maven工程,引入pom依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.4</version>
        </dependency>
    </dependencies>

    客户端对象

      在 java 中操作 HDFS,主要涉及以下 Class:

        Configuration:该类的对象封转了客户端或者服务器的配置;

        FileSystem:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作,通过 FileSystem 的静态方法 get 获得该对象。

          FileSystem fs = FileSystem.get(conf)

          get 方法从 conf 中的一个参数 fs.defaultFS 的配置值判断具体是什么类型的文件系统。如果我们的代码中没有指定 fs.defaultFS,并且工程 classpath下也没有给定相应的配置,conf中的默认值就来自于hadoop的jar包中的core-default.xml , 默认值 为 : file:/// ,则获取的将 不 是 一 个DistributedFileSystem 的实例,而是一个本地文件系统的客户端对象。

    示例代码

     1 public class TestHDFS {
     2 
     3     public static void main(String[] args) throws Exception{
     4         Configuration conf = new Configuration();
     5         //指定使用的是hdfs文件系统
     6 //        conf.set("fs.defaultFS","hdfs://node-1:9000");
     7 
     8         //FileSystem是hadoop操作文件系统的核心类
     9         //通过FileSystem的静态方法获取文件系统客户端对象
    10 //        FileSystem fs = FileSystem.get(conf);
    11         //设置uri,conf,用户身份
    12         FileSystem fs = FileSystem.get(new URI("hdfs://node-1:9000"),conf,"root");
    13 
    14         //创建一个文件夹
    15 //        fs.mkdirs(new Path("/createByJava"));
    16         //上传文件
    17 //        fs.copyFromLocalFile(new Path("D:\test.txt"),new Path("/createByJava/test.txt"));
    18         //下载文件
    19 //        fs.copyToLocalFile(new Path("/createByJava/test.txt"),new Path("D:\test\test.txt"));
    20 
    21         //stream形式读取本地的一个文件
    22         FileInputStream in = new FileInputStream(new File("D:\test.txt"));
    23         //创建一个文件
    24         FSDataOutputStream out = fs.create(new Path("/test.txt"));
    25         //stream形式将本地文件上传到hdfs
    26         IOUtils.copy(in,out);
    27 
    28         fs.close();
    29     }
    30 }
  • 相关阅读:
    frp反向代理+内网穿透+ Metasploit渗透windows
    FRP实现内网穿透
    FRP 内网穿透工具
    通过代理实现在校园外使用校园网内的服务 (frp内网穿透)
    戴维斯双击
    pycharm2019,3.1版本的有效激活方法
    一键对centos7.6安装python3环境已经pip3
    在linux设置/etc/vimrc 将vim 中后缀.sh的文件 的前几行进行默认输入
    Postman Interceptor和postman更改id仍然无法使用的,从这里下载相同版本的postman和interceptor插件
    Postman Interceptor安装成功却无法在Postman启用的解决办法
  • 原文地址:https://www.cnblogs.com/jifengblog/p/9277004.html
Copyright © 2011-2022 走看看