HDFS常见的Shell操作
文章目录
- HDFS常见的Shell操作
 - 写在前面
 - 基本语法
 - HDFS命令大全
 - 常用命令实操
 - 准备工作
 - 上传文件
 - 下载文件
 - HDFS直接操作
 
写在前面
- Hadoop版本:Hadoop-3.x
 - Linux版本:CentOS7.5
 
HDFS的Shell操作是入门Hadoop开发的学习重点
基本语法
Shell客户端操作就是在linux的控制台中操作,shell脚本中操作,Hadoop的shell客户端的命令都在bin目录下
hadoop fs 具体命令或者表述为hdfs dfs 具体命令,两个是完全相同的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpU4nGuh-1676719486517)(0.png)]](https://img-blog.csdnimg.cn/22bf9f7bd7b24a8fb68993b7f0626851.png)
HDFS命令大全
查看HDFS的Shell命令大全
[whybigdata@node01 hadoop-3.1.3]$ bin/hadoop fs
[-appendToFile <localsrc> ... <dst>]
    [-cat [-ignoreCrc] <src> ...]
    [-checksum <src> ...]
    [-chgrp [-R] GROUP PATH...]
    [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
     [-chown [-R] [OWNER][:[GROUP]] PATH...]
    [-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
    [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-count [-q] <path> ...]
    [-cp [-f] [-p] <src> ... <dst>]
    [-createSnapshot <snapshotDir> [<snapshotName>]]
    [-deleteSnapshot <snapshotDir> <snapshotName>]
    [-df [-h] [<path> ...]]
    [-du [-s] [-h] <path> ...]
    [-expunge]
    [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-getfacl [-R] <path>]
    [-getmerge [-nl] <src> <localdst>]
    [-help [cmd ...]]
    [-ls [-d] [-h] [-R] [<path> ...]]
    [-mkdir [-p] <path> ...]
    [-moveFromLocal <localsrc> ... <dst>]
    [-moveToLocal <src> <localdst>]
    [-mv <src> ... <dst>]
    [-put [-f] [-p] <localsrc> ... <dst>]
    [-renameSnapshot <snapshotDir> <oldName> <newName>]
    [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
    [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
    [-setfacl [-R] [{-b|-k}a {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
    [-setrep [-R] [-w] <rep> <path> ...]
    [-stat [format] <path> ...]
    [-tail [-f] <file>]
    [-test -[defsz] <path>]
    [-text [-ignoreCrc] <src> ...]
    [-touchz <path> ...]
    [-usage [cmd ...]]
 
- 向hdfs文件写入内容:shell命令如下(进入到Hadoop安装目录下)
 
echo “写入的内容” | ./bin/hdfs dfs -appendToFile - /usr/whybigdata/text.txt
- 官网Shell命令
 
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
常用命令实操
准备工作
- 启动Hadoop集群(方便后续的测试)
 
[whybigdata@node01 hadoop-3.1.3]$ sbin/start-dfs.sh
[whybigdata@node02 hadoop-3.1.3]$ sbin/start-yarn.sh
 
-help:输出这个命令参数
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -help rm
 
注意:每当我们不知道命令的使用用途时,我们就可以才哦那个
-help参数来查看命令的使用手册
上传文件
-moveFromLocal:从本地剪切粘贴到HDFS
[whybigdata@node01 hadoop-3.1.3]$ touch kongming.txt
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -moveFromLocal ./kongming.txt /sanguo/shuguo
 
-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -copyFromLocal README.txt /
 
-appendToFile:追加一个文件到已经存在的文件末尾
[whybigdata@node01 hadoop-3.1.3]$ touch liubei.txt
[whybigdata@node01 hadoop-3.1.3]$ vim liubei.txt
 
- 输入以下内容
 
san gu mao lu
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt
 
-put:等同于copyFromLocal
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -put ./liubei.txt /user/whybigdata/test/
 
下载文件
-copyToLocal:从HDFS拷贝到Linux本地
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -copyToLocal /sanguo/shuguo/kongming.txt ./
 
-get:等同于copyToLocal,就是从HDFS下载文件到本地
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -get /sanguo/shuguo/kongming.txt ./
 
-getmerge:合并下载多个文件,比如HDFS的目录 /user/whybigdata/test下有多个文件:log.1, log.2,log.3,…
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -getmerge /user/whybigdata/test/* ./merge.txt
 
HDFS直接操作
-ls: 显示目录信息
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -ls /
 
-mkdir:在HDFS上创建新的目录
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -mkdir -p /sanguo/shuguo
 
-cat:查看指定文件的内容
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo/kongming.txt
 
-chgrp、-chmod、-chown:和Linux文件系统中的用法一样,用于修改文件所属权限
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -chmod 666 /sanguo/shuguo/kongming.txt
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -chown whybigdata: whybigdata /sanguo/shuguo/kongming.txt
 
注意:用
-R选项,可以在目录结构中进行递归修改。同时修改文件权限的用户必须是该文件的所有者,否则就是超级用户。
-cp:从HDFS的一个路径拷贝到HDFS的另一个路径
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo/kongming.txt /zhuge.txt
 
-mv:在HDFS目录中移动文件的位置
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -mv /zhuge.txt /sanguo/shuguo/
 
-tail:显示一个文件的末尾1kb的数据
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -tail /sanguo/shuguo/kongming.txt
 
-rm:删除文件或文件夹
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -rm /user/whybigdata/test/jinlian2.txt
 
-r选项表示强制删除,慎重使用
-rmdir:删除空目录
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -mkdir /test
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -rmdir /test
 
-du统计文件夹的大小信息;参数选项说明如下:
-s选项将导致显示文件长度的总和,而不是单个文件。在没有-s选项的情况下,计算是通过从给定的路径深入到1层来完成的。-h选项将以人类可读的方式格式化文件大小(例如,64.0m而不是67108864)。-v选项将以标题行的形式显示列的名称。-x选项将把快照从结果计算中排除。如果没有-x选项(默认),结果总是从所有的IN节点计算出来的,包括给定路径下的所有快照。
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -du -s -h /user/whybigdata/test
2.7 K /user/whybigdata/test
 
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -du -h /user/whybigdata/test
2.3 K /user/whybigdata/test/README.txt
15 K   /user/whybigdata/test/jinlian.txt
1.4 K /user/whybigdata/test/merge.txt
 
du返回三栏,格式如下:
文件大小 消耗的磁盘空间和所有复制的磁盘空间 文件的全路径名称
-setrep:设置HDFS中文件的副本数量
[whybigdata@node01 hadoop-3.1.3]$ hadoop fs -setrep 10 /sanguo/shuguo/kongming.txt
 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfGNfwTr-1676719486518)(1.png)]](https://img-blog.csdnimg.cn/e43e8f266092461fb7f4c8a20f665708.png)
这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。
全文结束!


















