Hadoop HDFS提供了一组命令集来操作文件,它既可以操作Hadoop分布式文件系统,也可以操作本地文件系统。但是要加上theme(Hadoop文件系统用hdfs://,本地文件系统用file://)
1. 添加文件,目录
HDFS文件系统(需要加hdfs://):
因为我们在core-site.xml中配置了fs.default.name
所以所有和HDFS打交道的命令都不需要加上前缀hdfs://192.168.129.35:9000
比如我们要在Hadoop 文件系统中创建一个目录叫 /user/hadoop-user ,则
hadoop fs -mkdir /user/hadoop-user
要查看我们创建的目录,
hadoop fs -ls /
或者用 hadoop fs -lsr / 递归的显示子目录
本地的文件系统(需要加file://):
比如我们要查看Linux本地文件系统的/tmp/charles目录,则:
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-site.xml中设置了replication-factor为1,所以这里只存一个备份,显示1
如果我们要把文件从HDFS复制到本地文件系统:
比如我们要把刚才复制过来的文件textfile.txt复制到本地目录下/tmp/charles2:
hadoop fs -get /user/hadoop-user/textfile.txt /tmp/charles2/textfile.txt
我们检查本地文件系统,果然发现文件从HDFS 复制过来了。
为了证明HDFS的文件复制功能没有破坏文件,我们用md5sum命令来检查原始的位于/tmp/charles目录下的原始文件和/tmp/charles2目录下的复制回来的文件的md5校验和:
从这里可以看出,老文件和新文件校验和一致,说明HDFS的文件复制功能没有破坏文件。
3.查看文件,目录
如果我们要查看HDFS文件系统的某个文件:
hadoop fs -cat textfile.txt
4.删除文件,目录
如果我们要从HDFS文件系统中删除某个文件:
hadoop fs -rm textfile.txt
此时我们再去检查HDFS文件系统,文件已经不存在了。