文章目录
- 前言
- 一、基本语法
- 二、创建目录
- 三、上传
- 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里面的内容
可以看到本地已经没有shuguo.txt文件了
来到浏览器,输入
http://hadoop102:9870
进入daosanguo里面,就能看到我们的shuguo.txt文件了
-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里面的内容
因为我们使用的是copy,所以本地还是有weiguo.txt文件的
-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
-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
来到浏览器
进入sanguo目录(点一下名字就进去了),找到shuguo.txt ,点击
见下图,点击这里,就能看到里面的内容了,也就是追加上了
四、下载
-copyToLocal
将文件从HDFS拷贝到本地
注意:在保存的时候还可以修改名字
-get
等同于copyToLocal,生产环境更习惯用get
五、HDFS直接操作
注意
下面的命令与linux的用法相同,这里不做过多的演示
如果不会,请自行去把linux给看了(也可以看看我写的linux 博文)
-ls
用法与linux相同
hadoop fs -ls 路径
-cat
用法与linux相同,
hadoop fs -cat 文件路径
-chgrp、-chmod、-chown
用法与linux相同
-mkdir
-cp
-mv
-tail
这里还是要提醒一下,这个是查看文件末尾的1kb内容
-rm
rm -r
-du
统计文件夹大小
第一个数字指代总文件的大小
第二个数字代表占了多少磁盘空间
-setrep
设置HDFS中文件的副本数量
**注意!!!**这里我们设置了10个副本数量,但是真的能否有10个副本,取决于DataNode的数量。目前,我们只有三台设备,最多也就是3个副本。只有节点数增加到10,副本数才能达到10。
还有关于副本存储节点的问题
假设我们设置某个文件的副本为2,那么这2个副本在这3个节点中应该存在哪2个节点呢?
这个是hadoop的默认进行调度,原则上,哪个节点离文件越近,副本存在哪个节点。