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>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
</dependencies>

maven依赖项

3.使用hdfs的javaAPI操作hdfs的代码

(1)初始化环境

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class hadoopJavaApiDemo {

    FileSystem fs = null;

    @Before
    public void init() throws IOException, URISyntaxException, InterruptedException {
        Configuration configuration = new  Configuration();
        //设置文件系统为hdfs
        //获取文件系统的客户端实例对象
        //注意:运行程序是要执行用户名为hadoop,否则会出现没写权限的情况
        fs = FileSystem.get(new URI("hdfs://127.0.0.1:9900"),configuration,"hadoop");
    }

  //...
 }

(2)上传文件

@Test
    public void testUpload() throws IOException {
        fs.copyFromLocalFile(new Path("file://[本地文件的路径,例如/a/b.txt]"),new Path("[hdfs文件系统的路径,例如/]"));
        fs.close();
    }

(3)下载文件

@Test
    public void testDownLoad() throws IOException {
        fs.copyToLocalFile(new Path("[hdfs上的文件路径,例如/testData]"),new Path("[本地文件路径,例如/home/a.txt]"));
        fs.close();
    }

(4)创建文件夹

@Test
    //创建新的文件夹
    public void testMakeDir() throws Exception {
        boolean mkdirs = fs.mkdirs(new Path("/x/y/z"));
        System.out.println(mkdirs);
    }

(5)删除文件夹

@Test
    public void testDelete() throws Exception{
        //第二个参数为true是递归删除
        boolean delete = fs.delete(new Path("/x"), true);
        System.out.println(delete);
    }

4.注意事项

(1)hdfs各种端口的含义(就因为将127.0.0.1:9900写为127.0.0.1:50070,debug了好久。。)

  9900是fileSystem的端口号(默认是9000,这里我自定义为9900)

  50070是namenode主节点的端口号

  50090是namenode的secondarynamenode的端口号

(2)file://是一个传输协议
  比如可以通过在浏览器中输入路径file:///a/b/c.txt访问本地文件

5.github链接

https://github.com/gulu2016/STBigData

原文地址:https://www.cnblogs.com/ManchesterCityCoder/p/10729848.html

时间: 2024-10-15 14:36:56

hdfs的javaAPI使用的相关文章

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的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 bin

熟练掌握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