之前停止运行(和工作)实例后无法启动 Hadoop,因为 Datanode 说目录已锁定

Posted

技术标签:

【中文标题】之前停止运行(和工作)实例后无法启动 Hadoop,因为 Datanode 说目录已锁定【英文标题】:Failure to start Hadoop after having stopped a running (and working) instance before, because Datanode says that the directory is locked 【发布时间】:2020-06-24 11:56:00 【问题描述】:

我有一个运行 Hadoop 1.2.1 的集群,上面有 Giraph。服务器运行正常,但是当我停止它时,我无法让它再次运行。在 datanode 日志中,我收到以下错误:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Cannot lock storage /pathToFolder/data/datanode.该目录已被锁定。

我尝试了很多我在网上找到的解决方案:

    检查文件夹的权限。 检查名称节点和数据节点的 VERSION 文件的相同版本。 检查配置文件(core-site、hdfs-site、mapred-site、master、slave...) 删除/更改 namenode 和 datanode 数据文件夹 删除 hadoop 临时文件

底线是,一切似乎都很好,但仍然无法启动数据节点。数据节点的完整日志文件如下:

2020-06-24 11:23:46,624 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/********************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = XXXX
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.2.1
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG:   java = 1.8.0_212
********************/
2020-06-24 11:23:46,719 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2020-06-24 11:23:46,725 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2020-06-24 11:23:46,726 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2020-06-24 11:23:46,726 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2020-06-24 11:23:46,791 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2020-06-24 11:23:46,794 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2020-06-24 11:23:46,903 INFO org.apache.hadoop.hdfs.server.common.Storage: Cannot lock storage /users/lahdak/rojas/AppHadoop/data/datanode. The directory is already locked.
2020-06-24 11:23:47,004 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Cannot lock storage /users/lahdak/rojas/AppHadoop/data/datanode. The directory is already locked.
        at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.lock(Storage.java:599)
        at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:452)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:111)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:414)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:321)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1712)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1651)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1669)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1795)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1812)

2020-06-24 11:23:47,004 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/********************
SHUTDOWN_MSG: Shutting down DataNode at XXXX
********************/

【问题讨论】:

这个集群有多久了? Giraph 不再维护,AFAIK 和 JanusGraph + HBase/Cassandra 是“新”事物。在任何情况下,datanode 数据都不应该存储在用户目录中,除非它是专门运行 datanode 服务的用户 【参考方案1】:

仍然没有设法解决这个问题(Datanode 没有正确关闭),但我找到了解决这种情况的方法。我使用lsof +D /path 来检测活动进程并杀死它们。奇怪的是,这个过程对topjps 命令是不可见的。

【讨论】:

以上是关于之前停止运行(和工作)实例后无法启动 Hadoop,因为 Datanode 说目录已锁定的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu是别人安装好的,在Ubuntu下安装hadoop,无法启动hadoop,总是报需要需要停止一些进程,如下

Pig Hadoop Stream 帮助

Hadoop集群启动后命令JPS没有DataNode或者NameNode

启用/禁用 mod_ssl 后 Apache 无法启动

重启电脑后Namenode无法启动(hadoop 2.7.3)

AWS使用快照创建实例启动失败