【问题标题】:Hadoop on Windows. YARN fails to start with java.lang.UnsatisfiedLinkErrorWindows 上的 Hadoop。 YARN 无法以 java.lang.UnsatisfiedLinkError 启动
【发布时间】:2019-02-25 16:05:31
【问题描述】:

我已经在 windows hadoop-2.7.0 上安装/配置了 Hadoop

我可以成功启动“sbin\start-dfs”运行命令。 DataNode 和 NameNode 启动。 我可以创建目录,将文件添加到 hadoop 系统中。

但是现在当我在“resourcemanager”窗口上尝试“sbin/start-yarn”时,我没有看到错误。但它在纱线的“namenode”上失败了

失败并出现此错误:-

15/06/21 17:26:49 INFO impl.MetricsConfig: loaded properties from hadoop-metrics
2.properties
15/06/21 17:26:49 INFO impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
15/06/21 17:26:49 INFO impl.MetricsSystemImpl: NodeManager metrics system started
15/06/21 17:26:49 FATAL nodemanager.NodeManager: Error starting NodeManager
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:473)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:526)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:504)
        at org.apache.hadoop.fs.FileSystem.primitiveMkdir(FileSystem.java:1064)
        at org.apache.hadoop.fs.DelegateToFileSystem.mkdir(DelegateToFileSystem.java:161)
        at org.apache.hadoop.fs.FilterFs.mkdir(FilterFs.java:197)
        at org.apache.hadoop.fs.FileContext$4.next(FileContext.java:730)
        at org.apache.hadoop.fs.FileContext$4.next(FileContext.java:726)
        at org.apache.hadoop.fs.FSLinkResolver.resolve(FSLinkResolver.java:90)
        at org.apache.hadoop.fs.FileContext.mkdir(FileContext.java:726)
        at org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection.createDir(DirectoryCollection.java:365)
        at org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection.createNonExistentDirs(DirectoryCollection.java:199)
        at org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService.serviceInit(LocalDirsHandlerService.java:152)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.service.CompositeService.serviceInit(CompositeService.java:107)
        at org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService.serviceInit(NodeHealthCheckerService.java:48)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.service.CompositeService.serviceInit(CompositeService.java:107)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:254)
        at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:463)
        at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:511)
15/06/21 17:26:49 INFO impl.MetricsSystemImpl: Stopping NodeManager metrics system...
15/06/21 17:26:49 INFO impl.MetricsSystemImpl: NodeManager metrics system stopped.
15/06/21 17:26:49 INFO impl.MetricsSystemImpl: NodeManager metrics system shutdown complete.
15/06/21 17:26:49 INFO nodemanager.NodeManager: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NodeManager at idea-PC/27.4.177.205
************************************************************/

我在“sbin\start-dfs”时遇到过类似的问题。我尝试了不同的东西。当我在路径中添加hadoop的“bin”和“sbin”时,它看起来已经解决了。

能否请您提出纱线问题的解决方案。

【问题讨论】:

    标签: hadoop hadoop-yarn


    【解决方案1】:

    应该有一个%HADOOP_HOME%\bin\hadoop.dll,其中包含native method%HADOOP_HOME%\bin 应该在路径中。如果您从源代码构建,请确保构建并放置了 hadoop.dll。

    【讨论】:

      【解决方案2】:

      如果您查看此处缺少的 native method 的历史记录,您会发现它是最近添加的。

      所以这个错误意味着你使用的是新版本的 Hadoop,但你的 hadoop.dll 来自旧版本的 Hadoop。

      因此,无论是检索/构建更新的 hadoop.dll 还是降级 Hadoop 都应该避免这个问题。

      对我来说,降级到 Hadoop 2.3.0 成功了。

      【讨论】:

        【解决方案3】:

        在我的例子中,我有 3.1.1 Hadoop 版本,我将 bin 文件夹更改为来自以下地址 https://github.com/s911415/apache-hadoop-3.1.0-winutils 的另一个文件夹。我设法用这个 dll 和一个节点(一个节点的 Yarn 集群)启动了纱线。 您可以找到我遵循的设置here。您还必须设置 hdfs-site.xml 像这样:

        <configuration>
        
        <property> 
            <name>dfs.replication</name>
            <value>1</value>
        </property> 
        
        <property> 
            <name>dfs.namenode.name.dir</name> 
            <value>/hadoop-3.1.1/data/namenode</value>
        </property>
        
        <property> 
            <name>dfs.datanode.data.dir</name> 
            <value>/hadoop-3.1.1/data/datanode</value>
        </property>
        
        </configuration>
        

        【讨论】:

          【解决方案4】:

          在我的情况下这是一个例外,因为 Hadoop 没有找到预编译的“hadoop”DLL。我已将 hadoop.dll 文件夹的路径放入 PATH 环境变量中,并且成功了。

          你得到的异常描述有误导性,原来java.lang.ClassLoader类中抛出异常: throw new UnsatisfiedLinkError("no " + name + " in java.library.path");

          【讨论】:

            【解决方案5】:

            在我的情况下,路径变量中添加了 hadoop 路径,它发出错误“另一个 Derby 实例已经启动”

            【讨论】:

              【解决方案6】:

              对我来说,设置 VM Argument -Djava.library.path=C:\winutils-master\hadoop-3.0.0 解决了这个问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-04-19
                • 2019-04-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-07
                相关资源
                最近更新 更多