java.lang.UnsatisfiedLinkError : org. apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0 问题

标签 java maven hadoop cloudera-cdh

我无法解决这个异常,我已经阅读了 hadoop 文档和我能找到的所有相关的 stackoverflow 问题。

我的 fileSystem.mkdirs(***) 抛出:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode(NativeIO.java:524)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:465)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:518)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:496)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:316)
...

我在我的应用程序中包含以下依赖项(通过 maven pom.xml),所有版本均为 2.6.0-cdh5.13.0:hadoop-common、hadoop-hdfs、hadoop-client、hadoop-minicluster

我的文件系统变量是一个有效的(hadoop-common)文件系统(org.apache.hadoop.fs.FileSystem)。

我从 https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin 下载了 hadoop 文件. 我将 winutils.exe 和所有其他文件从 2.6.0 版存储到本地文件系统 C:\Temp\hadoop\bin 下。 我用 C:\Temp\hadoop 添加了路径变量 HADOOP_HOME(是的,不是 bin 目录的路径)。

回退未使用(“使用内置 java 类”),我得到:

145 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Trying to load the custom-built native-hadoop library...
147 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Loaded the native-hadoop library

(参见 https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html)

我明白,这个异常可能是由 hadoop 版本不匹配引起的,但我检查了导入的 hadoop 是否与我本地存储的 hadoop 匹配,版本明智。

我正在使用 Windows 10 x64 系统和 IntelliJ。

有人知道我可以检查什么,甚至我做错了什么吗?

更新: 我使用以下 VM 选项运行 main

-Dhadoop.home.dir=C:/Temp/hadoop
-Djava.library.path=C:/Temp/hadoop/bin

在不指定 lib 路径的情况下,我得到:

org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

最佳答案

给我设置 VM 参数 -Djava.library.path=C:\devTools\winutils-master\hadoop-3.0.0 解决了这个问题。

关于java.lang.UnsatisfiedLinkError : org. apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51282184/

相关文章:

apache-spark - Spark 提交给YARN时出现 “unknown queue: root.default”错误

java - Java 中的接口(interface)敏感操作

基于配置文件的 Maven 打包类型

hadoop - 在YARN上运行Hadoop作业-杀死容器

java - 当我执行命令release :prepare时,Maven出现问题

java - Spring Boot搭建常用服务的pom结构

hadoop - Hadoop无法理解复合键是否相等

java - 使用 Java 进行 Solr 定制以修改输出?

java - 内存高效方法 字符串后缀

java - 模拟私有(private)方法