2014-07-02 11 views
5

Sto cercando di capire come viene gestita la scrittura dei dati in HDFS leggendo hadoop-2.4.1 documentation.Come vengono scritti i dati su HDFS?

secondo il seguente schema:

HDFS architecture

ogni volta che un cliente scrive qualcosa di HDFS, non ha alcun contatto con il NameNode ed è responsabile della suddivisione in blocchi e la replica. Suppongo che in questo caso il client sia una macchina che esegue una shell HDFS (o equivalente).

Tuttavia, non capisco come sia gestito. Infatti, secondo la stessa documentazione:

I DataNodes svolgono anche la creazione di blocco, la cancellazione e la replica su istruzione NameNode.

Lo schema presentato sopra è corretto? In tal caso,

  • è il namenode informato solo dei nuovi file quando riceve un Blockreport (che può richiedere del tempo, suppongo)?
  • perché il client scrive su più nodi?

    Se questo schema non è corretto, in che modo la creazione di file funziona con HDF?

risposta

2

Come hai detto, DataNodes è responsabile di fornire richieste di lettura/scrittura e creazione/eliminazione/replica di blocchi.

poi inviare su base regolare “HeartBeats” (stato della relazione di salute) e“BlockReport” (lista dei blocchi sul DataNode) al NameNode.

Secondo this article:

dati nodi inviare battiti cardiaci al nome del nodo ogni 3 secondi tramite una rete TCP stretta di mano, ... Ogni decimo battito cardiaco è un rapporto Block, dove i dati Il nodo dice al Nodo Nome su tutti i blocchi che ha.

Quindi i report dei blocchi vengono eseguiti ogni 30 secondi, non penso che questo possa influire sui lavori di Hadoop perché in generale sono lavori indipendenti.

Per la vostra domanda:

Perché il cliente in scrittura a più nodi?

dirò che in realtà, il cliente scrive ad un solo DataNode e gli dico di inviare dati ad altri datanodes (vedono questo link immagine: CLIENT iniziare a scrivere DATI), ma questo è trasparente. Ecco perché lo schema considera che il client è quello che sta scrivendo su più nodi

+0

Secondo l'articolo collegato, il client chiede dove scrivere i blocchi sul namenode in precedenza (http: //bradhedlund.s3.amazonaws. com/2011/Hadoop-network-intro/Writing-Files-to-HDFS-s.png). Ciò renderebbe sbagliato lo schema sopra, che è il nocciolo della mia domanda :) Potresti confermarlo? – fxm

+1

Sì, penso, vedere questo stupendo [collegamento] (http://bigdatahandler.com/wp-content/uploads/2013/10/HDFS.pdf). – Mouna