上一篇文章介绍了HDFS的体系结构及基本原理等偏理论性的内容,本文将更多地从命令行操作、Java程序编写等实践角度着手,对HDFS的使用进行介绍。
1、HDFS的命令行操作
HDFS是存取数据的分布式文件系统,对HDFS的操作,就是文件系统的基本操作,如文件的创建、修改、删除、修改权限等。对HDFS的操作命令类似于Linux的shell对文件的操作,如ls、mkdir、rm等。总的来说,HDFS的命令行操作可以分为两类,一类为基本操作命令:hdfs dfs;另一类为管理命令:hdfs dfsadmin。HDFS常用基本操作命令列举如下:
命令hdfs dfs -getmerge使用实例:
[root@hadoop221 data]# vi data1.txt (在文件中输入I love Beijing)
[root@hadoop221 data]# vi data2.txt (在文件中输入 I love ShangHai)
[root@hadoop221 data]# hdfs dfs -mkdir /data (在HDFS上创建目录/data)
[root@hadoop221 data]# hdfs dfs -put data*.txt /data (将data1.txt和data2.txt文件上传到HDFS上的/data目录下)
[root@hadoop221 data]# hdfs dfs -getmerge /data/root/data/data3.txt (将HDFS上的/data目录下所有文件的内容合并后,下载到本地文件data3.txt)
执行结果如下图所示:
这些基本命令的使用方法都非常简单,这里不做过多介绍,简单举两个例子,如:(1)查询hdfs文件系统根目录下有哪些文件和目录,运行命令:
hdfs dfs–ls /
结果如下图所示:
(2)统计HDFS某个路径下的目录个数,文件个数,以及文件总大小,运行命令:
hdfs dfs –count /data
运行结果如下图所示:
—————————–目录个数为1 ———————–文件个数为2 ————————————–文件总大小为31字节
HDFS常用管理命令列举如下:
管理命令不仅仅上面表格列出的这几个,还包括快照、配额等相关的一些命令,这将在后面进行介绍。下面简单介绍下安全模式相关命令的使用方法,如下图所示。从图中可以看到,当开启安全模式后,在HDFS文件系统中创建aaa目录时,创建失败,原因是安全模式下HDFS文件系统仅为可读的,不能写入。当关闭安全模式后,再在HDFS文件系统中创建aaa目录,便创建成功了。
2、使用Java程序操作HDFS
A、准备工作
编写Java程序操作HDFS文件系统,不可避免地需要使用Hadoop提供的相关Jar包,需要使用到的所有Jar包位于如下四个路径:
/root/training/hadoop-2.7.3/share/hadoop/common
/root/training/hadoop-2.7.3/share/hadoop/common/lib
/root/training/hadoop-2.7.3/share/hadoop/hdfs
/root/training/hadoop-2.7.3/share/hadoop/hdfs/lib
在Eclipse中创建一个普通的Java Project,命名为OperateHDFS,再创建一个文件夹lib,将上述四个目录下所有的Jar文件都拷贝到lib目录下,然后选中所有这些Jar,添加到编译路径中Add to Build Path。
B、使用Java程序对HDFS文件系统进行操作
通过HDFS文件系统提供的Java API,我们可以完成如下的操作:
① 在HDFS文件系统中创建目录;
② 查看HDF