Windows上的Hadoop.YARN无法用java.lang.UnsisfiedLinkError启动



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

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

但现在,当我在"资源管理器"窗口上尝试"sbin/start yarn"时,我并没有看到错误。但它在纱线的"名称节点"上失败了

它失败了,并出现以下错误:-

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"one_answers"sbin"时,它看起来已经解决了。

你能为纱线问题提出解决方案吗。

应该有一个包含本机方法的%HADOOP_HOME%binhadoop.dll%HADOOP_HOME%bin应该在路径中。如果是从源代码构建的,请确保hadoop.dll已构建并放置。

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

因此,这个错误意味着你使用了一个较新版本的Hadoop,但你的Hadoop.dll来自一个较旧的Hadoop版本。

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

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

在我的例子中,我有3.1.1 Hadoop版本,我用下面地址的另一个文件夹更改了bin文件夹https://github.com/s911415/apache-hadoop-3.1.0-winutils.我设法用这个dll和一个节点启动了yarn(一个节点的yarn集群)。你可以在这里找到我遵循的设置。此外,您还必须设置hdfssite.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>

在我的案例中,这是一个例外,因为Hadoop没有找到预编译的"Hadoop"DLL。我已经将hadoop.dll文件夹的路径放入path环境变量中,它就成功了。

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

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

对我来说,设置VM参数-Djava.library.path=C:winutils-masterhadoop-3.0.0解决了问题。

相关内容

  • 没有找到相关文章

最新更新