欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Hadoop基础学习笔记系列(七)HDFS访问命令、API和应用

时间:2023-05-02
目录

访问

1 通过命令行使用HDFS2 应用编程接口

Native JAVA API:C API for HDFS:WebHDFS REST API: 3 HDFS NFS Gateway4 其他

Apache FlumeApache Sqoop 应用 访问 1 通过命令行使用HDFS

通过bin/hdfs调用
user命令(移动数据、获取文件信息等)

查看指定目录下内容

hdfs dfs –ls [文件目录]hdfs dfs -ls -R / //显式目录结构 hdfs dfs -ls / //查看根目录所有文件夹,注意ls后面和/之间有空格hdfs dfs –lsr //循环列出目录、子目录及文件信息 eg: hdfs dfs –ls /user/wangkai.pt

创建文件夹

hdfs dfs -mkdir /user/test //dir指的是directory,文件夹

创建随机数据文件

dd if=/dev/urandom of=sample.txt bs=64M count=16//block size是64M,一共16个块//if:输入文件名;of:输出文件名

其他参数说明见Linux dd 命令 | 菜鸟教程 (runoob.com)

将本地文件存储至hadoop**

hdfs dfs –put [本地地址] [hadoop目录]hdfs dfs –put /home/t/file.txt /user/t hdfs dfs –copyFromLocal test.txt /user/sunlightcs/test.txt //从本地文件系统复制文件到HDFS文件系统,等同于put命令

查看文件状态

hdfs fsck /user/test/sample.txt

打开某个已存在文件

hdfs dfs –cat [file_path] eg:hdfs dfs -cat /user/wangkai.pt/data.txt

将hadoop上某个文件down至本地已有目录下

hadoop dfs -get [文件目录] [本地目录] hadoop dfs –get /user/t/ok.txt /home/t hdfs dfs –copyToLocal /user/sunlightcs/test.txt test.txt //从HDFS文件系统复制文件到本地文件系统,等同于get命令

查看最后1KB的内容

hdfs dfs –tail /user/sunlightcs/test.txt

修改权限/拥有者

hdfs dfs –chmod [-R] MODE /user/sunlightcs //修改HDFS系统中/user/sunlightcs目录权限,MODE可以为相应权限的3位数或+/-{rwx},选项-R递归执行hdfs dfs –chown [-R] /user/sunlightcs //修改HDFS系统中/user/sunlightcs目录拥有者,选项-R递归执行

查看文件大小

hdfs dfs –du PATH //显示该目录中每个文件或目录的大小(disk usage) hdfs dfs –dus PATH //类似于du,PATH为目录时,会显示该目录的总大小(disk usage summary)

复制

hdfs dfs –cp SRC [SRC …] DST //将文件从SRC复制到DST,如果指定了多个SRC,则DST必须为一个目录

删除

hdfs dfs –rm [文件地址] //删除hadoop上指定文件或空文件夹hdfs dfs –rm /user/t/ok.txt hdfs dfs –rmr /user/t //删除hadoop上指定文件夹(包含子目录等)

将hadoop上某个文件重命名或移动

hdfs dfs –mv /user/test.txt /user/ok.txt //将test.txt重命名为ok.txthdfs dfs -mv src dest //在HDFS内移动文件

查看帮助

hdfs dfs -helphdfs dfs –help ls //查看某个[ls]命令的帮助文档

Administrator命令

查看报告

hdfs dfsadmin -report

debug命令
查看更多Commands:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

2 应用编程接口 Native JAVA API:

base class:org.apache.hadoop.fs.FileSystem
JAVA API: http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html

base class
org.apache.hadoop.fs.FileSystem

重要class
FSDaraInputStream
方法:
read:从给定位置读取bytes
readFully:读取流数据到缓冲区
seek:寻找offset(偏移量)
getPos:获取当前stream中的position

FSDataOutputStream
方法:
getPos:获取当前stream中的position
hflush:清空缓冲区数据
close:关闭输出流

举例
使用API从HDFS中读取

//创建实例FileSystem fs = FileSystem.get(URL.create(uri),conf);//打开输入流in = fs.open(new Path(uri));//使用IO工具将数据从输入流中copyIOUtils.copyBytes(in,System.out,4096,false)//关闭流IOUtils.closeStream(in);

使用API向HDFS中写入

//创建实例FileSystem fs = FileSystem.get(URL.create(outuri),conf);//创建文件out = fs.create(new Path(outuri));//写入输出流out.write(buffer,0,nbytes);//关闭文件out.close();

C API for HDFS:

hdfs.h(header file)
C/libhdfs: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/LibHdfs.html

WebHDFS REST API:

HTTP的get,put,post,delete
WebHDFS API:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html

3 HDFS NFS Gateway

HDFS NFS GatewayCSDN博客

NFS Gateway支持NFSv3,允许HDFS作为客户端本地文件系统的一部分挂载在本地文件系统。目前,NFS Gateway支持和启用了下面的使用模式:

用户可以在基于NFSv3客户端兼容的操作系统上的本地文件系统上浏览HDFS文件系统。用户可以从挂载到本地文件系统的HDFS文件系统上下载文件。用户可以从本地文件系统直接上传文件到HDFS文件系统。用户可以通过挂载点直接将数据流写入HDFS。目前支持文件append,随机写还不支持。

将HDFS mount(挂载)到client端(作为文件系统)可以通过regular的fs命令来浏览文件也可以向HDFS上传或下载文件不常用 4 其他 Apache Flume

收集聚合流数据并放进HDFS(like日志数据)

Apache Sqoop

在hadoop和数据仓库(关系型数据库)之间的主要传输工具

应用

Hbase可以在HDFS上运行并且提供了很好的聚合性
Spark可以直接在HDFS上运行(不需要其他hadoop组件)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。