使用minicluster给hadoop程序做单元测试(windows环境)

在学习hadoop(开发)的起始阶段,面对庞大的系统和知识体系无从下手。
可以从开发入手。仅使用开发环境,在开发环境中运行测试,检查mapper和reducer的运行效果。

使用maven管理依赖的话,入门的Hello World级的程序,Word Count,需要的依赖有:
junit
hadoop-common
hadoop-mapreduce-client-jobclient
hadoop-minicluster

Word Count 源码见hadoop官网

Word Count 测试代码参考github用户bobfreitas

然后在jetbrains建立Java项目,配置使用JUnit运行,就……会报错(捂脸

windows系统中,还需要以下几个步骤:
1,需要给 hadoop conf 配置 hadoop.home.dir 变量或 HADOOP_HOME 环境变量
2,在以上环境变量的文件夹中,要在 bin 文件夹中包含对应版本的 winutils.exe
3,需要配置 PATH 环境变量,包含上述 bin 文件夹
4,在上述bin文件夹中,还要提供相应版本的 hadoop.dll

其中,winutils.exe 及 hadoop.dll 可以从 github 下载

然后程序能避开windows的坑了,但还有个bug
1,在Word Count测试程序中,tearDown的部分,前两行想在hdfs中删除文件,不,别想了,现在只有虚拟的hdfs,而且想删除的是真实的文件系统的文件。所以前两行注释掉
2,最后一行的cluster.shutdown(),为啥是在删除临时文件之后?要把这一行放在最开始

好了,现在测试程序可以运行了(吧?

关键词:
hadoop wordcount tutorial helloworld minicluster mini-cluster minidfscluster unittest unit test junit
开发 环境 配置 单元测试

另外,中间卡住的同学,你们大概是maven太慢了吧,可以考虑用aliyun的nexus源,或者自己用sonatype/nexus建立一个本地的代理缓存

最后,本文相关的程序将择时上传到 github

你可能感兴趣的:(使用minicluster给hadoop程序做单元测试(windows环境))