Hadoop HDFS提供了一组命令集来操作文件,它既可以操作Hadoop分布式文件系统,也可以操作本地文件系统。但是要加上theme(Hadoop文件系统用hdfs://,本地文件系统用file://)

 

1. 添加文件,目录

HDFS文件系统(需要加hdfs://):

因为我们在core-site.xml中配置了fs.default.name

Hadoop (HDFS)分布式文件系统基本操作_Hadoop

所以所有和HDFS打交道的命令都不需要加上前缀hdfs://192.168.129.35:9000 

 

比如我们要在Hadoop 文件系统中创建一个目录叫 /user/hadoop-user ,则

hadoop fs -mkdir /user/hadoop-user

要查看我们创建的目录,

hadoop fs -ls /  

Hadoop (HDFS)分布式文件系统基本操作_HDFS基本操作_02

Hadoop (HDFS)分布式文件系统基本操作_Hadoop_03

或者用 hadoop fs -lsr /  递归的显示子目录

 

本地的文件系统(需要加file://):

比如我们要查看Linux本地文件系统的/tmp/charles目录,则:

Hadoop (HDFS)分布式文件系统基本操作_Hadoop_04

 

2.移动复制文件,目录

如果我们要把一个文件从本地文件系统复制到HDFS

比如我们在/tmp/charles目录下有个文件叫 textfile.txt,那么我们想上传到HDFS中我们刚才创建的/user/hadoop-user目录下:

hadoop fs -put /tmp/charles/textfile.txt /user/hadoop-user

我们用 hadoop fs -ls 来查看是否这个文件已经被添加:

Hadoop (HDFS)分布式文件系统基本操作_Hadoop_05

因为我们在hadoop的hdfs-site.xml中设置了replication-factor为1,所以这里只存一个备份,显示1

 

如果我们要把文件从HDFS复制到本地文件系统:

比如我们要把刚才复制过来的文件textfile.txt复制到本地目录下/tmp/charles2:

hadoop fs -get /user/hadoop-user/textfile.txt  /tmp/charles2/textfile.txt

我们检查本地文件系统,果然发现文件从HDFS 复制过来了。

Hadoop (HDFS)分布式文件系统基本操作_Hadoop_06

 

为了证明HDFS的文件复制功能没有破坏文件,我们用md5sum命令来检查原始的位于/tmp/charles目录下的原始文件和/tmp/charles2目录下的复制回来的文件的md5校验和:

Hadoop (HDFS)分布式文件系统基本操作_HDFS基本操作_07

从这里可以看出,老文件和新文件校验和一致,说明HDFS的文件复制功能没有破坏文件。

 

3.查看文件,目录

如果我们要查看HDFS文件系统的某个文件:

hadoop fs -cat textfile.txt

Hadoop (HDFS)分布式文件系统基本操作_Hadoop_08

 

 

4.删除文件,目录

如果我们要从HDFS文件系统中删除某个文件:

hadoop fs -rm textfile.txt

Hadoop (HDFS)分布式文件系统基本操作_HDFS基本操作_09

此时我们再去检查HDFS文件系统,文件已经不存在了。