栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

目录

访问

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.txt
hdfs dfs -mv src dest //在HDFS内移动文件

查看帮助

hdfs dfs -help
hdfs 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工具将数据从输入流中copy
IOUtils.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组件)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号