Windows Hadoop补全
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
跳过测试的话会报一堆错(估计还是文件系统的锅)。