HDFS常用命令

373 阅读3分钟

前言

在通过hdfs命令行操作时,我们通常会用到hadoop fshadoop 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*247*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。