美文网首页
Hadoop三:Hadoop Java API初探(完结)

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

作者: 如果仲有听日 | 来源:发表于2018-06-12 15:35 被阅读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

    相关文章

      网友评论

          本文标题:Hadoop三:Hadoop Java API初探(完结)

          本文链接:https://www.haomeiwen.com/subject/qmcleftx.html