19

我目前正在使用 Hadoop-2.0.3-alpha 并且在我可以完美地使用 HDFS 之后(将文件复制到 HDFS,从外部框架获得成功,使用 webfrontend),在我的 VM 重新启动后,datanode 进程正在停止过了一会儿。namenode 进程和所有 yarn 进程都可以正常工作。我在另一个用户下的文件夹中安装了 Hadoop,因为我还安装了 Hadoop 0.2,它也运行良好。查看所有数据节点进程的日志文件,我得到以下信息:

2013-04-11 16:23:50,475 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2013-04-11 16:24:17,451 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-04-11 16:24:23,276 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-04-11 16:24:23,279 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-04-11 16:24:23,480 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Configured hostname is user-VirtualBox
2013-04-11 16:24:28,896 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:50010
2013-04-11 16:24:29,239 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2013-04-11 16:24:38,348 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2013-04-11 16:24:44,627 INFO org.apache.hadoop.http.HttpServer: Added global filter 'safety' (class=org.apache.hadoop.http.HttpServer$QuotingIn putFilter)
2013-04-11 16:24:45,163 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context datanode
2013-04-11 16:24:45,164 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context logs
2013-04-11 16:24:45,164 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context static
2013-04-11 16:24:45,355 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened info server at 0.0.0.0:50075
2013-04-11 16:24:45,508 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dfs.webhdfs.enabled = false
2013-04-11 16:24:45,536 INFO org.apache.hadoop.http.HttpServer: Jetty bound to port 50075
2013-04-11 16:24:45,576 INFO org.mortbay.log: jetty-6.1.26
2013-04-11 16:25:18,416 INFO org.mortbay.log: Started SelectChannelConnector@0.0.0.0:50075
2013-04-11 16:25:42,670 INFO org.apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 50020
2013-04-11 16:25:44,955 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened IPC server at /0.0.0.0:50020
2013-04-11 16:25:45,483 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Refresh request received for nameservices: null
2013-04-11 16:25:47,079 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
2013-04-11 16:25:47,660 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to localhost/127.0.0.1:8020 starting to offer service
2013-04-11 16:25:50,515 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting
2013-04-11 16:25:50,631 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
2013-04-11 16:26:15,068 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data/in_use.lock acquired by nodename 3099@user-VirtualBox
2013-04-11 16:26:15,720 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
java.io.IOException: Incompatible clusterIDs in /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data: namenode clusterID = CID-1745a89c-fb08-40f0-a14d-d37d01f199c3; datanode clusterID = CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
at org.apache.hadoop.hdfs.server.datanode.DataStorage .doTransition(DataStorage.java:391)
at org.apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.java:191)
at org.apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.java:219)
at org.apache.hadoop.hdfs.server.datanode.DataNode.in itStorage(DataNode.java:850)
at org.apache.hadoop.hdfs.server.datanode.DataNode.in itBlockPool(DataNode.java:821)
at org.apache.hadoop.hdfs.server.datanode.BPOfferServ ice.verifyAndSetNamespaceInfo(BPOfferService.java: 280)
at org.apache.hadoop.hdfs.server.datanode.BPServiceAc tor.connectToNNAndHandshake(BPServiceActor.java:22 2)
at org.apache.hadoop.hdfs.server.datanode.BPServiceAc tor.run(BPServiceActor.java:664)
at java.lang.Thread.run(Thread.java:722)
2013-04-11 16:26:16,212 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
2013-04-11 16:26:16,276 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363)
2013-04-11 16:26:18,396 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2013-04-11 16:26:18,940 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2013-04-11 16:26:19,668 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************** **********
SHUTDOWN_MSG: Shutting down DataNode at user-VirtualBox/127.0.1.1
************************************************** **********/

有任何想法吗?可能是我在安装过程中犯了错误吗?但奇怪的是,它曾经工作过。我还不得不说,如果我以我的附加用户身份登录以执行命令./hadoop-daemon.sh start namenode并且与 datanode 相同,我需要添加 sudo。

我使用了这个安装指南:http: //jugnu-life.blogspot.ie/2012/0...rial-023x.html

顺便说一句,我使用的是 Oracle Java-7 版本。

4

4 回答 4

83

问题可能是集群建立后namenode被格式化而datanodes没有被格式化,所以slave仍然指的是旧的namenode。

我们必须在本地文件系统上为数据节点删除并重新创建文件夹 /home/hadoop/dfs/data。

  • 检查您的 hdfs-site.xml 文件以查看 dfs.data.dir 指向的位置
  • 并删除该文件夹
  • 然后重启机器上的datanode守护进程

上述步骤应重新创建文件夹并解决问题。

如果上述说明不起作用,请分享您的配置信息。

于 2013-04-16T01:37:29.790 回答
14

DataNode 因不兼容的 Clusterid 而死。解决这个问题 如果您使用的是 hadoop 2.X,那么您必须删除您在 hdfs-site.xml 中指定的文件夹中的所有内容 - “dfs.datanode.data.dir”(但不是文件夹本身)。

ClusterID 将保存在该文件夹中。删除并重新启动 dfs.sh。这应该工作!

于 2014-01-18T07:21:27.423 回答
5
  1. 您需要删除
    C:\hadoop\data\dfs\datanode
    C:\hadoop\data\dfs\namenode文件夹。

如果您没有此文件夹 - 打开您的C:\hadoop\etc\hadoop\hdfs-site.xml文件并获取此文件夹的路径以供下次删除。对我来说,它说:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/data/dfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/hadoop/data/dfs/datanode</value>
</property>
  1. 运行格式名称节点的命令
    c:\hadoop\bin>hdfs namenode -format

现在它应该工作了!

于 2015-03-24T14:21:28.967 回答
4

我认为在不删除数据目录的情况下这样做的推荐方法是简单地更改数据节点的 VERSION 文件中的 clusterID 变量。

如果您查看您的守护进程目录,您将看到 datanode 目录示例

data/hadoop/daemons/datanode

VERSION 文件应如下所示。

cat current/VERSION 
#Tue Oct 14 17:31:58 CDT 2014
storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
clusterID=CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
cTime=0
datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
storageType=DATA_NODE
layoutVersion=-55

您需要将 clusterId 更改为消息输出中的第一个值,因此在您的情况下,这将是 CID-1745a89c-fb08-40f0-a14d-d37d01f199c3 而不是 CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f

更新后的版本应该像这样显示更改后的 clusterId

  cat current/VERSION 
    #Tue Oct 14 17:31:58 CDT 2014
    storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
    clusterID=CID-1745a89c-fb08-40f0-a14d-d37d01f199c3
    cTime=0
    datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
    storageType=DATA_NODE
    layoutVersion=-55

重新启动 hadoop,datanode 应该可以正常启动。

于 2014-10-14T22:45:04.393 回答