使用Hadoop命令来管理HDFS上的文件

时间:2019-05-19 01:26:10  来源:igfitidea点击:

本教程学习在Hadoop中管理HDFS上的文件。
我们将学习如何在HDFS中创建、上传、下载和列出内容。
下面的命令将在HDFS中创建目录结构,将文件从本地文件系统复制到HDFS,并将文件从HDFS下载到本地文件。
还有如何在HDFS中管理文件。

如何在HDFS中创建目录

获取类似于参数的URI路径,并创建一个目录或多个目录。

hdfs dfs -mkdir <paths>

记住,必须使用系统的用户名在HDFS中创建一个主目录。
例如,我们以hduser的身份登录到系统中,所以首先创建/user/hduser,否则我们会得到这个错误,现在在其中创建目录结构

hdfs dfs -mkdir /user/hduser
hdfs dfs -mkdir /user/hduser/input
hdfs dfs -mkdir /user/hduser/output 
hdfs dfs -mkdir /user/hduser/input/text /user/hadoop/input/xml

复制文件到HDFS

创建目录结构之后,现在将本地文件系统中的一些文件放到HDFS中。

hdfs dfs -put LOCAL_FILE HDFS_PATH

例如,
在当前目录中有一个test1.txt文件
在本地文件系统上有一个 /tmp/test2.xml

hdfs dfs -put text1.txt /user/hduser/input/text/
hdfs dfs -put /tmp/text2.xml /user/hduser/input/xml/

列出HDFS中的文件

使用以下示例命令列出HDFS中目录的内容。

hdfs dfs -ls /user/hduser
hdfs dfs -ls /user/hduser/input/
hdfs dfs -ls /user/hduser/input/text/

使用-R递归地列出目录中的文件。
例如:

hdfs dfs -ls -R /user/hadoop/input/

从HDFS下载文件

至此,我们已经学习了如何将文件复制并列出到HDFS。
现在使用下面的命令示例如何从HDFS下载/复制文件到本地文件系统。

hdfs dfs -get /user/hduser/input/text/test1.txt /tmp/
hdfs dfs -get /user/hadoop/dir1/xml/test2.xml /tmp/

其中 /tmp是系统的本地文件系统。

在HDFS目录之间复制文件

使用distcp选项 我们可以轻松复制HDFS文件系统之间的文件。

hdfs distcp /user/hduser/input/xml/text2.xml /user/hduser/output
hdfs distcp /user/hduser/input/text/text1.xml /user/hduser/output