Apache官方提供的Hadoop下载是没有完整支持Windows的,比如一开始运行的时候会提示少了winutils.exe。后来到Stackoverflow上查了一下之后发现,这玩意需要自己编译。虽然Github上有repo提供预编译的,但是版本并不全。于是决定自己编译。

虽然对Java的构建系统几乎没什么了解,但是操作起来实在是比某Tensorflow舒服多了。唯一美中不足的是我对于Maven的编译选项不是很了解,到网上搜了一些博客之后才大概知道含义。

可参考这个 https://pravinchavan.wordpress.com/2013/04/14/building-apache-hadoop-from-source/

在这里用的是Hadoop 3.1.3,官网上下载的源码包。

编译前的工作按照BUILDING.txt,拉到最底下Windows部分,按照操作即可,唯一要注意的地方是如果使用新版本的VS的话,vcvars.bat的位置会变,比如VS2019 Enterprise的话需要将执行两个操作:
1) 将MSVS的值改为C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise
2) 最后一行改为CALL "%MSVS%\VC\Auxiliary\Build\vcvarsall.bat" %VCVARSPLAT%

编译用的命令是:mvn package -Pdist -Psrc -Dtar -DskipTests
编译完成后的输出目录在hadoop-dist\target下。
-Dtar表示编译完成后打个包。
其中原本还有个-Pdocs命令可以加上去的,应该是指编译javadoc,但是可能是由于Hadoop没有仔细针对Windows进行测试的原因,加了这个会报错。
同时怀疑这个-Psrc也不用加,好像是生成源码包用的。

顺带一提,-P表示加载profile,类似于make指定任务一类的,但是又好像不同,因为这里可以同时指定多个profile。

然后就是如果不用-DskipTests跳过测试的话会报一堆错(估计还是文件系统的锅)。

标签: none

添加新评论