在本次学习中重点是在VM虚拟机上安装Eclipse,并在Eclipse中使用Java代码实现hadoop文件的各种操作。
Eclipse的安装
图形界面联网下载,需要注意版本问题。
使用压缩包,解压安装。
本文将讲解使用压缩包进行eclipse的安装。
-first,压缩包拉进桌面,复制到你要安装的路径(本文安装在/usr/local/目录下)。
eg.cp 压缩包的名字 /usr/local/
-second,解压。
eg.tar zxvf 压缩包名字(后加压缩到的路径,不加就解压在当前路径)。
-third,将插件放进eclipse中的plugins文件夹内。
-fourth,启动。在eclipse目录中使用命令:./eclipse。
启动后需要更改配置如下:
-右键->new hadoop location –> 9000和9001的改动,主机名字的改变。
-新建一个MapReduce 加外部jar包
在/usr/local/hadoop1/share/hadoop目录下(也就是安装好的hadoop文件夹下的share/hadoop/目录)
目录名 | 引包 |
---|---|
Common | 3个和lib下全部 |
Hdfs | 3个和lib下全部 |
Mapre | 全部和lib下全部 |
Yarn | 全部和lib下全部 |
命令操作的java代码实现
1、新建文件夹 | 命令行: | hadoop fs -mkdir /newDir |
---|---|---|
java代码: | fileSystem.mkdirs(new Path(“/newDir”)); | |
2、删除文件/夹 | 命令行: | hadoop fs -rm/r /newDir |
java代码: | fileSystem.delete(new Path(“/newDir”)); | |
3、判断文件/夹的存在 | 命令行: | hadoop fs -test -e /usr>>echo$?0存在1不存在 |
java代码: | fileSytem.exists(new Path(“/file”)); |
参考代码如下:
4、新建文件 | 命令行: | hadoop fs -touchz /xttNewdir |
---|---|---|
java代码: | fileSystem.create(new Path(“/xttNewdir”)) | |
从第num个字节开始读取: | fin.seek(num); |
参考代码如下:
5、读取文件夹 | 命令行: | hadoop fs -ls / |
---|---|---|
java代码: | 采用输出流进行System.out进行显示 |
补充:FileStatus status = FileSystem.getFileStatus(new Path(url));
在使用该方法查找文件的时候可以联合通配符的应用来进行,可以更好的匹配查找。
参考代码如下:
7、复制文件 | 命令行: | hadoop fs -cp /hello /tt(把hello复制到根目录下改名字为tt) |
---|---|---|
hadoop fs -cp /hello /tmp/(把hello复制到tmp目录下不改名字) | ||
java 代码: | IOUtils.copy(fin,fout); |
参考代码如下:
补充:如果是剪切的话,只能是先复制在删除源文件。
8、下载文件 | 命令行: | hadoop fs -get /xttNewdir |
---|---|---|
java代码: | fileSystem.open(new Path(“/xttNewdir”)); | |
9、上传文件 | 命令行: | hadoop fs -put /xttNewdir |
java代码: | fileSystem.create(new Path(url)) |
上传下载都是使用输入输出流来完成进行的。
本地:OutputStream——InputStream
HDFS:FSDataOutputStream——-FSDataInputStream比如本例子中:
从本地上传到hadoop:
输入流使用的是InputStream
输出流使用FSDataOutputStream
从hadoop下载到本地:
输入流使用的是FSDataInputStream
输出流使用的是OutputStream
10、因为文件上传后不能修改,所以采取追加的方法来追加内容。追加的内容分为两种类型:一、追加数据;二、追加一个文件内的内容。
追加内容 | java代码 | fileSystem.append(url) |
---|