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

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 编译
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值