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.

  参考: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 }

原文地址:https://www.cnblogs.com/jifengblog/p/9277004.html

时间: 2024-09-29 01:12:04

HDFS的JavaAPI的相关文章

hdfs的javaAPI使用

参考博客:https://www.cnblogs.com/Eddyer/p/6641778.html 1.需求 使用hdfs的javaAPI访问hdfs系统. 2.环境配置 (1)hadoop为本地模式 (2)pom文件代码如下 <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId>

hdfs深入:08、hdfs的JavaAPI以及如何解决winutils的问题

如果执行hdfs文件操作的时候抛异常 winutils 如何解决: 第一步:把 F:\传智播客大数据离线阶段课程资料\3.大数据离线第三天\解决winutils的问题\hadoop-2.6.0-cdh5.14.0 这个安装包拷贝到一个没有中文没有空格的路径下面去(D:\Develop\hadoop-2.6.0-cdh5.14.0): 第二步:在windows上面配置hadoop的环境变量, PATH中添加:D:\Develop\hadoop-2.6.0-cdh5.14.0: 第三步:D:\Dev

hdfs深入:10、hdfs的javaAPI操作

看到10.hdfs的javaAPI操作,  13分19秒 具体代码如下: /** * 递归遍历hdfs中所有的文件路径 */ @Test public void getAllHdfsFilePath() throws URISyntaxException, IOException { //获取fs的客户端 FileSystem fileSystem = FileSystem.get(new URI("hdfs://node01:8020"), new Configuration());

HDFS之JAVAAPI

JAVAAPI 上传小文件 代码 上面的例子完成了把一个字符串输出到hdfs中的/test目录中. 原理 见上传大文件的例子 上传大文件 代码 原理 客户端调用FileSystem的create方法创建文件,这个时候会远程调用NameNode,在文件系统的命名空间中创建一个新的文件,NameNode创建新文件时需要执行各种各样的检查,如NameNode是否正常工作,被创建的文件已经存在,客户端是否有在父目录中创建文件的权限等.这些检查都通过以后,NameNode会创建一个新的文件,并记录创建操作

熟练掌握HDFS的Shell访问和JavaAPI访问

HDFS设计的主要目的是对海量数据进行处理,也就是说在其上能够储存很大量文件(可以储存TB级的文件).HDFS将这些文件分割之后,储存在不同的DataNode上,HDFS提供了两种数据访问接口:Shell接口和javaAPI接口,对HDFS里面的文件进行操作. Shell接口  HDFS处理文件的命令和linux命令基本相同,这里区分大小写.下面介绍HDFS操作分布式文件系统的命令. HDFS基本命令 hadoop fs -cmd  其中cmd:具体的操作,基本上与unix的命令相同 args:

利用JavaAPI访问HDFS的文件

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

hadoop的hdfs中的javaAPI操作

package cn.itcast.bigdata.hdfs; import java.net.URI; import java.util.Iterator; import java.util.Map.Entry; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache

【hadoop】使用javaAPI对hdfs进行文件操作

前提:1.搭建好hadoop伪分布式环境:2.安装好eclipse: 注:修改 /etc/hosts 添加 “本机IP hadoop01” , 那么代码中创建hdfs文件系统的时候的URI hdfs://hadoop01:9000 相当于  hdfs://hadoop服务器ip(例如:192.168.1.1XX):9000 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExcep

通过javaAPI上传文件到HDFS文件系统

import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.h