在 windows 构建 hadoop,生成 winutils.exe 和 hadoop.dll

本文详细指导如何在Windows系统上解决Hadoop和Spark构建过程中的错误,包括下载所需文件、安装依赖(如VS2010、.NET Framework等)、使用Cygwin和CMake构建Hadoop源代码,并提供常见问题及其解决方案。

1.问题

  1. Spark 错误的解决方案
    我们尝试在 Windows 操作系统上运行 Spark,但在控制台中遇到了错误(如下所示)。这是因为您的 Hadoop 发行版不包含适用于 Windows 操作系统的二进制文件,它们不包含在官方 Hadoop 发行版中。因此,您需要在 Windows 操作系统上从其源代码构建 Hadoop。
16/04/02 19:59:31 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/04/02 19:59:31 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  1. Hadoop 错误的解决方案
    此错误也与适用于 Windows 操作系统的本机 Hadoop 二进制文件有关。因此解决方案与上述 Spark 问题相同,因为您需要从 Hadoop 的源代码为您的 Windows 操作系统构建它。
16/04/03 19:59:10 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable C:\hadoop\bin\winutils.exe in the Hadoop binaries.

按照本文进行操作,在本教程结束时,您将能够通过构建 Hadoop 发行版来消除这些错误。
当然你也可以直接从笔者的 github 获取最新版本的文件:
https://github.com/fktod/hadoop-win
https://gitcode.net/centrl/hadoop-win.git
其他版本文件下载:
https://github.com/cdarlint/winutils

2.下载所需文件

  1. Windows 7 Ultimate (x64) - DVD (Chinese-Simplified)

  2. Visual Studio 2010 Ultimate (x86) - DVD (Chinese-Simplified)

  3. Microsoft .NET Framework 4

  4. Windows SDK 7

  5. Java SE Development Kit 18.0.2

  6. Apache Maven 3.8.6

  7. Protocol Buffers v21.3

  8. cygwin

  9. CMake

  10. 7z

3.安装(虚拟机操作)

3.1.Windows 7

使用 VMware 虚拟机安装 Windows 7,保证能连接到网络。

3.2.Visual Studio 2010

3.3.Microsoft .NET Framework 4

3.4.Windows SDK 7

3.5.JDK18

安装到c盘根目录,安装完毕配置环境变量 JAVA_HOME。

3.6.Apache Maven 3.8.6

安装到c盘根目录,安装完毕配置环境变量 M2_HOME。

3.7.Protocol Buffers v21.3

解压到c盘根目录,将安装文件夹设置为系统环境变量 Path 。
在这里插入图片描述

3.8.cygwin

安装时需设置软件源,可使用清华的软件源。安装完成后,将安装文件夹设置为系统环境变量 Path 。
在这里插入图片描述
可以通过运行命令 “uname -r”或“uname -a”来验证 Cygwin 安装。

3.9.CMake

安装到c盘根目录,确保选择“将 CMake 添加到所有用户的 PATH”。
在这里插入图片描述
要检查 CMake 安装是否正确,请打开新的命令提示符并键入“cmake –version”。您将能够看到已安装的 cmake 版本。

3.10.7z

4.构建 Hadoop(虚拟机操作)

  1. 使用 7z 打开你下载的Hadoop源代码文件,即 hadoop-3.3.3-src.tar.gz 。

  2. 在里面你会找到“hadoop-3.3.3-src.tar”—— 双击那个文件。

  3. 现在您将能够看到 hadoop-3.3.3-src 文件夹。

  4. 现在单击提取并提供一个短路径,如 C:\hdp,然后单击确定。如果您给出一个长路径,由于 Windows 的最大路径长度限制,您可能会遇到运行时错误。

  5. 提取完成后,我们需要添加一个新的 Platform 系统变量。该平台的值将是:

    • x64(适用于 64 位操作系统)
    • Win32(适用于 32 位操作系统)

    请注意,变量名 Platform 区分大小写。所以不要改变字母大小写。

  6. 要在系统变量中添加平台,只需打开环境变量对话框,单击系统变量部分中的“新建…”按钮,然后填写名称和值文本框,如下所示:

图片标题

  1. 从开始 --> 所有程序 --> Microsoft Windows SDK v7.1 打开 Windows SDK 7.1 命令提示符窗口,然后单击Windows SDK 7.1 命令提示符。

  2. 键入命令 cd C:\hdp,将目录更改为您提取的 Hadoop 源文件夹。

  3. 输入命令 mvn package -Pdist,native-win -DskipTests -Dtar

  4. 如果一切顺利,大约需要 30 分钟。这取决于您的 Internet 连接和 CPU 速度。

  5. 如果一切顺利,您将看到如下图所示的成功消息。您的原生 Hadoop 发行版将在 C:\hdp\hadoop-dist\target\hadoop-3.3.3 创建

  6. 现在打开 C:\hdp\hadoop-dist\target\hadoop-3.3.3\bin。你会找到 winutils.exe 和 hadoop.dll。

5.搭建 windows 的 hadoop 环境(本机操作)

  1. 下载 hadoop-3.3.3.tar.gz,将文件解压并配置 HADOOP_HOME 环境变量。
  2. 将 winutils.exe 和 hadoop.dll 复制到 %HADOOP_HOME%\bin 中。
  3. 打开 cmd 命令行窗口,输入 hadoop version 进行验证。

6.安装遇到的问题及解决

  1. cygwin的bash运行问题,检查目录权限问题,导致编译 hadoop-dist 时操作目录和文件失败。
    解决办法是修改 C:\cygwin64\etc 中的 fstab,添加上noacl
    none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
    在这里插入图片描述
  2. hadoop-hdfs-native-client 编译失败
    在这里插入图片描述
    解决办法是修改 C:\hdp\hadoop-hdfs-project\hadoop-hdfs-native-client\pom.xml文件打开,修改如下部分的true为false;
    在这里插入图片描述
  3. hadoop-client-minicluster 编译报错
    在这里插入图片描述
    在 C:\hdp 执行 mvn clean。

7.参考文章

  1. windows上编译hadoop
  2. Build and Install Hadoop on Windows With Native Binaries
  3. Hadoop 3.2.1 win10 64位系统 vs2015 编译
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值