Hadoop实践(五)---API之HDFS

本文详细介绍了Hadoop分布式文件系统HDFS的Java API使用,包括使用Hadoop URL和FileSystem API读取数据、创建目录、删除数据、写数据,以及文件系统的查询操作,如获取文件元数据、列出目录文件信息和通配符筛选。
摘要由CSDN通过智能技术生成
  • HDFS是Hadoop主要应用的一个分布式文件系统。Hadoop中有一个综合性的文件系统抽象,它提供了文件系统实现的各类接口,HDFS是这个抽象文件系统的一个实例。
  • Hadoop整合了众多文件系统,它首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem,这个抽象类展示了一个分布式文件系统,并有几个具体实现,如下表.
文件系统 URI方案 Java实现(org.apache.hadoop) 描述
Local file fs.LoacalFileSystem 支持有客户端校验和的文件系统
HDFS hdfs hdfs.DistributedFileSystem Hadoop分布式文件系统
HFTP hftp hdfs.HftpFileSystem 支持通过HTTP方式以只读方式访问HDFS
HSFTP hsftp hdfs.HsftpFileSystem 支持通过HTTPS方式以只读方式访问HDFS
HAR har fs.HarFileSystem 构建在其他文档系统上进行归档文件的文件系统
KFS kfs fs.kfs.KosmosFileSystem Cloudstore文件系统,类似HDFS用C++编写
FTP ftp fs.ftp.FtpFileSystem 有FTP服务器支持的文件系统
S3(本地) s3n fs.s3native.NativeS3FileSystem 基于Amazon S3的文件系统
S3(基于块) s3 fs.s3.NativeS3FileSystem 基于Amazon S3的文件系统,以块格式存储,解决了S3的5GB限制

Hadoop提供了许多文件系统的接口,用户可使用URI方案选取适合的文件系统来实现交互。

通过文件系统命令接口进行Hadoop文件系统的操作,例如:想要列出本地文件系统的目录:

hadoop fs -ls file:///

1、HDFS常用Java API详解

Hadoop FileSystem类就饿Hadoop文件系统进行交互的API

1-1、使用Hadoop URL 读取数据

从Hadoop中读取数据,最简单的方式是说那个java.net.URL对象打开一个数据流,并从中读取数据,一般的调用格式如下:

package HDFS;

import org.apache.hadoop.io.IOUtils;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by Promacanthus on 2017/6/30.
 */
public class URLClass {
   
    public static void main(String[] args) {
        InputStream inputStream = null;
        try {
            inputStream = new URL("hdfs://NameNodeIP/path").openStream();
            IOUtils.copyBytes(inputStream,System.out,4096,false);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeStream(inputStream);
        }
    }
}

1-2、使用FileSystem API 读取数据

文件在Hadooop系统中被视为一个Hadoop Path 对象,可以把一个路径视为Hadoop的文件系统URI。

FileSystem API是一个高层抽象的文件系统API,首先要找到这里的文件系统实例HDFS,取得FileSystem实例有2个静态工厂方法:

  public static FileSystem get(Configuration conf) throws IOException //返回默认文件系统,如果没有设置,则为默认的本地文件系统
  public static FileSystem get(URI uri,Configuration conf)throws IOException //使用指定的URI方案决定文件系统的权限,如果指定的URI中没有指定方案,则退回默认的文件系统
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值