使用java api操作hdfs

原创 2018年04月16日 23:59:46

参考: https://blog.csdn.net/jiecxy/article/details/78011630

1. 首先创建一个maven项目,添加如下的hadoop-client依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.allen</groupId>
    <artifactId>JavaTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <kotlin.version>1.2.21</kotlin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.9.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2 添加如下的代码

package com.allen;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;

public class HdfsClientDemo {

    public static void main(String[] args) throws URISyntaxException, IOException {
        System.out.println("Hdfs client demo");
        
        // 设置HADOOP_USER_NAME环境变量
        System.setProperty("HADOOP_USER_NAME", "hadoop");
        Configuration conf = new Configuration();
        conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");

        String filePath = "hdfs://mini1:9000/text/text.txt";
        Path path = new Path(filePath);

        FileSystem fs = FileSystem.get(new URI(filePath), conf);

        System.out.println("Writing ==================");
        byte[] buff = "This is hello world from java api!\n".getBytes();
        FSDataOutputStream os = fs.create(path);
        os.write(buff, 0, buff.length);
        os.close();

        System.out.println("Reading ================");
        FSDataInputStream is = fs.open(path);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        String content = br.readLine();
        System.out.println(content);
        br.close();
        fs.close();
    }
}

其中 System.setProperty("HADOOP_USER_NAME", "xxxx"); 这行代码是设置程序运行时hadoop用户的身份,需要xxxx用户具有操作hdfs系统的权限,不然可能会出现Permission denied的错误


3 执行程序,输出如下

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Writing ==================
Reading ================
This is hello world from java api!

Process finished with exit code 0

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用...
  • lzm1340458776
  • lzm1340458776
  • 2014-07-20 19:28:43
  • 1473

Hadoop读书笔记(三)Java API操作HDFS

Hadoop读书笔记(三)Java API操作HDFS 多种方法诠释,注释清晰,史上最全咯!
  • caicongyang
  • caicongyang
  • 2014-11-19 22:25:25
  • 3388

javaAPI操作hdfs实例代码

1、重读配置文件core-site.xml 要利用Java客户端来存取HDFS上的文件,不得不说的是配置文件hadoop-0.20.2/conf/core-site.xml了,最初我就是在这里吃了大亏...
  • jiangheng0535
  • jiangheng0535
  • 2013-09-30 16:06:38
  • 1589

详细简单的hdfs java的api接口实现

  • 2012年03月18日 11:14
  • 10KB
  • 下载

Hadoop-利用java API操作HDFS文件

这段时间学习了python和hadoop,主要用于数据处理方面,因此打算写几篇这方面的博客。不过不是我的原创,我也是利用前辈的工作展示给大家。把自己学到的东西,也是比较初级的东西展示给需要的同学。 ...
  • u010156024
  • u010156024
  • 2015-11-30 16:28:29
  • 13578

JAVA API操作HDFS文件系统

一个通过JAVA API操作HDFS文件系统的例子,本例子使用的是hadoop0.20的版本,在windows的eclipse下运行的时候,需要将core-site.xml和hdfs-site.xml...
  • kkdelta
  • kkdelta
  • 2014-02-25 13:55:27
  • 12145

使用java api操作HDFS文件

全部程序如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; imp...
  • dandingyy
  • dandingyy
  • 2012-04-06 23:12:13
  • 11525

HDFS的Java API操作本地环境搭建

HDFS的Java API操作本地环境搭建     1、创建一个Java project 项目:   2、导入jar包: 把Hadoop根目录下的 JAR包和lib下的JAR包导进去:...
  • baolibin528
  • baolibin528
  • 2015-02-17 21:46:50
  • 1116

Hadoop 通过 Maven 用 Java API 对HDFS的读取/写入示例

1. 读写源码注意加注释的地方!!! /** * App.java */ package com.jiecxy;import org.apache.hadoop.conf.Configuratio...
  • jiecxy
  • jiecxy
  • 2017-09-17 17:10:04
  • 1374
收藏助手
不良信息举报
您举报文章:使用java api操作hdfs
举报原因:
原因补充:

(最多只允许输入30个字)