HDFS Shell介绍
Shell在计算机科学中俗称“壳”,是提供给使用者使用界面的进行与系统交互的软件,通过接收用户输入的命令执行相应的操作,Shell分为图形界面Shell和命令行式Shell。
HDFS Shell包含类似Shell的命令,示例如下:
hadoop fs <args>
hadoop dfs <args>
hdfs dfs <args>
上述命令中,“hadoop fs”是使用面最广,可以操作任何文件系统,如本地系统、HDFS等,“hadoop dfs”则主要针对HDFS文件系统,已经被“hdfs dfs”代替。
文件系统(FS)Shell包含了各种的类shell的命令,可以直接与Hadoop分布式文件系统以及其他文件系统进行交互,如与Local FS、HTTP FS、S3 FS文件系统交互等。通过命令行的方式进行交互,具体操作常用命令,如表1所示。
表1 HDFS Shell参数
命令参数 | 功能描述 |
---|---|
-ls | 查看指定路径的目录结构 |
-du | 统计目录下所有文件大小 |
-mv | 移动文件 |
-cp | 复制文件 |
-rm | 删除文件/空白文件夹 |
-put | 上传文件 |
-cat | 查看文件内容 |
-text | 将源文件输出为文本格式 |
-mkdir | 创建空白文件夹 |
-help | 帮助 |
从表3-1可以看出,HDFS支持的命令行很多,但这里只列举常用的一部分,如果需要了解全部命令或使用过程中遇到问题都可以使用“hadoop fs –help”命令获取帮助文档,也可以通过Hadoop官方文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
学习,接下来对这些常用的命令进行操作演示。
1.ls命令
ls命令用于查看指定路径的当前目录结构,类似于Linux系统中的ls命令,其语法格式如下:
hadoop fs –ls [-d] [-h] [-R] <args>
其中,各项参数说明如下:
l -d:将目录显示为普通文件。
l -h:使用便于操作人员读取的单位信息格式。
l -R:递归显示所有子目录的信息。
示例代码如下:
$ hadoop fs -ls /
上述示例代码,执行完成后会展示HDFS根目录下的所有文件及文件夹,如图1所示。
图1 ls命令效果
2.mkdir命令
mkdir命令用于在指定路径下创建子目录,其中创建的路径可以采用URI格式进行指定,与Linux命令mkdir相同,可以创建多级目录,其语法格式如下:
hadoop fs –mkdir [-p] <paths>
其中-p参数表示创建子目录使先检查路径是否存在,如果不存在,则创建相应的各级目录。
示例代码如下:
$ hadoop fs -mkdir -p /itcast/hadoop
上述示例代码,是在HDFS系统的根目录下创建“itcast/hadoop”层级文件夹,“-p”参数表示递归创建路径中的各级目录。执行命令后效果如图2所示。
图2 mkdir命令效果
3.put命令
put命令用于将本地系统的文件或文件夹复制到HDFS系统上去,其语法格式如下:
hadoop fs -put [-f] [-p] <locationsrc> <det>
其中各项说明如下:
- -f:覆盖目标文件
- -p:保留访问和修改时间、权限
示例代码如下:
$ hadoop fs -put -f install.log /
上述指令执行成功后查询HDFS根目录效果如图3所示。
图3 put命令效果