文件系统的基本操作
现在我们通过命令行交互才进一步认识hdfs文件系统,它还有很多其他接口,但是命令行是最简单的。
在我们设置伪分布式配置时,有两个属性需要进一步解释,一个是fs.defaultFS,设置为 hdfs://localhost/,用于设置hadoop的默认文件系统。HDFS的守护进程通过该属性来确定HDFS namenode的主机以及端口。我们将在localhost默认的HDFS端口8020上运行namenode。第二个属性是dfs.replication,我们设置为1,这样一来,datanode副本就为1了,否则会持续给出副本不足的警告!
1.从本地文件系统讲一个文件复制到HDFS:
% hadoop fs -copyFromLocal 本地路径(input/docs/test.txt) \ HDFS路径
(hdfs://localhost/user/tom/test.txt)
上面的命令可以省略hdfs://loalhost,因为该项已在core-site.xml指定,当然可可是使用相对路径。
2.新建hdfs目录
% hadoop fs -mkdri books
%hadoop fs -ls
3.列出本地文件胸根目录下的文件:
%hadoop fs -ls file:///
4.复制文件
% hadoop distcp file1 file2
5.复制目录
% hadoop distcp dir1 dir2 (如果目录dir2不存在,将新建dri2,目录dir1的内容将全部复制到dir2下:如果dir2已经存在,则形成目录结构dir1/dir2:如果这不是你所需要的,你也可以补充-overwrite选项,在保持相同的目录结构时,强制覆盖原有文件,或者使用-update仅更新发声改变的文件)
6.rm删除文件或者目录
% hadoop fs -put file1.txt /tmp
7.put同copyFromLocal
8.get通copyToLocal
9.du显示文件大小
% hadoop fs -du /tmp/file2.txt
10.touchz创建空文件
%hadoop fs -touchz /tmp/file3.txt
11.chmod改变文件权限(增加X)
%hadoop fs -chmod +x /tmp/file3.txt*
12.chown改变文件所有者
% sudo -u hdfs hadoop fs -chown -R hbase:supergroup /tmp/file3.txt*