大数据技术 HDFS的JavaAPI
沉沙 2018-09-25 来源 : 阅读 886 评论 0

摘要:本篇教程探讨了大数据技术 HDFS的JavaAPI,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 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 null\bin\winutils.exe in the Hadoop binaries.

 
 
创建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 }

     

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程