文章目录

  • 前言
  • 一、基本语法
  • 二、创建目录
  • 三、上传
  • moveFromLocal
  • -copyFromLocal
  • -put
  • -appendToFile
  • 四、下载
  • -copyToLocal
  • -get
  • 五、HDFS直接操作
  • -ls
  • -cat
  • -chgrp、-chmod、-chown
  • -mkdir
  • -cp
  • -mv
  • -tail
  • -rm
  • rm -r
  • -du
  • -setrep



前言

HDFS的shell操作很多跟linux的shell语法是比较相近,可以很快的学会,本文使用案例,一边演示,一边来学习命令。


一、基本语法

HDFS在最最基础的东西,提供了两种写法

hadoop fs 具体命令
hdfs dfs 具体命令

这两个是完全一样的

二、创建目录

hadoop fs -mkdir /sanguo
使用浏览器查看一下
输入> http://hadoop102:9870/

三、上传

moveFromLocal

从本地剪切粘贴到HDFS

[tom@hadoop102 ~]$ cd /opt/module/hadoop-3.3.4/
[tom@hadoop102 hadoop-3.3.4]$ vim shuguo.txt

[tom@hadoop102 hadoop-3.3.4]$ hadoop fs -moveFromLocal ./shuguo.txt /sanguo

shuguo.txt里面的内容

hadoop shell中的more hadoop shell编程_大数据


可以看到本地已经没有shuguo.txt文件了

hadoop shell中的more hadoop shell编程_hadoop_02


来到浏览器,输入

http://hadoop102:9870

进入daosanguo里面,就能看到我们的shuguo.txt文件了

hadoop shell中的more hadoop shell编程_大数据_03

-copyFromLocal

从本地复制粘贴冬奥HDFS里面

[tom@hadoop102 hadoop-3.3.4]$ vim weiguo.txt
[tom@hadoop102 hadoop-3.3.4]$ hadoop fs -copyFromLocal ./weiguo.txt /sanguo

weiguo.txt里面的内容

hadoop shell中的more hadoop shell编程_大数据_04


因为我们使用的是copy,所以本地还是有weiguo.txt文件的

hadoop shell中的more hadoop shell编程_hdfs_05

-put

put 命令等同与copyFromLocal
可以无缝衔接(把copyFromLocal换成put就行了)

[tom@hadoop102 hadoop-3.3.4]$ vim wuguo.txt
[tom@hadoop102 hadoop-3.3.4]$ hadoop fs -put ./wuguo.txt /sanguo

hadoop shell中的more hadoop shell编程_hadoop shell中的more_06

-appendToFile

追加一个文件到已经存在的文件末尾

演示:创建liubei,txt输入liubei,把liubei.txt追加到shuguo.txt里面

[tom@hadoop102 hadoop-3.3.4]$ vim liubei.txt
[tom@hadoop102 hadoop-3.3.4]$ hadoop fs -appendToFile ./liubei.txt /sanguo/shuguo

hadoop shell中的more hadoop shell编程_hdfs_07


来到浏览器

进入sanguo目录(点一下名字就进去了),找到shuguo.txt ,点击

hadoop shell中的more hadoop shell编程_大数据_08

见下图,点击这里,就能看到里面的内容了,也就是追加上了

hadoop shell中的more hadoop shell编程_大数据_09

四、下载

-copyToLocal

将文件从HDFS拷贝到本地

注意:在保存的时候还可以修改名字

hadoop shell中的more hadoop shell编程_大数据_10

-get

等同于copyToLocal,生产环境更习惯用get

hadoop shell中的more hadoop shell编程_hdfs_11

五、HDFS直接操作

注意
下面的命令与linux的用法相同,这里不做过多的演示
如果不会,请自行去把linux给看了(也可以看看我写的linux 博文)

-ls

用法与linux相同

hadoop fs -ls 路径

hadoop shell中的more hadoop shell编程_hdfs_12

-cat

用法与linux相同,

hadoop fs -cat 文件路径

hadoop shell中的more hadoop shell编程_hadoop shell中的more_13

-chgrp、-chmod、-chown

用法与linux相同

hadoop shell中的more hadoop shell编程_大数据_14

hadoop shell中的more hadoop shell编程_hdfs_15

-mkdir

hadoop shell中的more hadoop shell编程_HDFS_16

-cp

hadoop shell中的more hadoop shell编程_hadoop_17

-mv

hadoop shell中的more hadoop shell编程_hadoop_18

hadoop shell中的more hadoop shell编程_HDFS_19

-tail

这里还是要提醒一下,这个是查看文件末尾的1kb内容

hadoop shell中的more hadoop shell编程_HDFS_20

-rm

hadoop shell中的more hadoop shell编程_HDFS_21

rm -r

hadoop shell中的more hadoop shell编程_HDFS_22

-du

统计文件夹大小

第一个数字指代总文件的大小

第二个数字代表占了多少磁盘空间

hadoop shell中的more hadoop shell编程_大数据_23


hadoop shell中的more hadoop shell编程_hdfs_24

-setrep

设置HDFS中文件的副本数量

hadoop shell中的more hadoop shell编程_hadoop shell中的more_25

**注意!!!**这里我们设置了10个副本数量,但是真的能否有10个副本,取决于DataNode的数量。目前,我们只有三台设备,最多也就是3个副本。只有节点数增加到10,副本数才能达到10。

还有关于副本存储节点的问题
假设我们设置某个文件的副本为2,那么这2个副本在这3个节点中应该存在哪2个节点呢?
这个是hadoop的默认进行调度,原则上,哪个节点离文件越近,副本存在哪个节点。