HDFS的Shell操作

简介: HDFS的Shell操作

@[toc]
  
  
  

  

基本语法

  

  

  hadoop fs 具体命令

  或

  hdfs dfs 具体命令

  

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

  
  
  

  

命令大全

  

  

在这里插入图片描述在这里插入图片描述

  
  
  

  
  

常用命令实操

  

  
  

准备工作

  
  

(1)启动 Hadoop 集群

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

Hadoop集群启动和停止方法
  

(2)创建 /sanguo 文件夹

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

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

http://hadoop102:9870

在这里插入图片描述

  

  

  

上传

  

  


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

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

  

  

准备工作:

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

输入:

shuguo

保存退出

在这里插入图片描述

  

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

在这里插入图片描述

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

  

实战操作:

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

  

刷新一下网页一看

在这里插入图片描述

文件果然到客户端上了

  

再看看本地

在这里插入图片描述

刚才他俩之间的 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

在这里插入图片描述

文件末尾加了 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直接操作

  

  

(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

在这里插入图片描述

  

[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

在这里插入图片描述

  

  

(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

在这里插入图片描述

  

  

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

  

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

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

在这里插入图片描述

因为是复制,所以原 /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

在这里插入图片描述

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

  
在这里插入图片描述

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

在这里插入图片描述

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

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
Java API Maven
HDFS的API操作
HDFS的API操作
33 0
|
1月前
|
人工智能 机器人 Shell
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
54 1
|
1月前
|
存储 算法 Shell
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
43 0
|
1月前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
71 1
|
12天前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
51 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
3天前
|
分布式计算 Hadoop Java
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
8 0
|
10天前
|
存储 Shell 开发者
Shell 数组:灵活操作的秘诀
**Shell 数组简介**:作为基础数据结构,数组在Shell编程中不可或缺。它们存储多个值,下标从0开始。创建如`array=(值1 值2...)`,访问用`${array[index]}`。增删改查及获取长度、拼接数组都有相应语法,例如`unset array[index]`删除元素,`${#array[@]}`获取长度。通过实践这些操作,提升Shell脚本技能。
4 0
|
1月前
|
分布式计算 IDE Hadoop
实验:熟悉常用的HDFS操作
实验:熟悉常用的HDFS操作
20 3
|
20天前
|
机器学习/深度学习 Shell Linux
linux shell脚本判断文件或文件夹是否存在循环操作
linux shell脚本判断文件或文件夹是否存在循环操作