对Hadoop分布式文件系统HDFS的操作实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Hadoop分布式文件系统HDFS的操作实践相关的知识,希望对你有一定的参考价值。

原文地址:https://dblab.xmu.edu.cn/blog/290-2/

Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核心组件之一,如果已经安装了Hadoop,其中就已经包含了HDFS组件,不需要另外安装。

在学习HDFS编程实践前,执行如下命令,启动Hadoop。

技术分享图片

 一、利用Shell命令与HDFS进行交互            

Hadoop支持很多Shell命令,其中fs是HDFS最常用的命令,利用fs可以查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。

有三种shell命令方式。
1. hadoop fs  适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
2. hadoop dfs  只能适用于HDFS文件系统
3. hdfs dfs  只能适用于HDFS文件系统

 我们可以在终端输入如下命令,查看fs总共支持了哪些命令

技术分享图片

技术分享图片

  1.目录操作          

 需要注意的是,Hadoop系统安装好以后,第一次使用HDFS时,需要首先在HDFS中创建用户目录。本教程全部采用hadoop用户登录Linux系统,因此,需要在HDFS中为hadoop用户创建一个用户目录,命令如下:

技术分享图片

 该命令中表示在HDFS中创建一个“/user/hadoop”目录,“–mkdir”是创建目录的操作,“-p”表示如果是多级目录,则父目录和子目录一起创建,这里“/user/hadoop”就是一个多级目录,因此必须使用参数“-p”,否则会出错。
“/user/hadoop”目录就成为hadoop用户对应的用户目录,可以使用如下命令显示HDFS中与当前用户hadoop对应的用户目录下的内容:

技术分享图片

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

 技术分享图片

如果要列出HDFS上的所有目录,可以使用如下命令:

技术分享图片

下面,可以使用如下命令创建一个input目录:

 技术分享图片

可以使用rm命令删除一个目录,比如,可以使用如下命令删除刚才在HDFS中创建的“/input”目录(不是“/user/hadoop/input”目录):

 技术分享图片

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

 

 

  2.文件操作               

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

 技术分享图片

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

 技术分享图片

可以使用ls命令查看一下文件是否成功上传到HDFS中,具体如下:

 技术分享图片

该命令执行后会显示类似如下的信息:

 技术分享图片

下面使用如下命令查看HDFS中的myLocalFile.txt这个文件的内容:

 技术分享图片

下面把HDFS中的myLocalFile.txt文件下载到本地文件系统中的“/home/hadoop/下载/”这个目录下,命令如下:

 技术分享图片

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

 技术分享图片

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

 技术分享图片

 






以上是关于对Hadoop分布式文件系统HDFS的操作实践的主要内容,如果未能解决你的问题,请参考以下文章

高可用性的HDFS:Hadoop分布式文件系统深度实践 PDF扫描版 完整版下载

大数据-09-Intellij idea 开发java程序操作HDFS

Hbase/HDFS存储扩容实践

hadoop fs(HDFS文件系统命令)

Hadoop之HDFS文件操作

世界杯项目案例:HDFS分布式文件系统