HDFS的Shell操作

文章目录

  • 基本语法
  • 命令大全
  • 常用命令实操
    • 准备工作
    • 上传
    • 下载
    • HDFS直接操作

  
  
  

  

基本语法

  

  

  hadoop fs 具体命令

  或

  hdfs dfs 具体命令

  

两个操作执行结果是完全相同的。

  
  
  

  

命令大全

  

  

HDFS的Shell操作_第1张图片HDFS的Shell操作_第2张图片

  
  
  

  
  

常用命令实操

  

  
  

准备工作

  
  

(1)启动 Hadoop 集群

我的上篇文章写了如何启动Hadoop集群

Hadoop集群启动和停止方法
  

(2)创建 /sanguo 文件夹

[mq@hadoop102 ~]$ hadoop fs -mkdir /sanguo

  
这时候在客户端中就可以看到新建的文件夹了:

http://hadoop102:9870

HDFS的Shell操作_第3张图片

  

  

  

上传

  

  


(1) -moveFromLocal把本地的文件移动到HDFS(从本地剪切粘贴到HDFS)

hadoop fs -moveFromLocal 本地文件路径 客户端路径

  

  

准备工作:

[mq@hadoop102 hadoop-3.1.3]$ vim shuguo.txt

输入:

shuguo

保存退出

HDFS的Shell操作_第4张图片

  

但这时候客户端里并没有 shuguo.txt 文件

HDFS的Shell操作_第5张图片

所以就要把本地的文件移动到HDFS

  

实战操作:

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -moveFromLocal ./shuguo.txt /sanguo

  

刷新一下网页一看

HDFS的Shell操作_第6张图片

文件果然到客户端上了

  

再看看本地

HDFS的Shell操作_第7张图片

刚才他俩之间的 shuguo.txt 没有了,实现了文件的移动而非文件的复制。

  

  


(2) -copyFromLocal把本地的文件复制(拷贝)到 HDFS 路径中

hadoop fs -copyFromLocal 本地文件路径 客户端路径

  

  

实战操作:

[mq@hadoop102 hadoop-3.1.3]$ vim weiguo.txt

文件中输入:weiguo

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -copyFromLocal weiguo.txt /sanguo

因为是 copy ,所以本地的 weiguo.txt 不会删掉

  

  


(3) -put等同于 copyFromLocal

hadoop fs -put 本地文件路径 客户端路径

生产环境中更习惯用 put ,简洁!

  

  

实战操作:

[mq@hadoop102 hadoop-3.1.3]$ vim wuguo.txt

文件中输入:wuguo

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -put wuguo.txt /sanguo

  

  


(4) -appendToFile在一个文件末尾追加内容 —— 把本地文件中的内容追加到HDFS中指定文件的末尾

hadoop fs -appendToFile 本地文件路径 客户端路径

这就要提一嘴HDFS的缺点了:HDFS不允许修改文件内容,只能在文件末尾追加。

  

  

实战操作:

[mq@hadoop102 hadoop-3.1.3]$ vim liubei.txt

文件中输入:liubei

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt

HDFS的Shell操作_第8张图片

文件末尾加了 liubei

  

  

  

下载

  

  


(1) -copyToLocal从HDFS上,把文件复制(拷贝)到本地

hadoop fs -copyToLocal 客户端路径 本地文件路径

  

  

实战操作:

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -copyToLocal /sanguo/shuguo.txt ./

此时本地上也有,集群上也有。

  

  


(2) -get等同于 copyToLocal ,生成环境更习惯用 get

hadoop fs -get 客户端路径 本地文件路径

  

  

实战操作:
  
提一嘴,在下载过程中也能修改名字

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt

把下载下来的 shuguo.txt ,改名为 shuguo2.txt 保存

HDFS的Shell操作_第9张图片

  

  

  

HDFS直接操作

  

  

(1) -ls显示目录信息

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /
Found 6 items
drwxr-xr-x - mq supergroup 0 2022-07-03 13:57 /input
drwxr-xr-x - mq supergroup 0 2022-07-03 13:58 /output
drwxr-xr-x - mq supergroup 0 2022-07-06 00:01 /sanguo
drwx------ - mq supergroup 0 2022-07-03 23:27 /tmp
drwxr-xr-x - mq supergroup 0 2022-07-03 12:31 /wcinput
drwxr-xr-x - mq supergroup 0 2022-07-03 13:35 /wcoutput

HDFS的Shell操作_第10张图片

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /sanguo
Found 3 items
-rw-r–r-- 3 mq supergroup 14 2022-07-06 00:10 /sanguo/shuguo.txt
-rw-r–r-- 3 mq supergroup 7 2022-07-05 23:57 /sanguo/weiguo.txt
-rw-r–r-- 3 mq supergroup 6 2022-07-06 00:01 /sanguo/wuguo.txt

HDFS的Shell操作_第11张图片

  

  

(2) -cat显示文件内容

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo.txt
2022-07-06 11:08:07,106 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
shuguo
liubei

  

  

(3) -chmod 、-chown 、-chgrp跟Linux的文件系统用法一样,修改文件所属权限

  

在这里插入图片描述

这些就分别对应 chmod(change mod)、chown(change owner)、chgrp(change group)

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -chmod 777 /sanguo/shuguo.txt

  

  

(4) -mkdir创建路径(文件夹)

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /jinguo

HDFS的Shell操作_第12张图片

  

  

(5) -cp从 HDFS 的一个路径复制(拷贝)到 HDFS 的另一个路径

  

把 shuguo.txt 文件复制到 jinguo 文件夹中

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo.txt /jinguo

HDFS的Shell操作_第13张图片

因为是复制,所以原 /sanguo 文件夹下的 shuguo.txt 依然存在

  

  

(6) -mv在 HDFS 目录中移动文件

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -mv /sanguo/weiguo.txt /jinguo
[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -mv /sanguo/wuguo.txt /jinguo

HDFS的Shell操作_第14张图片

sanguo 文件夹下只剩 shuguo.txt 了,因为它是复制,其他俩是移动

  
HDFS的Shell操作_第15张图片

jinguo 文件夹下都有了

  

  

(7) -tail显示一个文件的末尾 1kb 的数据

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -tail /jinguo/shuguo.txt
2022-07-06 14:17:36,235 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
shuguo
liubei

  

  

(8) -rm删除文件或文件夹

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -rm /sanguo/shuguo.txt
Deleted /sanguo/shuguo.txt

  

  

(9) -rm -r递归删除目录及目录里面的内容

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /sanguo
Deleted /sanguo

  

  

(10) -du统计文件夹的大小

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -du -s -h /jinguo
27 81 /jinguo

说明:

27 表示文件大小;81表示 27*3 个副本;/jinguo 表示查看的目录

-s 表示总计,只列出最后相加总的值 ;-h 以 k、M、G为单位,提高信息的可读性

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -du -h /jinguo
14 42 /jinguo/shuguo.txt
7 21 /jinguo/weiguo.txt
6 18 /jinguo/wuguo.txt

查看具体的细节,就不要加 -s

  

  

(11) -setrep设置 HDFS 中文件的副本数量

  

[mq@hadoop102 hadoop-3.1.3]$ hadoop fs -setrep 10 /jinguo/shuguo.txt

HDFS的Shell操作_第16张图片

这里设置的副本数量只是记录在 NameNode 的元数据中,是否真的会有这么多副本,还得看 DataNode 的数量。因为目前只有 3 台设备,最多也就3个副本,只有节点数增加到 10 台时,副本数才能达到 10 。

你可能感兴趣的:(Hadoop,hdfs,hadoop,大数据)