Hadoop HDFS的基本操作

目录

1.创建目录

2.上传与下载文件

3.查看文件内容

4.删除文件或目录


        对于 HDFS 的基本操作,可以通过 HDFS 命令行实现。在集群服务器的终端,通过“hdfs dfs”命令即可完成对 HDFS 目录及文件的管理操作包括创建目录、上传文件与下载文件、查看文件内容、删除文件或目录等。

1.创建目录

        在集群服务器的终端,输入“hdfs dfs”命令,按 Enter 键后即可看到 HDFS 基础操作命令的使用帮助信息,其中的“[-mkdir [-p]<path>..]”命令可用于创建目录,参数 path 用以指定创建的新目录。在 HDFS 中创建/user/dfstest 目录,如下代码所示。

hdfs dfs -mkdir /user/dfstest

        查看在 HDFS 目录/user/下的文件列表,结果如图 1-1所示,可看到新创建的目录。

图 1-1 查看新建的目录

         “hdfs dfs -mkdir <path>”命令只能逐级地创建目录,如果父目录不存在,那么使用该命令将会报错。例如,创建/user/testexample 目录,若example 的父目录test不存在,则执行'hdfs dfs -mkdir /user/test/example”命令将会报错。若加上-p,则可以同时创建多级目录,如下代码所示,同时创建父目录 test 和子目录 example。

hdfs dfs -mkdir -p /user/test/example

2.上传与下载文件

        创建新目录/user/dfstest后,即可向该目录上传文件。通过“hdfs dfs”命令查看上传文件命令的使用帮助信息,如表 3-3所示。

表 2-1 文件上传命令
命令解释
hdfs dfs [-copyFromLocal [-f] [-p] [-l] <localsrc>...<dst>]将文件从本地文件系统复制到HDFS,主要参数localsrc 为本地文件路径,dst 为复制的目标路径
hdfs dfs [-moveFromLocal <localsrc> ... <dst>]将文件从本地文件系统移动到HDFS,主要参数localsrc 为本地文件路径,dst为移动的目标路径
hdfs dfs [-put [-f] [-p] [-l] <localsrc> ... <dst>]将文件从本地文件系统上传到HDFS,主要参数localsrc 为本地文件路径,dst为上传的目标路径

        分别使用表 2-1 中的3个命令,以 master 中的本地文件 a.txt为例(文件内容如表 2-2所示 ),将其上传至 HDFS 的/user/dfstest 目录下,如下代码所示,其中后两个命令对上传至HDFS的文件进行了重命名。

表 2-2 a.txt文件内容
I have a pen
I have an apple
hdfs dfs -copyFromLocal a.txt /user/dfstest/
hdfs dfs -put a.txt /user/dfstest/c.txt
hdfs dfs -moveFromLocal a.txt /user/dfstest/b.txt

        运行代码后,在/user/dfstest 日录下可以看到图 2-1所示的3个文件。注意,在上面代码所示的第3个命令中,-moveFromLocal用于将本地文件移动到 HDFS,即执行命令后 Linux 系统中的本地文件 a.txt将被删除。

图 2-1 文件上传后的结果

        同理,通过“hdfs dfs”命令可以査看下载文件命令的使用帮助信息,如表 2-3 所示。

表 2-3 文件下载命令
命令解释
hdfs dfs [-copyToLocal [-p] [-ignoreCrc] [-crc] <src>...<localdst>]将文件从 HDFS 复制到本地文件系统,主要参数src为HDFS 文件路径,localdst为本地系统文件路径
hdfs dfs [-get [-p] [-ignoreCrc] [-crc] <src>...<localdst>]获取 HDFS 上指定路径的文件到本地文件系统,主要参数 src 为 HDFS 文件路径,localdst 为本地系统文件路径

        分别使用表 2-3 中的两个命令下载 HDFS 的/user/dfstest目录中的 a.txt和 c.txt 文件至Linux 本地目录/data/hdfs_test/中,如下代码所示。

hafs dfs -copyToLocal /user/dfstest/a.txt /data/hdfs_test/
hdfs dfs -get/user/dfstest/c.txt /data/hdfs_test/

3.查看文件内容

        当用户想查看某个文件内容时,可以直接使用 HDFS 命令。HDFS 提供了两个查看文件内容的命令,如表 3-1所示。

表 3-1 查看文件内容命令
命令解释
hdfs dfs [-cat [-ignoreCrc] <src> ...]输出 HDFS 文件内容,主要参数 src用于指定文件路径
hdfs dfs [-tail [-f] <file>]输出 HDFS 文件最后 1024B 的内容,主要参数 file 用于指定文件

        分别使用表 3-1 中的两个命令査看 HDFS 的 /user/dfstest 日录下文件 a.txt 和 b.txt 的具体内容,如下代码所示。

hdfs dfs -cat /user/dfstest/a.txt
hdfs dfs -tail /user/dfstest/b.txt

        结果如图3-1所示。

图 3-1 查看文件内容

4.删除文件或目录

        当HDFS 上的某个文件或目录被确认不再需要时,可以选择删除,释放HDFS的存储空间。在 HDFS 的命令帮助文档中,HDFS 主要提供了两个删除文件或目录的命令,如表 4-1 所示。

表 4-1 删除文件或目录命令
命令解释
hdfs dfs [-rm [-f] [-r|-R] [-skipTrash] <src> ...]删除 HDFS 上的文件,主要参数src用于指定删除文件的路径
hdfs dfs [-rmdir [--ignore-fail-on-non-empty] <dir> ...]若删除的是一个目录,则可以用该命令,主要参数dir 用于指定目录路径

        先在 HDFS 的/user/dfstest 目录下创建一个测试目录rmdir,再使用表 4-1 中的两个命令分别删除 /user/dfstest 目录下的 c.txt 文件和新创建的 rmdir 目录,如下代码所示。

hdfs dfs -mkdir /user/dfstest/rmdir
hdfs dfs -rm /user/dfstest/c.txt
hdfs dfs -rmdir /user/dfstest/rmdir

        执行删除命令后,查看 HDFS 的 /user/dfstest 目录下的内容,结果如图 4-1 所示,说明已成功删除 c.txt 文件和 rmdir 目录。

图 4-1 删除文件或目录后的结果

        Hadoop 框架的核心设计为 HDFS 和 MapReduce,HDFS 负责数据的存储,MapReduce则负责数据的计算。对海量数据进行计算前,数据的存储是一步必要的操作,因此,需要先掌握 HDFS 的基本操作方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值