如何消除错误util.shell:未能找到winutils二进制文件

nkhmeac6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(452)

我在eclipse下从windows机器(客户机)执行远程作业,我澄清我的windows客户机上没有任何hadoop安装,我不需要,我在远程执行hadoop作业,hadoop安装在linux机器上。所有操作都正确执行,但我希望消除此错误:

14/09/22 11:49:49 ERROR util.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.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:355)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:370)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:363)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at MyFirstJob.main(MyFirstJob.java:45)

你知道如何使这个例外不发生吗?

sdnqo3pr

sdnqo3pr1#

安装 winutils.exe ,没有其他方法可以修复此错误。
这里有一个小上下文:hadoop将在本地编写一些文件(例如作业配置),然后将它们上载到集群。因此,它需要设置权限、编写一些文件或创建目录。
如果它找不到二进制文件,它将回退到java实现,所以您不必担心。但是,没有内置配置来关闭此消息,因此真正修复此消息的唯一方法是重新编译 hadoop-common jar没有这个错误(我想安装winutils和它相比并不是那么糟糕)。

lnvxswe2

lnvxswe22#

我在某个地方看到一个建议,就是用这个名字创建一个空文件,以消除错误。我想我试过一次,而且成功了-如果对你有用,可以试试。如果需要,可以动态创建文件。

ql3eal8s

ql3eal8s3#

将org.apache.hadoop.util.shell.java复制到项目中。
您可以注解掉下面的行,以删除错误。
抛出新的ioexception(“在hadoop二进制文件中找不到可执行文件“+fullexename+”);
对于windows检查,
从windows eclipse运行mapreduce(yarn)时出错

相关问题