搭建 Hadoop 开发环境并编写运行测试类
本文基于 Hadoop 2.7.0 进行搭建配置
Hadoop 的开发构建依赖较多,我的开发机是Mac,官方推荐使用Linux/Ubuntu,而我也确实遇到了一些奇怪的问题,因此我在虚拟机里来搭建开发调试环境。
我尝试过使用官方提供的docker开发镜像,然后在容器里安装图形界面,再通过vnc进去,不过复杂度也很高,我放弃了。
安装 Ubuntu 虚拟机
用Virtualbox下载ISO文件,安装即可。
选择了Ubuntu 18.04.4的镜像,可以通过 http://mirrors.ustc.edu.cn/ubuntu-releases/18.04.4/ubuntu-18.04.4-desktop-amd64.iso 进行下载,装好之后,替换镜像源:
因为要安装很多东西,为了避免sudo输入密码,在 /etc/sudoers
最后添加如下一行:
安装依赖
下面各个依赖的安装参照 https://github.com/apache/hadoop/blob/release-2.7.0/BUILDING.txt 进行。
Oracle JDK 1.7 OpenJDK 1.8
官方推荐 Oracle JDK 1.7,但是安装起来有点费劲,根据 https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions,OpenJDK 也是支持的。
安装并验证:
配置相关环境变量,在 ~/.bashrc
最后添加以下几行:
Maven
native 库
Protoc 2.5.0
注意:这里必须要安装 2.5.0 版本,否则接下来编译时会遇到版本不一致的报错:
可选依赖
Snappy 压缩
Bzip2
Jansson(JSON的C语言库)
Linux FUSE
下载&编译
虚拟机安装了Intellij IDEA community版本。
克隆github上项目,切换分支:
然后在IDEA中打开项目,在进行构建前,编辑 ~/.m2/settings.xml
,修改或添加内容:
构建命令:
不出意外,一段时间后编译成功:
查看 hadoop-dist
目录,可以看到二进制包的目录和压缩包:
编写测试类
上面的编译其实没什么意思,因为不编译也能从官网下载到安装包,重点是我要能在IDEA里直接编写调试代码。
下面我们就在Hadoop源码项目下写一个自己的测试类。
在IDEA中打开Hadoop项目后,如果出现类没有被识别的情况下,可以尝试点击File菜单下的Invalidate Cache/Restart。
在 hadoop/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs
路径下新建 TestFirst
类,代码如下:
点击运行按钮,报错:
求助搜索引擎,搜索结果:
https://issues.apache.org/jira/browse/HADOOP-7566,这个貌似可以解释原因,大意是说测试的jar包里没有包含webapps目录,不过我们现在也没打包,不确定。
https://www.jianshu.com/p/fdbda76ccac7,这里给了两种解决方法,一是手动把src/webapps目录拷到target目录下,二是把src/webapps 目录添加到classpath里,第一个方法是验证过的,但第二个可能更科学,因为放到target目录下有可能被清理。
关于根本原因以及这种报错是否正常,暂时不去管它,因为我的目的是要先把代码跑起来,去研究原因时间不足。
在IDEA的Project Structure 的 SDK界面把 src/webapps
添加到classpath,重新执行,仍然报错,放弃。
把 src/webapps
目录拷贝到 target/test-classes
目录下,重新执行,成功,日志和直接在命令行启动MiniDFSCluster差不多,从日志里面找到NameNode的Web UI端口:
在浏览器里访问 http://localhost:45667,可以看到熟悉的页面:
目标达成。
后续
接下来我会用这个开发环境研究Hadoop的基本运行原理,从HDFS开始。
公众号:dashujuxuetu
版权声明: 本文为 InfoQ 作者【大数据学徒】的原创文章。
原文链接:【http://xie.infoq.cn/article/c19f0de1a130406b0f7826950】。
本文遵守【CC BY-NC-SA】协议,转载请保留原文出处及本版权声明。
评论