Eclispe开发MapReduce程序的三种执行方式

1、 直接在hadoop服务主机上,使用命令的方式调用,执行过程也在服务器上windows

a、把MR程序打包(jar),传送到服务器上服务器

b、经过: hadoop jar jar路径  类的全限定名 参数…函数

 

2、本地测试环境:工具

本地模拟MapReduce任务执行,运行的数据源从远端的hdfs获取,运行结果发送到远端hdfs中。也能够直接使用本地的文件,下面有说明(推荐方式!)oop

前提条件是:测试

一、在windows下配置hadoop的环境变量(注意你的hadoop是在你的当前系统的版本下编译的(hadoop的bin,lib/native 目录依赖当前开发系统。)日志

path:hadoop

二、拷贝windows模拟hadoop工具(winutils.exe)到HADOOP_HOME/bin(工具能够网上下载,查找等)开发

三、修改hadoop的源码(修改的文章很大,能够网上直接下载别人修改好的或者搜索修改原理本身修改,下图两个类是须要修改的类,获得修改好的以后复制到项目的src下面!!) ,注意:确保项目的jre/lib是真实安装的jdk的lib(你项目使用的的JDK是你本身安装的JDK不是IDE自带的)源码

四、MR的主函数代码须要设置这么一些东西:

Configuration config = new  Configuration();

config.set("fs.defaultFS", "hdfs://XXXX:xxxx");

config.set("mapreduce.framework.name", "local");

5. 运行这样的项目时:运行过程当中的日志中会出现LocalJobRunner的字眼。

(6.若是你想使用本地的文件,把上述的这个设置更改成:config.set("fs.defaultFS", "file://localhost");)

 

3、在本地直接调用,执行过程在服务器上(真正企业运行环境)

a、把MR程序打包(jar),放到本地,我放在是桌面上

b、修改hadoop的源码 ,注意:确保项目的lib须要真实安装的jdk的lib(你项目使用的的JDK是你本身安装的JDK不是IDE自带的)

c、main方法中增长一个配置设置:

config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar"); 后面是你的MapReducer运行的jar包的位置。

d、把远端的hadoop的配置文件放到工做目录的src下面:

e、一样须要修改源码...(和上面说的同样)

f、本地执行main方法。

 

下面是可能出现的问题:

远程调用远程执行,不修改源码(把两个包引入),会报以下异常。

远程调用的时候须要把安装在远程的hadoop的配置文件复制到src下面!!不然就报这样的错误了。

 

欢迎分享更多的问题哦!

相关文章
相关标签/搜索