前言
在通过hdfs命令行操作时,我们通常会用到hadoop fs、hadoop dfs、或者是hdfs dfs,但是很少在意三者的区别。
hadoop fs:该命令可以用于其他文件系统,不止是hdfs文件系统内,使用范围更加广泛hadoop dfs:专门针对hdfs分布式文件系统hdfs dfs:和上方命令作用相同,当使用hadoop dfs时内部会被转为hdfs dfs命令
总结:单从操作HDFS来说,使用上面三种的命令作用都相同。
本篇使用的是hadoop fs来完成命令行操作
一、HDFS命令实操
1.1 上传
(1)-moveFromLocal:从本地剪切粘贴到HDFS
# 将llc.txt文件剪切粘贴到hdfs的/data目录下
[root@host102 lilinchao]# hadoop fs -moveFromLocal ./llc.txt /data
(2)-copyFromLocal:从本地文件系统中拷贝文件到 HDFS 路径去
# 将word.csv文件拷贝到HDFS的/data目录下
[root@host102 lilinchao]# hadoop fs -copyFromLocal word.csv /data
(3)-put:等同于 copyFromLocal,生产环境更习惯用 put
# 将user.json文件拷贝到HDFS的/data目录下
[root@host102 lilinchao]# hadoop fs -put ./user.json /data
(4)-appendToFile:追加一个文件到已经存在的文件末尾
# 将word.csv文件追加到HDFS中/data/llc.txt文件末尾
[root@host102 lilinchao]# hadoop fs -appendToFile ./word.csv /data/llc.txt
1.2 下载
(1)-copyToLocal:从HDFS拷贝到本地
# 将HDFS中/data/llc.txt文件拷贝到本地当前目录下
[root@host102 lilinchao]# hadoop fs -copyToLocal /data/llc.txt ./
(2)-get:等同于 copyToLocal,生产环境更习惯用 get
# 将HDFS中/data/llc.txt文件拷贝到本地当前目录下并重新命名为llc2.txt
[root@host102 lilinchao]# hadoop fs -get /data/llc.txt ./llc2.txt
说明:在进行拷贝操作时支持文件名称修改。
1.3 HDFS直接操作
(1)-ls:显示目录信息
# 查询HDFS中/data下的所有目录信息
[root@host102 lilinchao]# hadoop fs -ls /data
(2)-cat:显示文件内容
# 查询HDFS中/data/llc.txt的文件内容
[root@host102 lilinchao]# hadoop fs -cat /data/llc.txt
(3)权限修改相关命令
chgrp:改变文件所属的组chmod:改变文件的权限chown:改变文件的拥有者
# 修改/data/llc/llc.txt文件的权限
[root@host172 lilinchao]# hadoop fs -chmod 666 /data/llc/llc.txt
# 修改/data/llc/word.csv文件的所有者[Owner]和所有者组[Group]都为root
[root@host172 lilinchao]# hadoop fs -chown root:root /data/llc/word.csv
# 修改/data/llc/word.csv文件的所有者组[Group]为supergroup
[root@host172 lilinchao]# hadoop fs -chgrp supergroup /data/llc/word.csv
说明:使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。
(4)-mkdir:创建路径
# HDFS中创建/data/llc目录
[root@host102 lilinchao]# hadoop fs -mkdir /data/llc
(5)-cp:从 HDFS 的一个路径拷贝到 HDFS 的另一个路径
# 将HDFS中/data/llc.txt文件拷贝到/data/llc文件夹下
[root@host102 lilinchao]# hadoop fs -cp /data/llc.txt /data/llc
(6)-mv:在 HDFS 目录中移动文件
# 将HDFS中/data/word.csv文件移动到/data/llc目录
[root@host102 lilinchao]# hadoop fs -mv /data/word.csv /data/llc
(7)-tail:显示一个文件的末尾 1kb 的数据
# 显示/data/llc/word.csv文件末尾1kb的数据
[root@host172 lilinchao]# hadoop fs -tail /data/llc/word.csv
(8)-rm:删除文件或文件夹
# 将HDFS中/data/llc.txt文件删除
[root@host172 lilinchao]# hadoop fs -rm /data/llc.txt
(9)-rm -r:递归删除目录及目录里面内容
# HDFS删除/data/张三文件夹
[root@host172 lilinchao]# hadoop fs -rm -r /data/张三
(10)-du:统计文件夹的大小信息
# HDFS中,统计/data/llc文件夹下文件的大小信息
[root@host172 lilinchao]# hadoop fs -du /data/llc
72 144 /data/llc/llc.txt
47 94 /data/llc/word.csv
说明:72和47表示文件大小,144和94分别表示72*2和47*2个副本。
(11)-setrep:设置 HDFS 中文件的副本数量
# 将/data/llc/llc.txt文件的副本数改成10个
[root@host172 lilinchao]# hadoop fs -setrep 10 /data/llc/llc.txt
这里设置的副本数只是记录在 NameNode 的元数据中,是否真的会有这么多副本,还得看 DataNode 的数量。因为目前只有 3 台设备,最多也就 3 个副本,只有节点数的增加到 10 台时,副本数才能达到 10。