hadoop 源码的编译其实没那么玄乎,但环境得整利索,尤其是几个关键依赖包。像是用来做数据序列化的protobuf,Hadoop 必须得用 2.5.0 版本的,不然分分钟编译挂掉。你得先把protoc
加到PATH
里,不然 Maven 都认不出它来。
压缩那块用的是snappy,就是那种压得快、解得也快的库,HDFS 和 MapReduce 性能会好不少。你要是编译的时候找不到它的.so
或者.a
文件,那十有八九就是没装好路径。
再来一个比较容易被忽略的——FindBugs,这玩意儿不是编译必须,但有它能帮你提早发现 Bug,适合团队协作的场景,稳定性更有保障。
JDK 1.7和Maven这些就不多说了,老 Java 项目标配。记得 Maven 最好配置个阿里镜像,下载依赖能快不少。
源码包和modules.tar
得放对地方,结构搞乱了 Maven 就找不到模块了,建议一步步照着官方目录结构来。
编译命令推荐用:mvn clean install -DskipTests
,节省时间。你要是想跑测试,去掉-DskipTests
就行,不过会慢多哦。
如果你在 CentOS 上编译,还得注意 gcc 版本和 snappy 兼容问题,遇到报错别急,上网搜报错信息,社区还是挺活跃的。