访问
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
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
HTTP的get,put,post,delete
WebHDFS API:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html
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组件)