【问题标题】:UnsatisfiedLinkError (NativeIO$Windows.access0) when submitting mapreduce job to hadoop 2.2 from windows to ubuntuUnsatisfiedLinkError (NativeIO$Windows.access0) 将 mapreduce 作业从 windows 提交到 hadoop 2.2 到 ubuntu
【发布时间】:2019-12-22 12:04:45
【问题描述】:

我将我的 mapreduce 作业从在 windows 上运行的 java 应用程序提交到在 ubuntu 上运行的 hadoop 2.2 集群。在 hadoop 1.x 中,这按预期工作,但在 hadoop 2.2 上,我得到一个奇怪的错误:

java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

我编译了必要的windows库(hadoop.dll和winutils.exe),可以通过代码访问hdfs并使用hadoop API读取集群信息。只有作业提交不起作用。

感谢任何帮助。

解决方案:我自己发现了,windows的hadoop二进制文件的路径必须加到windows的PATH变量中。

【问题讨论】:

标签: java windows ubuntu hadoop


【解决方案1】:
  1. Gethadoop.dll(或 *x 上的 libhadoop.so)。确保与您的 JVM 匹配位数(32 位与 64 位)。
  2. 确保它可以通过 PATHjava.library.path 获得。

    注意设置java.library.path 覆盖 PATH。如果你设置了java.library.path,请确保它是正确的并且包含了hadoop库。

【讨论】:

    【解决方案2】:

    此错误通常是由于 %HADOOP_HOME%\bin 文件夹中的二进制文件不匹配而发生的。因此,您需要做的是专门为您的 hadoop 版本获取 hadoop.dll 和 winutils.exe。

    为您的特定 hadoop 版本获取 hadoop.dll 和 winutils.exe 并将它们复制到您的 %HADOOP_HOME%\bin 文件夹。

    【讨论】:

      【解决方案3】:

      从早上开始,我的 Windows 10 Hadoop 安装 一直存在问题,由于二进制文件不匹配,NameNode 和 DataNode 没有启动。在我将 bin 文件夹替换为与我的 Hadoop 版本对应的文件夹后,问题得到了解决。可能,我替换为安装附带的 bin 文件夹是针对不同版本的,我不知道它是如何发生的。如果您的所有配置都完好无损,您可能希望将 bin 文件夹 替换为与您的 Hadoop 安装相对应的版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 2018-12-25
        • 1970-01-01
        • 2014-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多