嘉明的大数据学习之 HDFS 操作常用 Shell 命令

Hadoop 支持很多 Shell 命令,比如 hadoop fs、hadoop dfs 和 hdfs dfs 都是 HDFS 最常用的 Shell 命令,用来查看 HDFS 文件系统的目录结构、上传和下载数据、创建文件等。这三个命令既有联系有又区别:
hadoop fs:适用于任何不同的文件系统,比如本地文件系统和 HDFS 文件系统; hadoop dfs:只能适用于 HDFS 文件系统;
hdfs dfs:跟 hadoop dfs 命令的作用一样,也只能适用于 HDFS 文件系统。在本教程中,统一使用 hdfs dfs 命令对 HDFS 进行操作。

查看命令使用方法
请登录 Linux 系统,打开一个终端,首先启动 Hadoop,命令如下: cd /usr/local/hadoop
./sbin/start-dfs.sh
在这里插入图片描述

可以在终端输入如下命令,查看 hdfs dfs 总共支持哪些操作: cd /usr/local/hadoop
./bin/hdfs dfs
在这里插入图片描述

上述命令执行后,会显示类似如下的结果(这里只列出部分命令): [-appendToFile … ]
[-cat [-ignoreCrc] …] [-checksum …]
[-chgrp [-R] GROUP PATH…]
[-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
[-chown [-R] [OWNER][:[GROUP]] PATH…]
[-copyFromLocal [-f] [-p] [-l] … ]
[-copyToLocal [-p] [-ignoreCrc] [-crc] … ]
[-count [-q] [-h] …]
[-cp [-f] [-p | -p[topax]] … ] [-createSnapshot []]
[-deleteSnapshot ] [-df [-h] [ …]]
[-du [-s] [-h] …]
[-expunge]
[-find ]
[-get [-p] [-ignoreCrc] [-crc] ]
[-getfacl [-R] ]
[-getfattr [-R] {-n name | -d} [-e en] ] [-getmerge [-nl] ]
[-help [cmd ]]
[-ls [-d] [-h] [-R] [ ]]
[-mkdir [-p] ]
[-moveFromLocal ]
[-moveToLocal ]
[-mv … ]
[-put [-f] [-p] [-l] … ]

在这里插入图片描述

可以看出,hdfs dfs 命令的统一格式是类似“hdfs dfs -ls”这种形式,即在“-”后面跟上具体的操作。
在这里插入图片描述

可以查看某个命令的作用,比如,当需要查询 put 命令的具体用法时,可以采用如下命令:
./bin/hdfs dfs –help put
在这里插入图片描述

输出的结果如下:
-put [-f] [-p] [-l] … :
Copy files from the local file system into fs. Copying fails if the file already exists, unless the -f flag is given.
Flags:
-p Preserves access and modification times, ownership and the mode.
-f Overwrites the destination if it already exists.
-l Allow DataNode to lazily persist the file to disk. Forces replication factor of
This flag will result in reduced durability. Use with care.
在这里插入图片描述

HDFS 目录操作
1.目录操作
需要注意的是,Hadoop 系统安装好以后,第一次使用 HDFS 时,需要首先在 HDFS 中创建用户目录。本教程全部采用 hadoop 用户登录 Linux 系统,因此,需要在 HDFS 中为 hadoop 用户创建一个用户目录,命令如下:
cd /usr/local/hadoop
./bin/hdfs dfs –mkdir –p /user/hadoop

在这里插入图片描述

该命令中表示在 HDFS 中创建一个“/user/hadoop”目录,“–mkdir”是创建目录的操作, “-p”表示如果是多级目录,则父目录和子目录一起创建,这里“/user/hadoop”就是一个多级目录,因此必须使用参数“-p”,否则会出错。

“/user/hadoop”目录就成为 hadoop 用户对应的用户目录,可以使用如下命令显示 HDFS 中与当前用户 hadoop 对应的用户目录下的内容:
./bin/hdfs dfs –ls .
在这里插入图片描述

该命令中,“-ls”表示列出 HDFS 某个目录下的所有内容,“.”表示 HDFS 中的当前用户目录,也就是“/user/hadoop”目录,因此,上面的命令和下面的命令是等价的:
./bin/hdfs dfs –ls /user/hadoop

在这里插入图片描述

如果要列出 HDFS 上的所有目录,可以使用如下命令:
./bin/hdfs dfs –ls
在这里插入图片描述

下面,可以使用如下命令创建一个 input 目录:
./bin/hdfs dfs –mkdir input
在这里插入图片描述
在这里插入图片描述

在创建个 input 目录时,采用了相对路径形式,实际上,这个 input 目录创建成功以后,它在 HDFS 中的完整路径是“/user/hadoop/input”。如果要在 HDFS 的根目录下创建一个名称为 input 的目录,则需要使用如下命令:

./bin/hdfs dfs –mkdir /input
在这里插入图片描述
在这里插入图片描述

可以使用rm 命令删除一个目录,比如,可以使用如下命令删除刚才在HDFS 中创建的“/input” 目录(不是“/user/hadoop/input”目录):
./bin/hdfs dfs –rm –r /input
在这里插入图片描述

上面命令中,“-r”参数表示如果删除“/input”目录及其子目录下的所有内容,如果要删 除的一个目录包含了子目录,则必须使用“-r”参数,否则会执行失败。

2.文件操作
在实际应用中,经常需要从本地文件系统向 HDFS 中上传文件,或者把 HDFS 中的文件下载到本地文件系统中。
首先,使用 vim 编辑器,在本地 Linux 文件系统的“/home/hadoop/”目录下创建一个文件myLocalFile.txt,里面可以随意输入一些单词,比如,输入如下三行:
Hadoop Spark XMU DBLAB
在这里插入图片描述
在这里插入图片描述

然后,可以使用如下命令把本地文件系统的“/home/hadoop/myLocalFile.txt”上传到HDFS 中的当前用户目录的 input 目录下,也就是上传到 HDFS 的“/user/hadoop/input/” 目录下:
./bin/hdfs dfs -put /home/hadoop/myLocalFile.txt input

在这里插入图片描述

可以使用 ls 命令查看一下文件是否成功上传到 HDFS 中,具体如下:
./bin/hdfs dfs –ls input
该命令执行后会显示类似如下的信息: Found 1 items
-rw-r–r-- 1 hadoop supergroup 36 2017-01-02 23:55 input/ myLocalFile.txt

在这里插入图片描述

下面使用如下命令查看 HDFS 中的 myLocalFile.txt 这个文件的内容:
./bin/hdfs dfs –cat input/myLocalFile.txt
在这里插入图片描述

下面把 HDFS 中的 myLocalFile.txt 文件下载到本地文件系统中的“/home/hadoop/下载/” 这个目录下,命令如下:
./bin/hdfs dfs -get input/myLocalFile.txt /home/hadoop/下载
在这里插入图片描述

可以使用如下命令,到本地文件系统查看下载下来的文件 myLocalFile.txt: cd ~
cd
下载
ls
cat myLocalFile.txt

在这里插入图片描述

最后,了解一下如何把文件从 HDFS 中的一个目录拷贝到 HDFS 中的另外一个目录。比如,如果要把 HDFS 的“/user/hadoop/input/myLocalFile.txt”文件,拷贝到 HDFS 的另外一个目录“/input”中(注意,这个 input 目录位于 HDFS 根目录下),可以使用如下命令:

./bin/hdfs dfs -cp input/myLocalFile.txt /input
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值