博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3) - 1
阅读量:2112 次
发布时间:2019-04-29

本文共 3368 字,大约阅读时间需要 11 分钟。

Hadoop有一个本地作业运行器,可以使MapReduce执行引擎在本地的单个JVM上运行作业,主要设计用于测试本地代码,可以进行调试等操作。

本地运行与服务器上最大区别就是不能运行多个reducer,只能运行<=1个reduce操作,但是不影响调试。

使用本地作业运行器只需要通过配置一个参数即可,就是mapreduce.jobtracker.address值设置为local就会运行本地不访问外部jobtracker,默认值就是local。

步骤比较简单

前期准备:

1. 建立Maven项目导入Hadoop相关依赖包以后,完成Map和Reduce的编写。

2. 下载Hadoop-xxx.tar.gz(和服务器用的一个版本即可),解压放到本地hadoop目录。

下载地址:

3. 下载winutils.exe(本地运行模拟linux上执行命令用的),下载地址:

开始配置:

1. 下载的winutils.exe和相关文件复制到hadoop/bin下。

2. 开始准备调试代码,选择写好的方法入口,点击Debug Configuration,添加参数如下:

    Program Arguments是程序运行参数,-conf 是hadoop命令参数,后面hadoop-local.xml是一个配置文件,主要是配置hadoop本地运行器运行程序,在我项目中的src/main/resources下,内容如下:

fs.defaultFS
file:///
mapreduce.jobtracker.address
local
fs.defaultFS : 配置为本地文件系统,
mapreduce.jobtracker.address为local本地模式。

VM Arguments 是动态指定的两个参数,-Dproperty=value 配置的hadoop临时目录和安装目录,可以在windows环境变量中配置HADOOP_HOME代替hadoop.home.dir, 在hadoop-local.xml配置hadoop.tmp.dir代替写在VM参数中hadoop.tmp.dir。(配置在环境和项目中就不用每次运行VM参数都要写了)

上述配置完成后,还需要配置PATH,就是window环境变量中的PATH,我这里配置到项目运行环境上了,(你可以配置到环境变量里去,和java的PATH添加方式相同)如下:

这个参数不配置,会导致如下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:609)	at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977)	at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:187)	at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:174)	at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:108)	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.confChanged(LocalDirAllocator.java:285)	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:344)	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:150)	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:131)	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:115)	at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:125)	at org.apache.hadoop.mapred.LocalJobRunner$Job.
(LocalJobRunner.java:163) at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731) at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:240) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287) at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308) at com.tom.MaxTemperatureDriver.run(MaxTemperatureDriver.java:59) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) at com.tom.MaxTemperatureDriver.main(MaxTemperatureDriver.java:68)
是hadoop调用window本地库访问目录时权限问题导致的。

Hadoop环境变量相关配置:

完成配置后,点击debug,运行就可以跟踪代码了,控制台输出如下:

(如有理解描述偏差以及错误,请及时打脸,啪啪啪...大笑

你可能感兴趣的文章
Spring Boot 笔记
查看>>
maven下手动导入ojdbc6.jar
查看>>
SpringBoot、MyBatis配置多数据源XML方法
查看>>
SpringBoot配置属性之MQ
查看>>
SpringBoot集成mybatis
查看>>
Shell文本处理三剑客之grep
查看>>
linux查看进程启动时间
查看>>
Linux 基础命令
查看>>
35 个 Java 代码性能优化总结
查看>>
Linux Sed 命令
查看>>
StandardContext 错误
查看>>
如何添加网站favicon.ico图标
查看>>
cvs no such repository 问题
查看>>
MySQL中REGEXP正则表达式
查看>>
服务端UDP双向通信学习资料
查看>>
Mina TCP 编码解码相关资料收集
查看>>
Maven 打包 上传 运行
查看>>
Maven插件wagon-maven-plugin自动化部署
查看>>
使用wagon-maven-plugin插件自动部署项目
查看>>
Maven 打包的三种方式 和 Springboot 分离jar包
查看>>