2013-04-15 57 views
18

我目前正在使用Hadoop-2.0.3-alpha,並且在我可以使用HDFS(將文件複製到HDFS,從外部框架獲得成功,使用webfrontend)完美工作後,我的VM,datanode進程在一段時間後停止。 namenode進程和所有的紗線處理工作沒有問題。我將Hadoop安裝在另一個用戶下的文件夾中,因爲我還安裝了Hadoop 0.2,它也可以正常工作。 縱觀所有的DataNode進程的日誌文件,我得到了以下信息:Hadoop:Datanode進程死亡

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 [email protected]: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 [email protected] 
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.shstart namenode並且與datanode相同,我需要添加sudo。

我用這個安裝指南:http://jugnu-life.blogspot.ie/2012/0...rial-023x.html

順便說一句,我使用Oracle的Java 7版本。

回答

81

問題可能是在羣集設置完成後datnode被格式化,並且datanode沒有被設置,所以slave仍然指向舊的namenode。

我們必須在datanode的本地文件系統上刪除並重新創建文件夾/ home/hadoop/dfs/data。

  • 檢查HDFS-site.xml文件,看看dfs.data.dir指向
  • 並刪除該文件夾
  • ,然後重新啓動機器上的數據節點守護

上述步驟應該重新創建文件夾並解決問題。

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

13

DataNode由於不兼容的Clusterids而死亡。修復此問題 如果您使用hadoop 2.X,則必須刪除您在hdfs-site.xml中指定的文件夾中的所有內容 - 「dfs.datanode.data.dir」(但不是文件夾本身) 。

ClusterID將保留在該文件夾中。刪除並重新啓動dfs.sh.這應該工作!

+3

刪除該文件夾下的所有**,但不是自己**,否則datanode將無法啓動,因爲它無法找到該文件夾 – manuzhang

4

我認爲在不刪除數據目錄的情況下這樣做的推薦方法是簡單地更改datanode的VERSION文件中的clusterID變量。

如果在您的守護程序目錄中查找,您將看到數據管理部目錄〔實施例

data/hadoop/daemons/datanode 

的版本文件應該是這樣的。

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 

您需要的叢集編號更改爲第一個值在消息的輸出,所以在您的情況,這將是CID-1745a89c-fb08-40f0-a14d-d37d01f199c3代替CID-bb3547b0-03e4-4588 -ac25-f0299ff81e4f

更新後的版本應該會出現這樣與改變羣ID

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和數據管理部應啓動就好了。

5
  1. 您需要同時刪除
    C:\ Hadoop的\ DATA \ DFS \數據節點
    C:\ Hadoop的\ DATA \ DFS \ NameNode的文件夾。

如果沒有這個文件夾 - 打開C:\ Hadoop的\等\的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> 
  • 運行命令格式的NameNode
    c:\hadoop\bin>hdfs namenode -format
  • 現在它應該工作!