Hadoop三:Hadoop Java API初探(完结)

2018-06-12  本文已影响0人  如果仲有听日

前面介绍了Hadoop的原理、安装、运行和客户端命令,这一节我会演示hadoop的java api去实现hadoop的命令,由于存在跨平台操作问题,这里我会介绍我的心路历程。

1. win eclipes开发准备

1.1 准备好jar包

解压hadoop-2.9.0.tar.gz, 通过前面的连载可以知道,hadoop的所有jar包放在share/hadoop目录下,本节演示的是hadoop中hdfs的api实现hdfs shell命令,有用的jar包:

首先是share/hadoop/common目录下的hadoop-common-2.9.0.jar和share/hadoop/common/lib下的所有common jar包的依赖jar包

其次是share/hadoop/hdfs下的hadoop-hdfs-2.9.0.jar和share/hadoop/hdfs/lib下的所有hdfs jar包的依赖jar包

1.2 新建hadoop project并添加相关库文件

新建hadoop工程

hadoop所有的组件依赖common包,先添加common包

添加common jar包

添加common包的所有依赖jar包

添加common jar的依赖jar包

添加hdfs jar包

添加hadoop-hdfs jar包

添加hdfs依赖的jar包

添加hdfs jar依赖的jar包

完成jar包的添加,并提交生成java库,这里大致浏览一下依赖了那些包,其中有zookeeper,这意味着再调用zookeeper api的时候不用再单独去导zk的包了。还有junit包是用于测试的,也不用再导了

提交后点finish完成hadoop hdfs api库的建立

2. 上传文件到linux hadoop hdfs中

2.1 尝试写一段代码上传windows代码到linux hadoop hdfs

第一个例子

运行后报错

部分报错信息

可以看出环境变量HADOOP_HOME和环境变量Path中的hadoop bin并未设置,在windowns环境变量中添加HADOOP_HOME,在Path中添加hadoop/bin的路径后,重新运行testUpload依然报错:java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate Hadoop executable: D:\vmshare\hadoop-2.9.0\bin\winutils.exe

只是这次是发现没有winutils.exe

原因是:bin和lib下需要一些当前windows版本下用VC++编译出来的winutil.exe工具和windows库文件,这样就太麻烦了。

由于我们开的大数据环境一般是基于linux的数据,程序也运行在linux中,所以把java运行环境更改的linux中去,这样需要在eclipse中把源程序export成jar文件,再放到linux jre中运行即可。

2.2 上传linux中的文件到linux hadoop hdfs

2.2.1 开发环境

目前市面上的教程都是在windows下用eclipse+maven搞开发,虽然java是一个平台无关的语言,但是从1中我还是发现了2个问题:

一是运行时需要winutil.exe需要自己在windows编译

二是windows和linux的路径表述是不同的

为了一次性永久解决这样的跨平台问题,我使用了带桌面的centos7中安装eclipse

使用中你会发现没有hadoop小模块的api程序都需要导不同的jar包,且又会有很多依赖,同一个项目下的package可能会导同样的包,这样就需要使用maven包管理工具。

因此请参考我的简文:https://www.jianshu.com/p/662a8291e0e3     在centos7中搭建eclipse+maven3.5开发环境

2.2.2 java代码

测试代码

2.2.3 maven的pom.xml

上一篇下一篇

猜你喜欢

热点阅读