报错显示
有同学在 Windows 操作系统上运行Hadoop或者Spark的时候会在控制台中遇到以下错误:
报错一
WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 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.
报错一
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 发行版不包含适用于 Windows 操作系统的二进制文件,它们不包含在官方 Hadoop 发行版中。因此,需要在 Windows 操作系统上从其源代码构建 Hadoop。
还有因为 hadoop 默认的是 Linux 环境,如果在 Windows 上运行 hadoop 的话,必须下载该文件将对应版本中的文件放到 hadoop 所在目录下的 bin 文件中。下面来看一下解决方案。
解决方案
Hadoop 或者spark 错误的解决方案:
此错误也与适用于 Windows 操作系统的本机 Hadoop 二进制文件有关。因此解决方案与上述 Spark 问题相同。
我们可以去网上下载winutils-master文件,解压后里面的bin目录文件夹包含winutils.exe和hadoop.dll,我们将这两个文件复制到hadoop的bin目录文件夹下即可。
如下图所示:
链接地址如下:
winutils-master:https://gitcode.net/mirrors/cdarlint/winutils/-/archive/master/winutils-master.zip
注意:对应着hadoop版本下载,实在对不上就凑合着用相近版本或前一个版本的
结语
每个人刚开始学习的时候都是小白,这个过程中或多或少的都会看看别人写的博客,过程中也可能会踩过很多坑。遇到问题的时候,我们可以记录下来,不管是对自己还是对其他学习的小伙伴都很有帮助。程序员大多都是很孤独的,写作也可以让自己的孤独“有处安放”,多去表达,多点表达,对于不善言辞的程序员总是有很多好处,博文写作的过程中最重要的是思路清晰有条理,和敲代码最大的不同是,编程有了明确的目标,日复一日必成高手,而写作如果只是为了写而写,往往会失了初心,丢了本真。写作不仅可以提高言语表达能力,更可以培养持续做事情的毅力,最好得是能遇到很多志同道合的朋友。