Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
来源:互联网 发布:什么叫大数据金融 编辑:程序博客网 时间:2024/06/05 05:47
Hadoop有一个本地作业运行器,可以使MapReduce执行引擎在本地的单个JVM上运行作业,主要设计用于测试本地代码,可以进行调试等操作。
本地运行与服务器上最大区别就是不能运行多个reducer,只能运行<=1个reduce操作,但是不影响调试。
使用本地作业运行器只需要通过配置一个参数即可,就是mapreduce.jobtracker.address值设置为local就会运行本地不访问外部jobtracker,默认值就是local。
步骤比较简单
前期准备:
1. 建立Maven项目导入Hadoop相关依赖包以后,完成Map和Reduce的编写。
2. 下载Hadoop-xxx.tar.gz(和服务器用的一个版本即可),解压放到本地hadoop目录。
下载地址:Hadoop各版本3. 下载winutils.exe(本地运行模拟linux上执行命令用的),下载地址:WinUtils.exe及本地库
开始配置:1. 下载的winutils.exe和相关文件复制到hadoop/bin下。
2. 开始准备调试代码,选择写好的方法入口,点击Debug Configuration,添加参数如下:
Program Arguments是程序运行参数,-conf 是hadoop命令参数,后面hadoop-local.xml是一个配置文件,主要是配置hadoop本地运行器运行程序,在我项目中的src/main/resources下,内容如下:
<?xml version="1.0" encoding="UTF-8"?><configuration><property><name>fs.defaultFS</name><value>file:///</value></property><property><name>mapreduce.jobtracker.address</name><value>local</value></property></configuration>
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)Zat 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.<init>(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,运行就可以跟踪代码了,控制台输出如下:
(如有理解描述偏差以及错误,请及时打脸,啪啪啪...)
- Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
- Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
- Hadoop-MapReduce Job本地运行流程
- hadoop2.x job Eclipse下只运行在local上
- hadoop job运行问题解决
- Hadoop运行一个job
- 本地Eclipse中Tomcat运行测试环境代码
- Eclipse下运行Hadoop测试WordCount
- hadoop在运行job过程中出现了僵尸进程
- hadoop中job提交在yarn中的运行过程
- hadoop运行到mapreduce.job: Running job后停止运行
- Hadoop2.x实战:Eclipse本地开发环境搭建与本地运行wordcount实例
- fedora17中hadoop2.2.0在eclipse下运行wordcount
- mrjob运行runner参数
- 在Eclipse中运行一个Hadoop程序
- 在Eclipse中运行、配置Hadoop
- 在eclipse中运行hadoop程序
- 在Eclipse中运行hadoop程序
- matplotlib.pyplot.plot(*args, **kwargs)
- Yocto介绍
- Python 3基础教程17-提问频率较高的几个Python问题
- oracle游标使用
- 存储系统的块关联挖掘C-Miner算法
- Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
- Python常用开源工具包
- 为什么正确的关闭TCP连接
- 《C语言程序开发范例宝典》-基础
- 二叉树的层序遍历
- 单元测试之道
- WPF问题
- 成员变量、局部变量、静态变量的区别
- IOS 获取网络状态