- HDFS Shell命令使用
- 1. mkdir:创建文件夹
- 示例1:在分布式主目录下新建文件夹test
- 示例2:在根目录下新建文件夹/test/dir0/dir1,如果上一级目录不存在,需要使用到-p参数。
- 2. touchz:新建文件
- 示例:在/test/下新建文件file1
- 3. ls 列指定目录文件和目录
- 表一ls命令选项和功能
- 示例1:列出/test目录下的所有文件和目录信息
- 示例2:列出/test目录信息
- 示例3:列出目录和文件的大小
- 示例4:循环列出目录、子目录及文件信息
- 4. rm删除目录和文件
- 表二rm命令的选项和功能
- 示例1:删除文件
- 示例2:删除目录及目录下的目录和文件
- 5. put/get:上传/下载
- 示例1:把本地新建的文件test.txt放到分布式文件系统主目录下,保存名为hfile;
- 示例2:把分布式文件系统目录下的文件复制到本地
- 示例3:把本地新建的文件test.txt放到分布式文件系统主目录下,覆盖原来的文件
- 示例4:把本地新建的文件test.txt放到分布式文件系统主目录下,保持源文件属性
- 6. cat、text、tail:查看文件内容
- 示例1:查看文件的内容
- 7. appendToFile:追写文件
- 示例1:把本地文件系统文件追加到分布式文件系统中
- 8. du:显示占用磁盘空间大小
- 示例1:显示分布式主目录下文件和目录大小
- 9. cp复制文件
- 示例1:
- 10. chmod修改文件权限
- 示例1:
- 示例2:
- 11. chown修改文件属主和组
- 示例1:
- 示例2:
- 12. chgrp修改文件属组
- 示例1:
- 示例2:
- 13. dfsadmin显示HDFS运行状态和管理HDFS
- 表三 dfsadmin命令选项和功能
- 示例1:显示文件系统的基本信息和统计信息
- 示例2:获取安全模式
- 示例3:进入安全模式
- 示例3:可以强制创建检查点
- 示例4:
- 14. Namenode 格式化升级回滚
- 15. fsck检查实用程序
- 示例1:检查目录中文件完整性
- 示例2:移动找到已损坏的文件
- 示例3:删除已损坏的文件
- 示例4:检查HDFS系统上/test目录下的块信息和文件名
hadoop fs与hdfs dfs的命令的使用是相似的,本实验使用的是hdfs dfs命令,所有命令的操作都是在hadoop用户下进行。
1. mkdir:创建文件夹使用方法:hdfs fs -mkdir [-p]
接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。
[hadoop@master ~]$ hdfs dfs -mkdir /test
[hadoop@master ~]$hdfs dfs -ls /
结果(如图2-1所示):
[hadoop@master ~]$ hdfs dfs -mkdir -p /test/dir0/dir1
[hadoop@master ~]$ hdfs dfs -ls /test/dir0
结果(如图2-2所示):
使用方法:hdfs fs -touchz URI [URI …]
当前时间下创建大小为0的空文件,若大小不为0,返回错误信息。
[hadoop@master ~]$ hdfs dfs -touchz /test/file1
[hadoop@master ~]$ hdfs dfs -ls /test/
结果(如图2-3所示):
使用方法:hdfs dfs -ls [-d][-h][-R]
表一ls命令选项和功能| 选项 | 功能说明 |
|---|---|
| -d | 返回paths |
| -h | 按照KMG数据大小单位显示文件大小,如果没有单位,默认认为B |
| -R | 级联显示paths下文件,这里paths是个多级目录 |
[hadoop@master ~]$ hdfs dfs -ls /test
结果(如图2-4所示):
[hadoop@master ~]$ hdfs dfs -ls -d /test
结果(如图2-5所示):
[hadoop@master ~]$ hdfs dfs -ls -h /test
结果(如图2-6所示):
因为这些文件和目录都是新建的,所以文件和目录的大小为零。
[hadoop@master ~]$ hdfs dfs -ls -R /test
结果(如图2-7所示):
使用方法:hdfs dfs -rm [-f] [-r|-R] [-skip Trash]
表二rm命令的选项和功能| 选项 | 说明 |
|---|---|
| -f | 如果要删除的文件不存在,不显示提示和错误信息 |
| -r l R | 级联删除目录下的所有文件和子目录文件 |
| -skipTrash | 直接删除,不进入垃圾回车站 |
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0
[hadoop@master ~]$ hdfs dfs -rm /test/dir0/file3
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0
结果:
删除前(如图2-8所示)
删除后(如图2-9所示)
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0
[hadoop@master ~]$ hdfs dfs -rm -r /test/dir0
[hadoop@master ~]$ hdfs dfs -ls -R /test/
结果:
删除前(如图2-10所示):
删除后(如图2-11所示):
使用方法: hdfs dfs -put [-f] [-p] …
hdfs dfs -get [-p] [-ignoreCrc] [-crc] …
put将本地文件系统的复制到HDFS文件系统的目录下
get 将HDFS中的文件复制到本地文件系统中,与-put命令相反
-f如果文件在分布式文件系统上已经存在,则覆盖存储,若不加则会报错;-p保持源文件的属性(组、拥有者、创建时间、权限等);-ignoreCrc同上。
(如图2-12所示)
[hadoop@master ~]$ touch /tmp/test.txt
[hadoop@master ~]$ ls -l /tmp/test.txt
[hadoop@master ~]$ hdfs dfs -put /tmp/test.txt /test/hfile
[hadoop@master ~]$ hdfs dfs -ls /test/
[hadoop@master3 hadoop]$ hdfs dfs -get /test/hfile /home/hadoop/hfile
[hadoop@master ~]$ ls -l /home/hadoop/hfile
结果(如图2-13所示):
(如图2-14和2-15所示)
[hadoop@master ~]$ hdfs dfs -ls /test/hfile
[hadoop@master ~]$ hdfs dfs -put -f /home/hadoop/hfile /test/hfile
[hadoop@master ~]$ hdfs dfs -ls /test/hfile
[hadoop@master ~]$ ls -l /home/hadoop/file
结果(如图2-16和2-17所示):
[hadoop@master ~]$ hdfs dfs -put -p /home/hadoop/file /test/
[hadoop@master ~]$ hdfs dfs -ls /test/file
使用方法:hdfs dfs -cat/text [-ignoreCrc]
Hdfs dfs -tail [-f]
其中:-ignoreCrc忽循环检验失败的文件;-f动态更新显示数据,如查看某个不断增长的文件的日志文件。
3个命令都是在命令行窗口查看指定文件内容。区别是text不仅可以查看文本文件,还可以查看压缩文件和Avro序列化的文件,其他两个不可以;tail查看的是最后1KB的文件(Linux上的tail默认查看最后10行记录)。
(如图2-18、2-19和2-20)
[hadoop@master ~]$ hdfs dfs -cat /test/file
[hadoop@master ~]$ hdfs dfs -text /test/file
[hadoop@master ~]$ hdfs dfs -tail /test/file
使用方法:hdfs dfs -appendToFile …
示例1:把本地文件系统文件追加到分布式文件系统中(如图2-21所示)
[hadoop@master ~]$ cat /home/hadoop/file2
[hadoop@master ~]$ hdfs dfs -appendToFile /home/hadoop/file2 /test/file2
[hadoop@master ~]$ hdfs dfs -cat /test/file2
使用方法: hdfs dfs -du [-s] [-h]
默认按字节显示指定目录所占空间大小。其中,-s显示指定目录下文件总大小;-h按照KMG数据大小单位显示文件大小,如果没有单位,默认为B。
(如图2-22所示)
[hadoop@master ~]$ hdfs dfs -du /test/
[hadoop@master ~]$ hdfs dfs -du -h /test/(如图2-23所示)
[hadoop@master ~]$ hdfs dfs -du -s /test/(如图2-24所示)
将文件从SRC复制到DST,如果指定了多个SRC,则DST必须为一个目录
使用方法:hdfs fs –cp SRC [SRC …] DST
(如图2-25所示)
[hadoop@master ~]$ hdfs dfs -mkdir /test/dir0
[hadoop@master ~]$ hdfs dfs -cp /test/file2 /test/dir0
[hadoop@master ~]$ hdfs dfs -ls /test/dir0
使用方法:hdfs fs -chmod [-R]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。
(如图2-26所示)
[hadoop@master ~]$ hdfs dfs -chmod 777 /test/file2
[hadoop@master ~]$ hdfs dfs -ls /test/file2
(如图2-27所示)
[hadoop@master ~]$ hdfs dfs -chmod -R 777 /test/dir0/
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0
使用方法:hdfs dfs -chmod [-R]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。
(如图2-28所示)
[hadoop@master ~]$ hdfs dfs -chown hadoop:hadoop /test/file2
[hadoop@master ~]$ hdfs dfs -ls /test/file2
(如图2-29所示)
[hadoop@master ~]$ hdfs dfs -chown -R hadoop:hadoop /test/dir0
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0
使用方法:hdfs fs -chgrp [-R] GROUP URI [URI …]
改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。
(如图2-30所示)
[hadoop@master ~]$ hdfs dfs -ls /test/file5
[hadoop@master ~]$ hdfs dfs -chgrp hadoop /test/file5
[hadoop@master ~]$ hdfs dfs -ls /test/file5
(如图2-31所示)
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir1
[hadoop@master ~]$ hdfs dfs -chgrp -R hadoop /test/dir1
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir1
dfsadmin是一个多任务客服端工具,用来显示HDFS运行状态和管理HDFS,文件的命令(如图2-32所示):
[hadoop@master ~]$ hdfs dfsadmin -help
| 命令选项 | 功能描述 |
|---|---|
| -report | 查看文件系统的基本信息和统计信息 |
| 安全模式命令。 | |
| -saveNamespace | 可以强制创建检查点,仅仅在安全模式下面运行 |
| -refreshNodes | 重新读取hosts和exclude文件,使新的节点或需要退出集群的节点能够被NameNode重新识别。这个命令在新增节点或注销节点时用到。 |
| -finalizeUpgrade | 终结HDFS的升级操作。DataNode删除前一个版本的工作目录,之后NameNode也这样做。 |
| 请求当前系统的升级状态 l 升级状态的细节 l 强制升级操作 | |
| -metasave filename | 保存NameNode的主要数据结构到hadoop.log.dir属性指定的目录下的 < filename>文件中。 |
| -setQuota < quota>< dirname>……: | 为每个目录< dirname>设定配额< quota>。目录配额是一个长整形整数,强制设定目录树下的名字个数。 |
| -clrQuota < dirname>……< dirname> | 为每个目录< dirname>清除配额设定 |
| -fetchImage < local directory> | 把最新的文件系统镜像文件从元数据节点上下载到本地指定目录 |
| -clrQuota , < dirname> , < dirname> | 清除每个目录dirname的配额。以下情况会报错:(1)这个目录不存在或者是一个文件(2)用户不是管理员 |
| 此选项将关闭自动尝试恢复故障的存储副本。如果故障的存储可用,再次尝试还原检查点期间的日志编辑文件或文件系统镜像文件。“check”选项将返回当前设置 | |
| -help | 查看帮助 |
(如图2-33所示)
[hadoop@master ~]$ hdfs dfsadmin -report
(如图2-34所示)
[hadoop@master ~]$ hdfs dfsadmin -safemode get
(如图2-35所示)
[hadoop@master ~]$ hdfs dfsadmin -safemode enter
(如图2-36所示)
[hadoop@master ~]$ hdfs dfsadmin -saveNamespace
(如图2-37所示)
[hadoop@master ~]$ hdfs dfsadmin -refreshNodes
运行namenode进行格式化、升级回滚等操作
表四namenode选项和功能
| 命令选项 | 功能描述 |
|---|---|
| -format | 格式化元数据节点。先启动元数据节点,然后格式化,最后关闭 |
| -upgrade | 元数据节点版本更新后,应该以upgrade方式启动 |
| -rollback | 回滚到前一个版本。必须先停止集群,并且分发旧版本才可用 |
| -importCheckpoint | 从检查点目录加载镜像,目录由fs.checkpoint.dir指定 |
| -finalize | 持久化最近的升级,并把前一系统状态删除,这个时候再使用rollback |
fsck命令运行HDFS文件系统检查实用程序,用于和MapReduce作业交互。
表五fsck选项和功能
| 命令选项 | 功能描述 |
|---|---|
| -path | 检查这个目录中的文件是否完整 |
| -move | 移动找到的已损坏的文件到/lost+found |
| -rollback | 回滚到前一个版本。必须先停止集群,并且分发旧版本才可用 |
| -delete | 删除已损坏的文件 |
| -openforwrite | 打印正在打开写操作的文件 |
| -files | 打印正在检查的文件名 |
| -blocks | 打印block报告(需要和-files参数一起使用) |
| -locations | 打印每个block的位置信息(需要和-files参数一起使用) |
| -racks | 打印位置信息的网络拓扑图(需要和-files参数一起使用) |
(如图2-38所示)
[hadoop@master ~]$ hdfs fsck /test/dir0
(如图2-39所示)
[hadoop@master ~]$ hdfs fsck -move
(如图2-40所示)
[hadoop@master ~]$ hdfs fsck -delete
(如图2-41所示)
[hadoop@master ~]$ hdfs fsck /test -blocks -files



