hdfs接口操作笔记

python使用hdfs库操作Hadoop的HDFS 此次使用python的hdfs库操作HDFS,首相安装该库:pip install hdfs 其次,要保证HDFS可用,如下图就代表可用,当然你列出的文件和我的不同 老规矩,先来看看它这个库的大概结构,方便以后调用。先 import hdfs ,然后跟进hdfs库,查看定义它的地方。如下,既然是连接的库,那么这个client就是连接的客户端了,这里出现了三个client,它们有什么不同 首先是Client类,转到定义处之后,可以发现它里面有很多操作,基本的增删查改都有了,看它的 __init__ 方法, 阅读详情

1. hdfs shell

  1. hadoop fs -ls /
    三种形式。
    (1)hadoop fs -ls hdfs://xxx:9000/ (指定集群)
    (2)hadoop fs -ls / (默认集群)
    (3)hadoop fs -ls a(特殊用法)

2. FileSystem的使用

maven依赖

<dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.2-4101</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.2-4101</version>
        </dependency>

在这里插入图片描述

官方api:https://hadoop.apache.org/docs/r2.7.7/api/index.html
org.apache.hadoop.fs 下的FileSystem
实现有 DistributedFileSystem

该类是个抽象类,只能通过来类的get方法得到具体类。

构造方法

该类是一个抽象类,通过以下两种静态工厂方法可以过去FileSystem实例:

public staticFileSystem.get(Configuration conf) throws IOException

public staticFileSystem.get(URI uri, Configuration conf) throws IOException

常见操作:
具体方法实现

1、public boolean mkdirs(Path f) throws IOException

一次性新建所有目录(包括父目录), f是完整的目录路径。

2、public FSOutputStream create(Path f) throws IOException

创建指定path对象的一个文件,返回一个用于写入数据的输出流

create()有多个重载版本,允许我们指定是否强制覆盖已有的文件、文件备份数量、写入文件缓冲区大小、文件块大小以及文件权限。

3、public boolean copyFromLocal(Path src, Path dst) throws IOException

将本地文件拷贝到文件系统

4、public boolean exists(Path f) throws IOException

检查文件或目录是否存在

5、public boolean delete(Path f, Boolean recursive)

永久性删除指定的文件或目录,如果f是一个空目录或者文件,那么recursive的值就会被忽略。只有recursive=true时,一个非空目录及其内容才会被删除。

6、FileStatus类封装了文件系统中文件和目录的元数据,包括文件长度、块大小、备份、修改时间、所有者以及权限信息。

通过"FileStatus.getPath()"可查看指定HDFS中某个目录下所有文件。

可以按一下方式初始化:

//initialization
    static Configuration conf = newConfiguration();
    static FileSystem hdfs;
    static {
        String path ="/usr/java/hadoop-1.0.3/conf/";
        conf.addResource(newPath(path + "core-site.xml"));
        conf.addResource(newPath(path + "hdfs-site.xml"));
        conf.addResource(newPath(path + "mapred-site.xml"));
        path ="/usr/java/hbase-0.90.3/conf/";
        conf.addResource(newPath(path + "hbase-site.xml"));
        try {
            hdfs =FileSystem.get(conf);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
(1) 遍历文件
public class FileSystemTest1 {

    static FileSystem fs;

    static {
        try {
            fs = FileSystem.get(new URI("hdfs://cluster-host1:9000"),new Configuration());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

    }
    // 这里可以是conf 或者 是 uri
    public static void main(String[] args) throws Exception {
        System.out.println(fs);
        listFiles("/");
    }

    public static void listFiles(String dirName)throws IOException {
        Path f = new Path(dirName);
        FileStatus[] status =fs.listStatus(f);
        System.out.println(dirName +" has all files:");
        for (int i = 0; i<status.length; i++) {
            System.out.println(status[i].getPath().toString());
            System.out.println("是否目录:"+status[i].isDirectory());
            System.out.println("是否文件:"+status[i].isFile());
            System.out.println("permission:"+status[i].getPermission());
            System.out.println("owner:"+status[i].getOwner());
            System.out.println("-------");
        }
    }
}

结果:

DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_-1915436331_1, ugi=didi (auth:SIMPLE)]]
/ has all files:
hdfs://cluster-host1:9000/test
是否目录:true
是否文件:false
permission:rwxr-xr-x
owner:hadoop
-------
hdfs://cluster-host1:9000/user
是否目录:true
是否文件:false
permission:rwxr-xr-x
owner:hadoop
-------
(2) 创建目录 mkdir

创建目录可能会遇到权限问题。不传将默认以客户端权限。

    @Test
    public void mkdir() throws IOException {
        String path = "/test/fs";
        fs.mkdirs(new Path(path));//绝对路径,相对路径会在每个用户下
    }

结果:

org.apache.hadoop.security.AccessControlException: Permission denied: user=didi, access=WRITE, inode="/test":hadoop:supergroup:drwxr-xr-x
	at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:308)

需要权限。
我们需要将传入用户。在实例化fs的时候,就要传用户。即可成功。

fs = FileSystem.get(new URI("hdfs://cluster-host1:9000"),
new Configuration(),"hadoop");
(3) 创建一个文件并写入内容 create

把本地的文件的内容写到流中,写入hdfs的创建的文件中

    @Test
    public void createFile() throws IOException {
        // 可以设置块大小,如下边的就是1M,默认128M
        FSDataOutputStream out = fs.create(new Path("/test/fs/createFile.txt"),
                true, 1024000,
                (short) 2, 1048576);
        FileInputStream in = new FileInputStream("/Users/didi/Desktop/hello.txt");
        //使用自带的工具将流写入
        IOUtils.copyBytes(in,out,1024,true);
    }

可以看到写入成功,并且块1M:

[hadoop@cluster-host1 ~]$ hadoop fs -text  /test/fs/createFile.txt
hello didi,this is a test!

在这里插入图片描述

(3)上传本地文件到hdfs
 //copy from local file to HDFS file
    @Test
    public void copyFile() throws IOException{
        String localSrc = "/Users/didi/Desktop/hello.txt";
        String hdfsDst = "/test/fs/";
        Path src = new Path(localSrc);
        Path dst = new Path(hdfsDst);
        fs.copyFromLocalFile(src,dst);

        //list all the files in thecurrent direction
        FileStatus files[] =fs.listStatus(dst);
        System.out.println("Upload to " + hdfsDst);
        for (FileStatus file : files){
            System.out.println(file.getPath());
        }
    }

结果:

Upload to /test/fs/
hdfs://cluster-host1:9000/test/fs/createFile.txt
hdfs://cluster-host1:9000/test/fs/hello.txt

未完待续:参考 https://blog.youkuaiyun.com/wdr2003/article/details/79860809
https://blog.youkuaiyun.com/qq_26323323/article/details/82938425

Hadoop框架-HDFS-客户端API操作 (因为后续我们把关闭对象的操作也封装到了类中的另一方法内,关闭时需要调用该对象)接下来便可以编写代码了,为了方便后续使用,我们把。注意这里我们为mkdirs方法传入的参数仅为1个。命令把FileSystem对象升级为类中的一个。执行,所以只需要写需要执行的操作的代码即可。如果进行校验,则该crc文件不会产生。方法(获取客户端FileSystem对象)方法(关闭客户端FileSystem对象)服务器上,并且HDFS在hadoop的。同样,关闭资源的操作我们也封装到一个。当然,在执行以上操作前,首先要确保。 阅读详情

相关推荐

c++ 操作HDFS

如果由于业务需求无法用python、java以及命令行来操作HDFS,需要用c++的话,不用着急,libhdfs将是为你带来方便。Libhdfs是专门为c以及c++开发者提供的操作HDFS的API库,下面就是两个demo的介绍: 向HDFS的文件中写数据从HDFS的文件中读数据 向HDFS的文件中写数据      代码如下: #ifndef WRITE_H #define WR

hanlaipeng的博客 8243

hadoop抽象文件系统filesystem框架介绍

为了提供对不同数据访问的一致接口,Hadoop借鉴了Linux虚拟文件系统的概念,引入了Hadoop抽象文件系统,并在Hadoop抽象文件系统的基础上,提供了大量的具体文件系统的实现,满足构建于Hadoop上应用的各种数据访问需求。 通过Hadoop抽象文件系统,MapReduce目前可以运行在基于HDFS的集群上,也可以运行在基于Amazon S3的云计算环境里。 Hadoop文件系统API java.io.FileSystem是java.io包的私有抽象类,不能被包以外的类引用。也就是说,不能像类

cyq6239075的博客 3658

hadoop 2.6 源码 解读之FileSystem.get(conf)实现

hdfs 常见的获取文件系统代码,如下 Configuration conf = new Configuration(); FileSystem fs; fs = FileSystem.get(conf); fs 最终指向的是FileSystem哪个子类呢,过程是怎么样的, 逐步跳进代码一看 public static FileSystem ...

zhixingheyi_tian的博客 4055

Hadoop之FileSystem使用

前言: 在对hadoop的HDFS文件系统进行操作的时候,我们使用HADOOP_HOME/bin/hdfs dfs [command],该command指的就是相应的文件操作,这是使用shell的方式。 同样,hadoop也提供了使用java来操作HDFS文件的方法 本次,我们就来简单看下如何使用java来操作HDFS 准备工作: * 创建一个mav...

恐龙弟旺仔的博客 1万+

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1922

Hadoop之HDFS的FileSystem接口详解

基本的文件系统命令操作, 通过hadoop fs-help可以获取所有的命令的详细帮助文件。Java抽象类org.apache.hadoop.fs.FileSystem定义了hadoop的一个文件系统接口。Hadoop中关于文件操作类基本上全部是在"org.apache.hadoop.fs"包中,这些API能够支持的操作包含:打开文件,读写文件,删除文件等。Hadoop类库中...

weixin_34254823的博客 1484

SPAD单光子雪崩二极管:从基础原理到前沿应用

本文深入解析SPAD单光子雪崩二极管的基础原理、硬件实现关键及核心性能参数,并探讨其在激光雷达、量子通信和生物医学成像等前沿领域的创新应用。SPAD凭借超高灵敏度和精确的时间分辨率,正在推动自动驾驶、量子技术和医学诊断等领域的革命性发展。

weixin_30335575的博客 661

hadoop 3 java,Hadoop学习笔记(3)-java操作hdfs的API接口

Java操作hdfs的API接口package com.zhouxy;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileStatu...

weixin_42501892的博客 111

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7123

SAP ABAP SSSLERR_PEER_CERT_UNTRUSTED 证书过期+证书导入+案例详解+注意事项

出于 IT 审计与安全管理,外部系统间通讯发布的 API 主流都是 HTTPS 协议,SAP 支持 SSL 证书。SSL 证书是有效期的,当证书失效时将返回错误 SSSLERR_PEER_CERT_UNTRUSTED ,此时需要导入新效期的证书。这篇文章完整讲解了证书过期处理的全过程。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 2362

Hadoop HDFS——Hadoop实战初级部分学习笔记

5、Hadoop HDFS HDFS 分布式文件系统,高容错性,部署到成本低的硬件;   HDFS架构设计 典型的观察者结构,NameNode(1)-----(*)DataNode, NameNode存储元数据,DataNode存小数据,   HDFS设计目标 假设节点失效是常态,任何一个节点挂了,不影响使用(自动的备份,副本); 简单一致的模型,假设一次写

hdngbj的专栏 1990

从SOMEIP看SOA,汽车电子电器架构的转变

从SOMEIP看SOA,汽车电子电器架构的转变

天赐好车的博客 241

HDFS Java API 操作

java API 操作hdfs

m0_72168501的博客 4313

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1109

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdfs shell操作

hdfs 的shell 操作

m0_72168501的博客 6784

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大数据hadoop之 HDFS接口操作

电脑、浏览器、VMware Workstation Pro软件、已部署的Hadoop环境。在用户目录下创建一个文本文件。注意替换为你的学号。在用户目录下创建一个文本文件。注意替换为你的学号。(2)掌握HDFS Shell接口操作。(1)熟悉HDFS结构体系和基本原理。比较两者的校验码,确认它们是否一致。比较两者的校验码,确认它们是否一致。

m0_60820921的博客 705

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java API操作HDFS

1、基于HDFS 的Java API实现如下功能:(1)本地文件上传到HDFS;(2)从HDFS中下载文件到本地系统;(3)HDFS中目录的创建、删除、重命名;(4)查看目录中所有文件的详细信息。在win系统下不配置hadoop环境,直接运行代码会报错,显示缺少winutils.exe 和 hadoop.dll 两个文件1-将hadoop-win-2.7.7文件夹拷贝到一个没有中文的路径中; 2-在windows系统,配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bi

一指流沙的博客 6761

HDFS常用操作

大数据学习笔记01 学习林子雨大数据教材的一些笔记 HDFS常用操作 启动Hadoop,在HDFS中创建用户目录“/user/hadoop”;$ cd /usr/local/hadoop $ ./sbin/start-dfs.sh $ jps 在Linux系统的本地文件系统的“/usr/local/spark/mycode”目录下新建一个文本文件Word.txt$ cd /usr/local/spark $ mkdir mycode $ touch Word.txt || $vim Word.t

zbb50351772的博客 7637

【Hadoop】HDFS API 操作大全

为了提供对不同数据访问的一致接口,Hadoop借鉴了Linux虚拟文件系统的概念,为此Hadopo提供了一个抽象的文件系统模型FileSystem,HDFS 是其中的一个实现。 FileSystem是Hadoop中所有文件系统的抽象父类,它定义了文件系统所具有的基本特征和基本操作。

康师傅没有眼泪 4168

HDFS的shell操作

HDFS进行文件操作的主要方式包括shell和Java程序两种。

Yuuuuuuhs的博客 1773

使用Java API操作HDFS

Hadoop是使用Java语言编写的,因此可以使用Java API操作Hadoop文件系统。HDFS Shell本质上就是对Java API的应用,通过编程的形式操作HDFS,其核心是使用HDFS提供的Java API构造一个访问客户端对象,然后通过客户端对象对HDFS上的文件进行操作(增、删、改、查)。

m0_73706260的博客 3596

Hadoop HDFS命令操作实例

首先检查master0、slave0虚拟机网络和java版本(”1.7.0_71”),检查后再启动hadoop[csu@master0 hadoop-2.6.0]$ sbin/start-all.sh (启动)[csu@master0 hadoop-2.6.0]$ sbin/stop-all.sh (关闭)再检查是否启动成功1、创建HDFS目录:-p可以递归创建2、查看之前创建的HDFS目录注意:因为登录的用户为csu,所以会显示/user/csu下的目录。

csdn2486的博客 1993
上一篇: HDFS源码-5 FairCallQueue
下一篇: HDFS 块测试(转载)
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值