栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS常用的shell命令

HDFS常用的shell命令

文章目录
  • 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目录下的块信息和文件名

HDFS Shell命令使用

hadoop fs与hdfs dfs的命令的使用是相似的,本实验使用的是hdfs dfs命令,所有命令的操作都是在hadoop用户下进行。

1. mkdir:创建文件夹

使用方法:hdfs fs -mkdir [-p]
接受路径指定的uri作为参数,创建这些目录。其行为类似于Unix的mkdir -p,它会创建路径中的各级父目录。

示例1:在分布式主目录下新建文件夹test

[hadoop@master ~]$ hdfs dfs -mkdir /test
[hadoop@master ~]$hdfs dfs -ls /
结果(如图2-1所示):

示例2:在根目录下新建文件夹/test/dir0/dir1,如果上一级目录不存在,需要使用到-p参数。

[hadoop@master ~]$ hdfs dfs -mkdir -p /test/dir0/dir1
[hadoop@master ~]$ hdfs dfs -ls /test/dir0
结果(如图2-2所示):

2. touchz:新建文件

使用方法:hdfs fs -touchz URI [URI …]
当前时间下创建大小为0的空文件,若大小不为0,返回错误信息。

示例:在/test/下新建文件file1

[hadoop@master ~]$ hdfs dfs -touchz /test/file1
[hadoop@master ~]$ hdfs dfs -ls /test/
结果(如图2-3所示):

3. ls 列指定目录文件和目录

使用方法:hdfs dfs -ls [-d][-h][-R]

表一ls命令选项和功能
选项功能说明
-d返回paths
-h按照KMG数据大小单位显示文件大小,如果没有单位,默认认为B
-R级联显示paths下文件,这里paths是个多级目录
示例1:列出/test目录下的所有文件和目录信息

[hadoop@master ~]$ hdfs dfs -ls /test
结果(如图2-4所示):

示例2:列出/test目录信息

[hadoop@master ~]$ hdfs dfs -ls -d /test
结果(如图2-5所示):

示例3:列出目录和文件的大小

[hadoop@master ~]$ hdfs dfs -ls -h /test
结果(如图2-6所示):

因为这些文件和目录都是新建的,所以文件和目录的大小为零。

示例4:循环列出目录、子目录及文件信息

[hadoop@master ~]$ hdfs dfs -ls -R /test
结果(如图2-7所示):

4. rm删除目录和文件

使用方法:hdfs dfs -rm [-f] [-r|-R] [-skip Trash]

表二rm命令的选项和功能
选项说明
-f如果要删除的文件不存在,不显示提示和错误信息
-r l R级联删除目录下的所有文件和子目录文件
-skipTrash直接删除,不进入垃圾回车站
示例1:删除文件

[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所示)

示例2:删除目录及目录下的目录和文件

[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所示):

5. put/get:上传/下载

使用方法: hdfs dfs -put [-f] [-p] …
hdfs dfs -get [-p] [-ignoreCrc] [-crc] …
put将本地文件系统的复制到HDFS文件系统的目录下
get 将HDFS中的文件复制到本地文件系统中,与-put命令相反
-f如果文件在分布式文件系统上已经存在,则覆盖存储,若不加则会报错;-p保持源文件的属性(组、拥有者、创建时间、权限等);-ignoreCrc同上。

示例1:把本地新建的文件test.txt放到分布式文件系统主目录下,保存名为hfile;

(如图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/

示例2:把分布式文件系统目录下的文件复制到本地

[hadoop@master3 hadoop]$ hdfs dfs -get /test/hfile /home/hadoop/hfile
[hadoop@master ~]$ ls -l /home/hadoop/hfile
结果(如图2-13所示):

示例3:把本地新建的文件test.txt放到分布式文件系统主目录下,覆盖原来的文件

(如图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

示例4:把本地新建的文件test.txt放到分布式文件系统主目录下,保持源文件属性

[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

6. cat、text、tail:查看文件内容

使用方法:hdfs dfs -cat/text [-ignoreCrc]
Hdfs dfs -tail [-f]
其中:-ignoreCrc忽循环检验失败的文件;-f动态更新显示数据,如查看某个不断增长的文件的日志文件。
3个命令都是在命令行窗口查看指定文件内容。区别是text不仅可以查看文本文件,还可以查看压缩文件和Avro序列化的文件,其他两个不可以;tail查看的是最后1KB的文件(Linux上的tail默认查看最后10行记录)。

示例1:查看文件的内容

(如图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

7. appendToFile:追写文件

使用方法: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

8. du:显示占用磁盘空间大小

使用方法: hdfs dfs -du [-s] [-h]
默认按字节显示指定目录所占空间大小。其中,-s显示指定目录下文件总大小;-h按照KMG数据大小单位显示文件大小,如果没有单位,默认为B。

示例1:显示分布式主目录下文件和目录大小

(如图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所示)

9. cp复制文件

将文件从SRC复制到DST,如果指定了多个SRC,则DST必须为一个目录
使用方法:hdfs fs –cp SRC [SRC …] DST

示例1:

(如图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

10. chmod修改文件权限

使用方法:hdfs fs -chmod [-R] URI [URI …]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。

示例1:

(如图2-26所示)
[hadoop@master ~]$ hdfs dfs -chmod 777 /test/file2
[hadoop@master ~]$ hdfs dfs -ls /test/file2

示例2:

(如图2-27所示)
[hadoop@master ~]$ hdfs dfs -chmod -R 777 /test/dir0/
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0

11. chown修改文件属主和组

使用方法:hdfs dfs -chmod [-R] URI [URI …]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。

示例1:

(如图2-28所示)
[hadoop@master ~]$ hdfs dfs -chown hadoop:hadoop /test/file2
[hadoop@master ~]$ hdfs dfs -ls /test/file2

示例2:

(如图2-29所示)
[hadoop@master ~]$ hdfs dfs -chown -R hadoop:hadoop /test/dir0
[hadoop@master ~]$ hdfs dfs -ls -R /test/dir0

12. chgrp修改文件属组

使用方法:hdfs fs -chgrp [-R] GROUP URI [URI …]
改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。更多的信息请参见HDFS权限用户指南。

示例1:

(如图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:

(如图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

13. dfsadmin显示HDFS运行状态和管理HDFS

dfsadmin是一个多任务客服端工具,用来显示HDFS运行状态和管理HDFS,文件的命令(如图2-32所示):
[hadoop@master ~]$ hdfs dfsadmin -help

表三 dfsadmin命令选项和功能
命令选项功能描述
-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查看帮助
示例1:显示文件系统的基本信息和统计信息

(如图2-33所示)
[hadoop@master ~]$ hdfs dfsadmin -report

示例2:获取安全模式

(如图2-34所示)
[hadoop@master ~]$ hdfs dfsadmin -safemode get

示例3:进入安全模式

(如图2-35所示)
[hadoop@master ~]$ hdfs dfsadmin -safemode enter

示例3:可以强制创建检查点

(如图2-36所示)
[hadoop@master ~]$ hdfs dfsadmin -saveNamespace

示例4:

(如图2-37所示)
[hadoop@master ~]$ hdfs dfsadmin -refreshNodes

14. Namenode 格式化升级回滚

运行namenode进行格式化、升级回滚等操作
表四namenode选项和功能

命令选项功能描述
-format格式化元数据节点。先启动元数据节点,然后格式化,最后关闭
-upgrade元数据节点版本更新后,应该以upgrade方式启动
-rollback回滚到前一个版本。必须先停止集群,并且分发旧版本才可用
-importCheckpoint从检查点目录加载镜像,目录由fs.checkpoint.dir指定
-finalize持久化最近的升级,并把前一系统状态删除,这个时候再使用rollback
15. fsck检查实用程序

fsck命令运行HDFS文件系统检查实用程序,用于和MapReduce作业交互。
表五fsck选项和功能

命令选项功能描述
-path检查这个目录中的文件是否完整
-move移动找到的已损坏的文件到/lost+found
-rollback回滚到前一个版本。必须先停止集群,并且分发旧版本才可用
-delete删除已损坏的文件
-openforwrite打印正在打开写操作的文件
-files打印正在检查的文件名
-blocks打印block报告(需要和-files参数一起使用)
-locations打印每个block的位置信息(需要和-files参数一起使用)
-racks打印位置信息的网络拓扑图(需要和-files参数一起使用)
示例1:检查目录中文件完整性

(如图2-38所示)
[hadoop@master ~]$ hdfs fsck /test/dir0

示例2:移动找到已损坏的文件

(如图2-39所示)
[hadoop@master ~]$ hdfs fsck -move

示例3:删除已损坏的文件

(如图2-40所示)
[hadoop@master ~]$ hdfs fsck -delete

示例4:检查HDFS系统上/test目录下的块信息和文件名

(如图2-41所示)
[hadoop@master ~]$ hdfs fsck /test -blocks -files

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号