我已经在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
解决了问题。