hadoop 2.5.0未能启动datanode [英] hadoop 2.5.0 failed to start datanode

查看:216
本文介绍了hadoop 2.5.0未能启动datanode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图部署独立版本的hadoop 2.5.0。但Datanode无法启动。日志打印:

  2014-10-20 13:42:13,288 FATAL org.apache.hadoop.hdfs.server.datanode。 DataNode:secureMain中的异常
java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Ljava / lang / String; Ljava / lang / String; I)Ljava / io / FileDescriptor;
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Native Method)
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.create(SharedFileDescriptorFactory.java:87)
在org.apache.hadoop.hdfs.server.datanode.ShortCircuitRegistry。< init>(ShortCircuitRegistry.java:165)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode。 java:586)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:773)
at org.apache.hadoop.hdfs.server.datanode.DataNode。 < init>(DataNode.java:292)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1895)
at org.apache.hadoop.hdfs .server.datanode.DataNode.instantiateDataNode(DataNode.java:1782)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1829)
at org.apache .hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2005)
at org.apache.hadoop。 hdfs.server.datanode.DataNode.main(DataNode.java:2029)

我搜索了一段时间并找不到任何有用的帮助。然后我尝试在我的电脑(X86-64 CentOS 6.5)中编译hadoop-2.5.0,因为这个错误与本地lib有关,我得到了同样的错误。我也尝试过cdh版本,仍然不行。



我的hdfs-site.xml:

 <性> 
<名称> fs.checkpoint.dir< /名称>
<值> / home / seg3 / namesecondary< / value>
< / property>
<属性>
< name> dfs.datanode.data.dir< / name>
<值> / home / seg2 / datanodedir< /值>
< / property>
<属性>
<名称> dfs.datanode.hdfs-blocks-metadata.enabled< / name>
<值> true< /值>
< / property>
<属性>
< name> dfs.replication< / name>
<值> 1< /值>
< / property>
<属性>
<名称> dfs.support.append< / name>
<值> true< /值>
< / property>
<属性>
< name> dfs.block.local-path-access.user< / name>
<值>根< /值>
< / property>
<属性>
<名称> dfs.client.read.shortcircuit< / name>
<值> true< /值>
< / property>
<属性>
< name> dfs.domain.socket.path< / name>
< value> /var/run/hadoop-hdfs/dn._PORT< / value>
< / property>
<属性>
< name> dfs.client.file-block-storage-locations.timeout< / name>
<值> 10000< /值>
< / property>

和core-site.xml:

 <性> 
<名称> fs.defaultFS< / name>
<值> hdfs:// localhost:8020< /值>
< / property>
<属性>
<名称> fs.trash.interval< /名称>
<值> 10080< /值>
< / property>
<属性>
<名称> fs.trash.checkpoint.interval< / name>
<值> 10080< /值>
< / property>
<属性>
< name> io.native.lib.available< / name>
<值> false< /值>
< / property>

有什么想法?顺便说一句,hadoop 2.3.0在我的机器上完美地工作。

解决方案

在试图在一堆服务器上部署相同的软件包之后,我发现了这个问题。不知怎么的,hadoop 2.3.0的本地lib进入了jdk的本地路径,这反过来又影响了java运行时。当datanode试图加载本地lib时,它会找到旧的。删除这些.so文件后,我启动并运行了datanode。干杯。


I'm trying to deploy a standalone version of hadoop 2.5.0. But the Datanode fails to start. Log prints:

2014-10-20 13:42:13,288 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Ljava/lang/String;Ljava/lang/String;I)Ljava/io/FileDescriptor;
  at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Native Method)
  at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.create(SharedFileDescriptorFactory.java:87)
  at org.apache.hadoop.hdfs.server.datanode.ShortCircuitRegistry.<init>(ShortCircuitRegistry.java:165)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:586)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:773)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:292)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1895)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1782)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1829)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2005)
  at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2029)

I googled for a while and couldn't find any useful help. Then I tried to compile hadoop-2.5.0 in my computer(X86-64 CentOS 6.5) since the error somehow related to the native lib, I got the same error. I also tried cdh version, still no good.

My hdfs-site.xml:

<property>
  <name>fs.checkpoint.dir</name>
  <value>/home/seg3/namesecondary</value>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/home/seg2/datanodedir</value>
</property>
<property>
  <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
  <value>true</value>
</property> 
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
<property>
  <name>dfs.support.append</name>
  <value>true</value>
</property>
<property>
  <name>dfs.block.local-path-access.user</name>
  <value>root</value>
</property>
<property>
  <name>dfs.client.read.shortcircuit</name>
  <value>true</value>
</property>
<property>
  <name>dfs.domain.socket.path</name>
  <value>/var/run/hadoop-hdfs/dn._PORT</value>                                                                                
</property>
<property>
  <name>dfs.client.file-block-storage-locations.timeout</name>
  <value>10000</value>
</property>

And core-site.xml:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://localhost:8020</value>
</property>
<property>
  <name>fs.trash.interval</name>
  <value>10080</value>
</property>
<property>
  <name>fs.trash.checkpoint.interval</name>
  <value>10080</value>
</property>   
<property>
  <name>io.native.lib.available</name>
  <value>false</value>
</property>

Any ideas? BTW, hadoop 2.3.0 works perfectly on my machine.

解决方案

After trying to deploy the same package over a bunch of servers, I found the problem. Somehow the hadoop 2.3.0's native lib got its way into jdk's native path, which in turn poluted the java runtime. When datanode tries to load native lib, it finds the old one. After deleting those .so files, I got the datanode up and running. Cheers.

这篇关于hadoop 2.5.0未能启动datanode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆