Hadoop版本:2.4.0
集群运行环境:Ubuntu14.04
java version:1.7.0_25
关于Hadoop到搭建网上已经很多了不必再说一遍,不懂可以参考点击打开链接
Ubuntu下安装eclipse等可以参考:点击打开链接
Win下安装eclipse可以参考:点击打开链接
我使用到eclipse插件已上传可以下载,如果不可以用可以自己做一个参考:点击打开链接
如果按照步骤一步一步走的话应该是不会出错的,最终你能够在eclipse上运行了。可是如果你细心的话就会发现虽然说运行成功了但是在Hadoop提供到8088端口上显示没有Application运行,原来你运行时是在本机运行的并不是提交到集群运行,只是用到来集群到HDFS文件系统,如果想在集群运行只有打jar包拷贝到Master使用hadoop jar命令才可以。
那么如何才能在eclipse上就可以直接提交到集群运行呢?我找到了这个:点击打开链接
但是如果你按照这个配置运行的话,几乎肯定会出错的,如果你的eclipse是在win环境下一般就会报:/bin/bash:line 0 no job control
如果你就想在win下开发的话可以参考:点击打开链接 反正我按照这个是没有做好,这个是Hadoop 2.X的一个bug Win和linux不兼容应该是加了yarn的问题(PS:如果有人解决了麻烦告诉我,我被这个问题折磨了2天),2.2 2.3版本也会有这个问题。
如果你像我就想在测试的时候就提交到集群运行(PS:如果只是小程序的话本地要比集群快不少)最好还是老老实实安个linux吧,我就安装了Ubuntu。不过如果你在linux下配置好后再按照上面提到的配置的话就会出现:class not found 。看下控制台信息就会发现是节点运行的时候找不到class,所以只能自己再设置下了。
为了解决这个问题我做了3个类:
EJob.java Utils.java是为了解决这个问题,JobString.java是为了使用更加方便。
EJob.java
package org.apache.hadoop.examples;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.JarEntry;
import jav