因为我安装的是centos7 服务器版本而非桌面版本,因此没办法在namenode所在虚拟机上安装Eclipse等开发工具。本来想到可以在本地Eclipse中添加hadoop插件,然后就可以直接在本地开发和测试,但无奈鼓捣了一天最后以失败告终。因此改变思路,想到用在本地开发后生成jar包,然后发送到namenode节点去运行的方式。这种方式与上一种的区别就是没法在本地运行(因为没有配置hadoop)。

如果还没搭建hadoop,可参考这篇文章,以下内容也是在此集群基础上进行的。

因为服务器hadoop集群已搭建好,所以这里主要介绍windows本地配置信息。

配置信息:

windows系统版本:win10家庭版

Eclipse版本:Mars.2 (4.5.2)

jdk版本:10.0.1

 

步骤

首先在Eclipse中新建java项目

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

 

项目建成后,能够看到项目结构如下所示,src文件夹此时是空的

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

接下来右键单击src新建包和类,然后就进入Wordcount程序的代码编写阶段

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

为了方便偷了个懒,我直接在网上找了一个hadoop自带的Wordcount源码,复制过来。发现很多错误,原因是没有导入相应的jar包。

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

因此去找需要的jar包。因为运行的是Wordcount程序,只需要如下三个jar包:

  1. $HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar

  2. $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar

  3. $HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar

导入后不再报错,下一步就是生成jar文件。右键单击包,选择Export-->Java-->JAR file-->next,输入jar文件的文件名和生成路径

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

连点两次next后,进入如下界面,选择程序主类,然后点击finish结束。

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

将生成的jar文件上传到namenode节点,我上传的路径是$HADOOP_HOME/share/hadoop/mapreduce,然后在此路径下执行如下命令 hadoop jar wordcount_test.jar /input/text.txt /output4。(由于我事先在HDFS上创建了/input/text.txt,因此这里省略此步骤,具体可参考这里

注意!!!这里jar文件后面直接是输入和输出参数,并没有像直接运行自带的hadoop-mapreduce-examples-2.8.0.jar文件时那样还要在jar文件后面输入主类名。如果此处也输入了主类名WordCount_test则会报错(因为这个被折磨了好一阵了)。猜测是不是生成jar文件时,选择了Main class,所以这里就不用再指定了??

(发现csdn改版了?在哪里改字体颜色???)

windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行

至此成功完成本地开发MapReduce程序后,生成jar包发送给集群运行的测试过程。

 

相关文章:

  • 2021-06-10
  • 2022-12-23
  • 2021-06-27
  • 2021-06-11
  • 2021-12-24
  • 2021-07-17
  • 2021-12-11
  • 2022-03-09
猜你喜欢
  • 2021-09-15
  • 2022-12-23
  • 2021-10-07
  • 2021-09-19
  • 2021-08-20
  • 2021-10-24
  • 2022-12-23
相关资源
相似解决方案