第 7 章 HDFS
的shell
操作
操作HDFS
有 3 种方式,
hadoop fs <args>
hdfs dfs <args>
hadoop dfs <args>
这 3 种方式中, 前 2 种完全等价: 即可以操作HDFS
, 也可以操作一些其他文件系统:Local FS, HFTP FS, S3 FS, and others
第 3 种方式, 只能操作HDFS
, 目前已经过时, 不建议再使用.
推荐使用:hadoop fs <args>
hdfs
的很多操作命名非常类似于Linux
的shell
命令, 所以学起来并没有难度.
7.2 HDFS
命令综述
使用如下格式来操作HDFS
的Shell
.
hadoop fs <args>
所有的
shell
命令都会使用到path URIs
作为参数.URI
的格式:scheme://authority:port/path
如果操作
HDFS
,scheme
就是hdfs
如果操作本地文件系统,
scheme
就是file
scheme
和authority
都可以省略, 如果省略则默认使用hdfs://NameNodeHost:port
(NameNodeHost:port
是你在core-site.xml
中设置的值)我们使用的的是都是省略掉
scheme
和authority
如果操作本地系统, 用本地文件系统提供的
shell
, 而不会使用HDFS
提供的shell
例如:
hadoop fs -ls hdfs://hadoop201:9000/
# 完全等价于:
hadoop fs -ls /
# 操作本地文件系统. file:// 协议. 最后一个 / 表示根目录
hadoop fs -ls file:///
# 完全等价于:
ls
7.3 HDFS
常用的shell
命令
ls
显示目录信息.
hadoop fs -ls /
put
把本地文件上传到
HDFS
.语法:
hadoop fs -put localFile hdfsFile
options
:-f
: 如果已经存在, 则强制覆盖-p
: 保留文件的访问和修改时间, 拥有者和权限.hadoop fs -put words.txt /a
注意:
- 也可以同时上传多个:
hadoop fs -put localFile1 loalFile2 hdfsFile
- 也可以同时上传多个:
get
从
HDFS
下载文件到本地语法:
hadoop fs -get <src> <localDir>
options
:-p
:-f
:-ignorecrc
: 下载文件的时候忽略CRC
校验-crc
: write CRC checksums for the files downloaded.
cat
查看文件内容
appendToFile
把本地文件系统的文件追加到
HDFS
中的文件的尾部. 也可以把标准输入流中的数据追加到HDFS
中的文件的尾部.语法:
hadoop fs -appendToFile <local> ... <dst>
例如:
hadoop fs -appendToFile words3.txt /a/words.txt
mkdir
创建目录. 使用方式和Linux
下的mkdir
一致.
tail
显示一个文件的末尾
chgrp 、chmod、chown
:linux
文件系统中的用法一样,修改文件所属权限
copyFromLocal
从本地文件系统中拷贝文件到hdfs路径去
copyToLocal
从
HDFS
拷贝到本地.与
get
类似, 比get
更加严格, 因为目的地严格限制在了本地文件系统
copyFromLocal
从本地
copy
到HDFS
与
put
类似, 比put
更严格, 因为源严格限制在了本地文件系统.
cp
: 从hdfs
的一个路径拷贝到hdfs
的另一个路径
mv
:在
hdfs
目录中移动文件
getmerge
合并下载多个文件
rm
删除文件或文件夹
rmdir
删除空目录
setrep
设置
hdfs
中文件的副本数量
touchz
创建一个长度为
0
的文件. 类似于Linux
的touch
命令
df
显示可用空间
du
显示目录或文件的占用空间