Hadoop构建在Windows中失败:native.sln缺少zconf.h?

我正在尝试使用Windows 10 Home Edition在开发计算机上构建以下hadoop版本

Hadoop的2.7.3-SRC

以下是有关我本地开发环境的详细信息:

-Windows 10家庭版

-Intel Core i5-6200U CPU @ 2.30GHz

-RAM 16 GB

-64位操作系统,基于x64的处理器

-Microsoft Visual Studio Community 2015版本14.0.25431.01更新3

– 还将MSBUILD位置添加为C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ amd64到Windows系统环境变量路径

-.NET Framework 4.6.01586

-cmake版本3.7.2

-CYGWIN_NT-10.0 LTPBCV82DUG 2.7.0(0.306 / 5/3)2017-02-12 13:18 x86_64 Cygwin

-java版“1.8.0_121”

-Java(TM)SE运行时环境(版本1.8.0_121-b13)

-Java HotSpot(TM)64位服务器VM(内置25.121-b13,混合模式)

-Apache Maven 3.3.9(bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)

-Google Protocol Buffers protoc –version libprotoc 2.5.0

另外,我创建了名为Platform的系统环境变量并将其设置为x64

我打开了Visual Studio 2015的开发人员命令提示符(VS2015)

c:\ hadoop \ hadoop-2.7.3-src> mvn包-Pdist,native-win -DskipTests -Dtar -X

不幸的是,我收到以下错误:

[C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj] ZlibDecompressor.c c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj] Done Building Project "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj" (default targets) -- FAILED. Done Building Project "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln" (default targets) -- FAILED. Build FAILED. "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln" (default target) (1) -> "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj" (default target) (2) -> (ClCompile target) -> c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj] c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj] 0 Warning(s) 2 Error(s) Time Elapsed 00:00:02.49 

上述错误与zlib工具有关。

在线研究后,有人说需要在Visual Studio中成功构建以下Visual Studio解决方案文件:

…. \ Hadoop的2.7.3-SRC \ Hadoop的共同项目\ Hadoop的共同的\ src \主\本地\ native.sln

在管理员模式下使用Visual Studio 2015,我打开了native.sln文件,并立即看到错误:

在此处输入图像描述

有人可以告诉我我必须采取哪些步骤来解决上述错误?

因此,我必须采取相当多的步骤才能解决问题。

在…. \ hadoop-2.7.3-src \ hadoop-common-project \ hadoop-common \ src \ main \ winutils目录中,我在Visual Studio 2015中打开了以下解决方案:

winutils.sln

在….. \ hadoop-2.7.3-src \ hadoop-common-project \ hadoop-common \ src \ main \ winutils \ libwinutils.c中,我注释掉了以下代码行,并做了修改后的副本它如下图所示:

 //const WCHAR* wsceConfigRelativePath = WIDEN_STRING(STRINGIFY(WSCE_CONFIG_DIR)) L"\\" WIDEN_STRING(STRINGIFY(WSCE_CONFIG_FILE)); const WCHAR* wsceConfigRelativePath = WIDEN_STRING("../etc/hadoop") L"\\" WIDEN_STRING("wsce-site.xml"); 

此外,在winutils解决方案的属性窗口中,我必须将平台值设置为x64,如下面的屏幕截图所示:

接下来,我打开了Dos命令提示符,并检查了我的Windows操作系统的确切版本:

版本

Microsoft Windows [版本10.0.14393]

此外,我打开了libwinutils项目的属性窗口,并确保在以下快照中标记的属性具有正确的值:

另外,我对winutils项目的属性采取了相同的步骤:

(抱歉,stackoverflow不允许我放置另一张图片快照,但你基本上要做的就是确保winutils项目的属性设置正确)

我下载了zlib 1.2.11版源代码。 使用VS2015的开发人员命令提示符(Visual Studio 2015)我使用cmake从zlib 1.2.11版源代码构建了zlib

 c:\zlib\zlib-1.2.11>cmake -G "Visual Studio 14 2015" -A x64 c:\zlib\zlib-1.2.11\ -- The C compiler identification is MSVC 19.0.24215.1 -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of off64_t -- Check size of off64_t - failed -- Looking for fseeko -- Looking for fseeko - not found -- Looking for unistd.h -- Looking for unistd.h - not found -- Configuring done -- Generating done -- Build files have been written to: C:/zlib/zlib-1.2.11 

最后,使用cmake运行构建

 c:\zlib\zlib-1.2.11>cmake --build . 

在Windows系统变量中,我定义了以下变量:

ZLIB_HOME设置为C:\ zlib \ zlib-1.2.11