windows下用Eclipse开发Wordcount程序并生成jar包上传到hadoop集群去执行
因为我安装的是centos7 服务器版本而非桌面版本,因此没办法在namenode所在虚拟机上安装Eclipse等开发工具。本来想到可以在本地Eclipse中添加hadoop插件,然后就可以直接在本地开发和测试,但无奈鼓捣了一天最后以失败告终。因此改变思路,想到用在本地开发后生成jar包,然后发送到namenode节点去运行的方式。这种方式与上一种的区别就是没法在本地运行(因为没有配置hadoop
因为我安装的是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项目
项目建成后,能够看到项目结构如下所示,src文件夹此时是空的
接下来右键单击src新建包和类,然后就进入Wordcount程序的代码编写阶段
为了方便偷了个懒,我直接在网上找了一个hadoop自带的Wordcount源码,复制过来。发现很多错误,原因是没有导入相应的jar包。
因此去找需要的jar包。因为运行的是Wordcount程序,只需要如下三个jar包:
-
$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar
-
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar
-
$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
导入后不再报错,下一步就是生成jar文件。右键单击包,选择Export-->Java-->JAR file-->next,输入jar文件的文件名和生成路径
连点两次next后,进入如下界面,选择程序主类,然后点击finish结束。
将生成的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改版了?在哪里改字体颜色???)
至此成功完成本地开发MapReduce程序后,生成jar包发送给集群运行的测试过程。
更多推荐
所有评论(0)