HDFS 的访问方式有两种,一种是HDFS shell,一种是Java API 方式。HDFS shell 命令应使用hadoop fs 或hdfs dfs(其中官网建议使用hdfs dfs 方式访问)。所有的HDFS shell 命令使用URI 路径作为参数,URI 格式是scheme://path,对于HDFS 文件系统,scheme 是hdfs;对于本地文件系统,scheme 是file。其中scheme 是可选的,如果未加指定,默认是HDFS 文件系统。一个HDFS 文件或目录比如/parent/path 可以表示成hdfs://parent/path,或者更简单的/parent/path。
HDFS shell 用法和Linux shell 很相似,可以通过help 命令的查看详细帮助,例查看ls 命令的帮助:hdfs dfs -help ls,下面将常用命令做以介绍:
1. 打印文件列表ls
hdfs dfs -ls hdfs:/
明确说明访问HDFS 系统路径,只访问根目录下的目录和文件,不会递归访问里面的子目录
hdfs dfs -ls /
默认情况下访问HDFS 系统的根目录
hdfs dfs -ls /package/test/
访问指定HDFS 系统下某个目录
hdfs dfs -ls -R /
递归访问HDFS 系统下所有目录和文件,包含子目录
2. 上传文件put
hdfs fs -put file:/root/test.txt /
上传本地test.txt 文件到HDFS 根目录,HDFS 根目录需无同名文件,否则报“File exists”
hdfs dfs -put /root/test.txt /
该命令同上
hdfs dfs -put /root/test.txt /test2.txt
上传并重命名为test2.txt
hdfs dfs -put test1.txt test2.txt hdfs:/
一次上传多个文件到HDFS 路径,采用的是相对路径
hdfs dfs -put /root/folder /
上传文件夹
hdfs dfs -put /root/ folder /new folder
上传并重命名文件夹。
hdfs dfs -put -f /root/test.txt /
上传本地test.txt 文件到HDFS 根目录,如果有同名文件,会覆盖掉
3. 下载文件get
hdfs dfs -get hdfs:/test.txt file:/root/
拷贝文件到本地目录
hdfs dfs -get /test.txt /root/test.txt
拷贝文件到本地目录并重命名
4. 拷贝文件cp(www.daowen.com)
hdfs dfs -cp file:/test.txt hdfs:/test2.txt
从本地拷贝到HDFS
hdfs dfs -cp hdfs:/test.txt hdfs:/test2.txt
从HDFS 拷贝到HDFS
hdfs dfs -cp /test.txt /test2.txt
从HDFS 拷贝到HDFS
5. 删除文件rm
hdfs dfs -rm /test2.txt
删除HDFS 中的test2.txt 文件
hdfs dfs -rm -R /root/
删除HDFS 中root 目录下的所有文件
6. 创建文件touchz
hdfs dfs - touchz /newfile.txt
HDFS 中创建新文件newfile.txt
7. 创建文件夹 mkdir
hdfs dfs -mkdir /newdir
HDFS 中创建文件夹newdir
hdfs dfs -mkdir -p / newdir/newdir1/newdir2
HDFS 中创建多级文件夹
8. 移动文件mv
hdfs dfs -mv /test1.txt /root
将HDFS 中的test1.txt 移动root 目录下
hdfs dfs -mv /test1.txt /test4.txt
达到类似重命名的效果
9. 写入文件 appendToFile
hadoop fs - appendToFile file:/test.txt hdfs:/newfile.txt
读取本地文件内容追加到HDFS 文件
10. 修改文件权限chmod
权限模式同Linux shell 命令中的模式
hdfs dfs -chmod -R 775 /tmp 将tmp 目录下所有文件的权限更改为775
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。