Intellij idea 本地开发调试hadoop的方法
使用软件的版本信息
Intellij idea版本:
2016.3.2
hadoop版本:
2.6.5
数据集:
Hadoop: The Definitive Guide
(使用《hadoop权威指南》的1901和1902的两年的天气统计的源码实例)
附上hadoop调试并测试的源码
hadooptestMapper
1 | package cn.zcs.zzuli; |
hadooptestReducer
1 | package cn.zcs.zzuli; |
hadooptest
1 | package cn.zcs.zzuli; |
建立项目 (File->new->project)
创建包->在包里建立如上三个类
项目结构如下图所示:
- 这是已经 配置好的环境,所以没有报错。但开发前是需要配置的。
hadoop开发配置
- File->Project Structure->Modules
- 点击加号->JARs or dectories
- 在Project Structure 中找到Artifacts点击。
- 点击加号添加JARs
点击加号->module output->OK;
完成
Edit Configurations
在Edit Configurations 界面点击加号->Application
- 编辑各个参数信息
- (1) main class需要输入org.apache.hadoop.util.RunJar
- (2) program arguments,填写参数如上图所示:
- 第一个参数之前在project structure中填写的jar文件路径,第二个参数是输入文件的目录,第二个参数是输出文件的路径
- (3) 在项目中新建一个输入路径并将输入文件放进去(输出文件不用建立,系统自己建立的)
FAQ
找不到类
- 发现刚才填写参数的地方着了一个参数,需要将main函数所在类的路径添加进去:
eclipse 中运行 Hadoop2.xx map reduce程序 出现错误(null) entry in command string: null chmod 0700
解决办法:
在https://github.com/SweetInk/hadoop-common-2.7.1-bin
中下载winutils.exe,libwinutils.lib 拷贝到%HADOOP_HOME%\bin目录 。再次执行程序,报错:
1 | Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z |
- 在https://github.com/SweetInk/hadoop-common-2.7.1-bin中下载hadoop.dll,并拷贝到c:\windows\system32目录中。
注意
:程序中的路径都要写windows文件系统中的路径了,不再是hdfs中的路径。
Windows下Hadoop的输入文件的目录问题(出现权限问题)
- 解决办法:
- 在配置Progeam argument 时需要写
具体的输入文件路径
。 - 还可以使用通配符匹配的方法,例如:
{input/*}
- 在windows环境下可以写个方法获取目录下的所有文件。
- 在配置Progeam argument 时需要写
1 | File inputdir = new File(args[0]); |
Hadoop报错:Failed to locate the winutils binary in the hadoop binary path
- 这个也是文件目录问题,当然这个也是可以被忽略的错误。
在IDEA中的Hadoop使用Maven配置后,在控制台未打印日志输出信息。
- 这个日志可以在
调试的控制台
显示,但在直接弹出来的命令控制台未显示hadoop的日志输出信息。这个问题可以使用本地的Hadoop源文件,也就是引用本地的Hadoop源文件。
Windows下的 XXXX.tar.gz
文件怎么解压
- 搜索
7-zip
下载并使用。