《Hadoop权威指南》 Hadoop文件系统操作接口

HDFS JAVA API(Hadoop3.0) 1.HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础篇,为了实现本地与HDFS的文件传输,主要借助Eclipse开发环境,通过java编程实现了远程HDFS的文件创建,上传,下载,删除等。在my.hdfs包下,新建类PutMerge,程序功能是将Linux本地文件夹/data/hadoop4/下的所有文件,上传到HDFS上并合并成一个文件/hdfstest/mergefile。 阅读详情

FileSystem

FileSystem时文件系统api,通过其对HDFS文件系统进行操作。

FileSystem获取方式:
 - public static FileSystem get(Configuration conf) throws IOException;
 - public static FileSystem get(URI uri, Configuration conf) throws IOException;
 - public static FileSystem get(URI uri, Configuration conf,String user) throws IOException;
获取本地文件系统实例:
 - public static LocalFileSystem getLocal(Configuration config) throws IOException;
FileSystem获取文件输入流:
   public FSDataInputStream open(Path f) throws IOException; //默认缓冲区大小为4KB
 - public abstract FSDataInputStream(Path f,int bufferSize) throws IOException;
  • 实例:
    public class FileSysemCat{
        public static void main(String[] args) throws Exception{
            String uri = args[0];
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(URI.create(uri),conf);
            InpuStream in = null;
            try{
                in = fs.open(new Path(uri));
                IOUtils.copyBytes(in , System.out,4096,false);
            }finally{
                IOUtils.closeStream(in);
            }

        }
    }
FsDataInputStream对象

该对象实现DataInputStream接口,支持随机访问,可以从流的任意位置读取数据。

public class FSDataInputStream extends DataInputStream implements Seekable , PositionedReadable{

} 
//Seek接口支持在文件中找到位置,并且有getPos获取当前文件偏移量
public interface Seekable{
    void seek(long pos) throws IOException;
    long getPos() throws IOException;
    boolean seekToNewSource(long targetPos) throws IOException;
}

//PositionedReadable接口,从指定偏移量处读取文件的一部分
public interface PositionedReadable{
    public int read(long position , byte[] buffer, int offset , int length) throws IOException;
    public void readFully(long position , bytes[] buffer, int offset, int length)throws IOException;
    public void readFully(long position , byte[] buffer ) throws IOException;
}

FileSystem写入数据

  • 创建文件
    public FSDataOutputStream create(Path f) throws IOException

create方法有很多重载,其会新建文件,并且默认会在文件父目录不存在时自行创建,因此如果
想在父目录不存在时抛出异常,可以在方法内使用exists()进行判断。

  • append()追加
    public FSDataOutputStream append     (Path f) throws IOException
  • 实例:
    public class FileCopyWithProgress{
        public static void main(String[] args) Exception{
            String localSrc = args[0];
            String dst = args[1];
            InputStream in = new BufferedInputStream(new FileInputStream(localSrc));

            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(URI.create(dst),conf);
            OutputStream out = fs.create(new Path(dst)), new Progressable(){
                public void progress(){
                    System.out.println(".");
                }
            });
            IOUtils.copyBytes(in , out , 4096 , true);
        }
    }

Progressable是一个用于传递回调的接口,同于将数据写入datanode的进度通知给用户.

FSDataOutputStream对象
FSDataOutputStream对象由FileSystem使用create()返回,由查询文件当前位置的方法

public class FSDataOutputStream extends DataOutputStream implements Syncable{
    public long getPos() throws IOException{

    }
}

与FSDataInputStream不同,FSDataOutputStream不允许定位。因为HDFS只允许对一个打开的文件顺序写入,
或向一个已有文件添加,即不支持文件尾部以外的其他位置的写入。

FileSystem创建目录

    public boolean mkdirs(Path f) throws IOException 

该方法会创建不存在的父目录,实际上在使用create()写入文件时会自动生成所有父目录。

查询文件系统

FileStatus 类封装了文件系统中文件和目录的元数据,包括文件长度,块大小,副本,修改时间,所有者等。

  • 列出文件
    //打印Hadoop中一些路径的文件歇息
    public class ListStatus{
        public static void main(String[] args) throws Exception{
            String uri = args[0];
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(URI.create(uri),conf);
            Path[] paths = new Path[args.length];
            for(int i = 0; i<paths.length;i++){
                paths[i] = new Path(args[i]);
            }

            FileStatus[] status = fs.listStatus(paths);
            Path[] listedPaths = FileUtil.stat2Paths(status);
            for(Path p :listedPaths){
                System.out.println(p);
            }
        }
    }

PathFilter对象

  • 通配符匹配文件
    PathFilter为hadoop的匹配接口
public interface PathFilter{
    boolean accept(Path path);
}
  • 匹配正则表达式的路径
public class RegexExcludePathFilter implements PathFilter{
    private final String reges;

    public RegexExcludePathFilter(String regex){
        this.regex = regex;
    }

    public boolean accept(Path path){
        return path.toString().matches(regex);
    }
}
基于微信小程序的PC后台扫码登录全流程解析 本文详细解析了基于微信小程序的PC后台扫码登录全流程。通过状态机与Redis缓存协同,实现PC端生成二维码、小程序扫描授权、后端生成Token并返回的完整闭环。该方案不仅提升了登录安全性与用户体验,还统一了多端用户体系,是现代化后台系统的高效登录选择。 阅读详情

相关推荐

《Hadoop权威指南》——3、Hadoop 分布式文件系统

HDFS设计 超大文件流式数据访问  一次写入、多次读取大量小文件 HDFS的概念 HDFS上的文件被分为多个块,作为独立的存储单元,HDFS中小于一个块大小的文件不会占据整个块的空间。  块的大小不易太大,map任务通常一次只处理一个块中的数据,如果任务数太少速度就会慢。 显示块信息 hadoop fsck / -files -blocks11 namenod

Happy_wu的专栏 839

hadoop的几个接口

8088接口:MapReduce 50070接口:HDFS 19888接口:jobhistorysever job历史服务器端口

优质大数据领域知识记录 804

《Hadoop权威指南》实战教程

随着数据量的指数级增长,传统的数据处理方法已无法满足企业需求。Hadoop,作为一个开源的分布式计算框架,应运而生,旨在高效地处理大规模数据集。本章将介绍Hadoop的起源、它如何解决大规模数据存储和处理问题以及它的核心价值。Hadoop由Apache软件基金会支持,它将大数据处理任务分散到由廉价的商用硬件组成的集群上,从而提供了高可靠性、可扩展性和高效率。在Hadoop的生态系统中,数据不再依赖于单一的故障点,降低了数据存储和处理的成本。

weixin_28888459的博客 834

Hadoop文件系统接口

  Hadoop有一个抽象文件系统的概念,hdfs只是其中的一个实现,Java抽象类org.apache.hadoop.fs.FileSystem定义了hadoop中的一个文件系统接口,hdfs是实现了这个接口的一个文件系统,还有其它的文件系统实现,例如使用了本地磁盘文件系统的Local文件系统和RawLocalFilesystem等。 一:hdfs命令行接口   类似于传统的文件系统,hdf...

weixin_30244889的博客 232

全面深入Hadoop大数据处理框架权威指南

本文还有配套的精品资源,点击获取 简介:《Hadoop权威指南》是大数据领域的经典之作,系统性地讲解了Apache Hadoop开源框架的原理与应用。Hadoop的核心由HDFS和MapReduce组成,分别提供分布式数据存储和并行处理能力。书中详细介绍Hadoop架构及其生态系统,包括YARN、HBase、Pig、Hive和Spark等组件的使用和最佳实践,同时涉及安装、...

weixin_42514750的博客 3040

《Hadoop权威指南》中文版全解

Hadoop是一个由Apache基金会开发的开源框架,用于存储和处理大数据。它主要包含多个核心组件,这些组件协同工作,为用户提供了一个高度可扩展的系统来处理海量数据集。Hadoop生态系统的核心组件包括HDFS、MapReduce、YARN等,各自承担着数据存储、计算和资源管理等关键角色。YARN(Yet Another Resource Negotiator)是Hadoop的资源管理平台,它为处理大数据应用提供了更加灵活和强大的资源管理能力。

weixin_30995917的博客 1112

Hadoop学习笔记(10)HDFS接口

HDFS概念: Hadoop有一个抽象的文件系统概念,它提供了文件系统实现的各类接口,HDFS只是其中一个实现,提供了一个文件系统抽象类org.apache.hadoop.fs.FileSystem,它定义了hadoop中的文件系统接口,并且该抽象类有具体实现。 Hadoop对文件系统提供了许多接口,它一般使用URL方案来选取合适的文件系统实例进行交互。 URL:统一资源定位符 如:hdfs://master:9000/test/t1.txt 如:www.baidu.com (此两为url) URI

boranyueshijie的博客 1735

《Hadoop权威指南》第四版中文完整学习指南

Hadoop 最初由 Doug Cutting 于 2005 年基于 Google 的三篇论文(GFS、MapReduce、BigTable)开发,旨在为 Apache Nutch 项目提供分布式存储与计算能力。随着数据量的爆发式增长,传统单机处理方式难以应对 PB 级数据的存储与分析需求,Hadoop 应运而生。其核心理念是“移动计算比移动数据更高效”,通过将计算任务分发到数据所在的节点,实现高效的并行处理。

weixin_36012152的博客 716

HDFS 的 JAVA API 操作

HDFS 的 JAVA API 操作 本节资源: Hadoop在window上编译好的压缩包: 链接:https://pan.baidu.com/s/1QvialqyxBu_eHvLEkwBcAw 提取码:q8f7 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS 上的文件。 1...

xxydzyr的博客 334

《Hadoop权威指南》第3版和第4版详细解析与实战应用

本文还有配套的精品资源,点击获取 简介:《Hadoop权威指南》是大数据领域的经典之作,详细介绍了Hadoop生态系统的核心组件。第三版深入讲解了Hadoop的基础架构、集群部署与管理、MapReduce程序编写,同时强调了企业环境中的应用实践。第四版新增了对Spark、Flink等新兴计算框架和Avro、Parquet等数据处理技术的讨论,并深入探讨了Hadoop的安全性...

weixin_26805451的博客 972

hadoop-api中文说明文档

hadoop-api中文说明文档

探索Hadoop的权威指南:《Hadoop权威指南(第四版)》资源推荐

探索Hadoop的权威指南:《Hadoop权威指南(第四版)》资源推荐 【下载地址】Hadoop权威指南第四版资源下载分享 本仓库提供《Hadoop权威指南(第四版)》的中文PDF、英文PDF以及配套源代码的下载。该书由Tom White编写,王海、华东、刘喻、吕粤海等人翻译,是学习Hadoop生态系统的经典著作 ...

gitblog_06523的博客 481

HDFS文件系统JAVA api访问接口(基于hadoop大数据平台)

在搭建完hadoop大数据系统(CDH5.16.1)后,如何访问hdfs文件系统上的数据呢?那当然是通过构建maven项目 使用java api接口进行文件了。为此,特别进行了hdfs文件系统java api访问的整理。

Hadoop权威指南-读书笔记-03-Hadoop分布式文件系统

HDFS

喻师傅的学习笔记 1251

开源AI数字人DUIX:从零构建你的智能交互助手

本文详细介绍了如何利用开源AI数字人DUIX从零构建智能交互助手。文章阐述了DUIX作为开源项目的核心优势,包括低成本启动、低网络依赖和高度可定制性,并提供了从开发环境搭建、核心模块(AI模型、语音、形象)配置到个性化业务逻辑开发与最终部署的完整实践指南,帮助开发者快速掌握构建专属AI数字人的全流程。

weixin_29051811的博客 504

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 297

Hadoop的分布式文件系统—— Hadoop权威指南3

本章除了讲解HDFS,还从整个Hadoop文件系统的角度介绍了文件系统的命令行、FileSystem接口(Hadoop文件系统的客户端接口) 1. HDFS概述 1. HDFS的特性、应用场景(适合/不适合什么?why?) HDFS的是Hadoop的分布式文件系统,全称Hadoop Distributed Filesystem HDFS具有以下特性: 超大文件:几百MB、几百GB甚至几百TB的大文件,甚至还出现了存储PB级文件的Hadoop集群 流式数据访问:HDFS基于一次写入、多次读取是高效的.

lucyLee的博客 1307

【codex教程】Codex 注册和使用教程(2026最新版)

Codex 是 OpenAI 推出的 AI 编程助手,可以帮助开发者阅读代码、修改代码、运行命令、生成测试、排查 bug、做代码审查,也可以在终端、IDE、Codex App 或网页端使用。根据 OpenAI 帮助中心,截至 2026 年 6 月,Codex 已包含在 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 等 ChatGPT 方案中,但不同套餐的使用额度会有所不同。适合开发者在终端中使用。如果你想在命令行里使用 Codex,可以安装 Codex CLI。

与时俱进,开放共享 2万+

Hadoop权威指南

1、Hadoop基础知识 第1章 初识Hadoop Hadoop代替配有大量硬盘的数据库来进行大规模数据分析的原因是: 传输速率(取决于硬盘的带宽)的提升远大于寻址时间(将磁头移动到特定硬盘位置进行读/写操作的过程)的提升,而数据库采用的是硬盘寻址数据访问模式,其相较于流数据读取模式(主要取决于传输速率)会花费更多时间; 关系型数据库使用的数据结构是B树(受限于寻址的速率),当其只更新一小部分数据时更有优势;但遇到大规模数据时,因为需要使用**”排序/合并“来重建数据库,所以B树**的效率会明显落后于M

weixin_43177696的博客 2674

大数据应用技术实验报告一 Hadoop三种模式安装配置

JDK+Hadoop安装配置、单机模式配置 以下操作在SecureCRT里面完成 1.关闭防火墙 firewall-cmd --state 显示防火墙状态running/not running systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙 systemctl disable firewalld 禁止防火墙服务。 2.传输JDK和HADOOP压缩包 Sec...

Ruthless_Childe的博客 3090

基于VisionMaster的药丸外观缺陷机器视觉检测系统实战解析

机器视觉作为工业自动化的核心技术,通过图像采集与智能分析替代人眼,实现高精度、高效率的在线检测。其核心原理在于利用相机、镜头、光源等硬件获取目标图像,再通过图像处理算法提取特征并进行识别与判断。这项技术的核心价值在于能够大幅提升生产质量与效率,尤其在需要高速、高精度且重复性强的检测场景中优势显著。在制药、食品、电子等行业的表面缺陷检测、尺寸测量、字符识别等环节应用广泛。本文聚焦于制药行业的药丸外观缺陷检测这一具体应用,深入探讨了如何利用海康威视VisionMaster视觉平台,结合**Blob分析**与**

weixin_32903229的博客 313

《Hadoop权威指南4》第3章 Hadoop分布式文件系统

Hadoop权威指南4第3章 Hadoop分布式文件系统 第3章 Hadoop分布式文件系统

bgdx520的博客 332

Halcon学习之一维测量(3)

带定位器的测量。首先看一下“定位”是什么意思?回答:比如我们测量一个芯片,这时候我们设置一个测量矩形,来沿着测量目标进行测量。但是下一张当芯片的位置发生变化时,测量矩形的位置就不对了,就不是沿着测量目标了。这样就不对了!芯片在转,测量矩形也要跟着一起转才行。这个时候就需要“定位”来起作用了!定位之后得到这个芯片的旋转角度之后,测量矩形可以跟着这个角度转。这就是“定位”+“测量”,这是我们工业视觉常用的一个手法,在Halcon里面也是有例子展现的。

deep_love1314的博客 788

Hadoop权威指南---HDFS简介和java API操作

目录 1、HDFS的设计 2、 HDFS的概念  2.1 数据块  2.2 namenode和datanode 概述 2.3 块缓存  ​2.4 联邦HDFS  2.5 HDFS的高可用性  3、 命令行接口 4、 Hadoop文件系统分类 5、Java接口API 5.1、增:创建文件create和write、文件夹mkdirs 5.2、删:删除文件夹和文件delete ...

l1394049664的博客 1122

矿石生成(1)

这个提供了标准化的矿石放置配置模板简化了常见和稀有矿石的配置过程遵循了Minecraft原版的世界生成模式提高了代码的可读性和可维护性通过使用这个类,模组开发者可以更轻松地配置矿石的生成规则,而不需要每次都手动编写完整的放置修饰符列表。这种设计模式在原版Minecraft和其他大型模组中也很常见,是一种良好的编程实践。// 导入语句...// 字段和方法...包声明表明这个类位于luckymod模组的WorldGen包中,专门处理世界生成相关配置。导入语句。

qq_24992377的博客 136

RTT Studio和Cubemx联合开发

1. RTT studio创建工程 创建工程 ## 创建完成以后的目录结构 2. 配置CubuMx 双击cubumx的图标打开CubeMx 配置时钟 生成代码 构建后的代码结构 编译代码满屏错误:不要慌 3. 新增脚本 新建scons脚本文件 SConscript 脚本内容如下 import os from building import * cwd = GetCurrentDir() src = Glob('*.c') # add cubemx drivers src = Split('''

Car12 1564
上一篇: 微信接收不到企业微信消息推送
下一篇: JavaWEB总结--(1)JavaWEB简介
SW_LCC
博客等级 码龄11年 4粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值