2013-04-15 16 views
18

Attualmente sto usando Hadoop-2.0.3-alpha e dopo ho potuto lavorare perfettamente con HDFS (copiando file in HDFS, ottenendo successo da un framework esterno, usando il webfrontend), dopo un nuovo inizio di la mia VM, il processo datanode si sta fermando dopo un po '. Il processo del namenode e tutti i processi di filato funzionano senza problemi. Ho installato Hadoop in una cartella con un altro utente, poiché ho anche installato Hadoop 0.2, che ha funzionato bene. Dando uno sguardo al file di log di tutti i processi DataNode ho ottenuto le seguenti informazioni:Hadoop: processo Datanode ucciso

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 
************************************************** **********/ 

Tutte le idee? Posso essere stato commesso un errore durante il processo di installazione? Ma è strano, ha funzionato una volta. Devo anche dire che se ho effettuato il login come mio utente aggiuntivo per eseguire i comandi ./hadoop-daemon.shstart namenode e lo stesso con il datanode, ho bisogno di aggiungere sudo.

Ho usato questa guida all'installazione: http://jugnu-life.blogspot.ie/2012/0...rial-023x.html

A proposito, io uso la versione di Oracle Java 7.

risposta

81

Il problema potrebbe essere che il namenode è stato formattato dopo che il cluster è stato impostato e i datanode non lo erano, quindi gli slave si riferiscono ancora al vecchio namenode.

Dobbiamo eliminare e ricreare la cartella/home/hadoop/dfs/data sul filesystem locale per il datanode.

  • Controlla il tuo file di HDFS-site.xml per vedere dove dfs.data.dir sta puntando
  • ed eliminare quella cartella
  • e quindi riavviare il demone DataNode sulla macchina

I passaggi precedenti dovrebbero ricreare la cartella e risolvere il problema.

Si prega di condividere le informazioni di configurazione se le istruzioni di cui sopra non funzionano.

13

DataNode muore a causa di Clusterid incompatibile. Per risolvere questo problema Se stai usando hadoop 2.X, devi eliminare tutto nella cartella che hai specificato in hdfs-site.xml - "dfs.datanode.data.dir" (ma NON la cartella stessa) .

Il ClusterID verrà mantenuto in quella cartella. Elimina e riavvia dfs.sh. Questo dovrebbe funzionare !!!

+3

elimina tutto ** nella cartella ma non in sé **, altrimenti il ​​data base non verrà avviato perché non riesce a trovare la cartella – manuzhang

4

Penso che il modo consigliato di fare ciò senza cancellare la directory dei dati sia semplicemente cambiare la variabile clusterID nel file VERSION del datanode.

Se guardate nella directory demoni, si vedrà la directory DataNode exmaple file di

data/hadoop/daemons/datanode 

La versione dovrebbe essere simile.

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 

è necessario modificare l'IDCluster al primo valore in uscita del messaggio in modo nel tuo caso che sarebbe CID-1745a89c-fb08-40f0-a14d-d37d01f199c3 invece di CID-bb3547b0-03e4-4588 -ac25-f0299ff81e4f

la versione aggiornata dovrebbe apparire così con l'alterata IDCluster

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 

Riavvia Hadoop e il DataNode dovrebbe iniziare bene.

5
  1. è necessario eliminare entrambi
    C: \ Hadoop \ Data \ dfs \ DataNode e
    C: Hadoop \ data \ \ dfs \ NameNode cartelle.

Se non si dispone di questo cartelle - aprire il C: \ Hadoop \ etc \ file di Hadoop HDFS \-site.xml e ottenere percorsi per questo cartelle per la prossima eliminazione. Per me dice:

<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. comando Esegui per Format NameNode
    c:\hadoop\bin>hdfs namenode -format

Ora dovrebbe funzionare!

Problemi correlati