Domanda

Qualcuno di voi ha provato Hadoop?Può essere utilizzato senza il filesystem distribuito che lo accompagna, in un'architettura Share-nothing?Avrebbe senso?

Sono anche interessato a eventuali risultati prestazionali che hai...

È stato utile?

Soluzione

Sì, puoi utilizzare Hadoop su un file system locale utilizzando gli URI dei file anziché gli URI hdfs in vari punti.Penso che molti degli esempi forniti con Hadoop facciano questo.

Questo probabilmente va bene se vuoi solo imparare come funziona Hadoop e il paradigma di riduzione della mappa di base, ma avrai bisogno di più macchine e di un filesystem distribuito per ottenere i reali vantaggi della scalabilità intrinseca nell'architettura.

Altri suggerimenti

Hadoop MapReduce può essere eseguito su qualsiasi numero di file system o anche su origini dati più astratte come i database.In effetti ci sono un paio di classi integrate per il supporto di filesystem non HDFS, come S3 E FTP.Potresti facilmente creare anche il tuo formato di input estendendo il file basic Classe InputFormat.

L'uso di HDFS comporta tuttavia alcuni vantaggi.Il vantaggio più potente è che il pianificatore di lavoro MapReduce tenterà di eseguire mappe e reduce sulle macchine fisiche che memorizzano i record che necessitano di elaborazione.Ciò comporta un aumento delle prestazioni poiché i dati possono essere caricati direttamente dal disco locale invece che trasferiti sulla rete, il che, a seconda della connessione, potrebbe essere più lento di ordini di grandezza.

Come ha detto Joe, puoi effettivamente utilizzare Hadoop senza HDFS.Tuttavia, la velocità effettiva dipende dalla capacità del cluster di eseguire calcoli vicino a dove sono archiviati i dati.L'utilizzo di HDFS presenta 2 vantaggi principali IMHO 1) il calcolo è distribuito in modo più uniforme nel cluster (riducendo la quantità di comunicazioni tra nodi) e 2) il cluster nel suo insieme è più resistente ai guasti dovuti alla indisponibilità dei dati.

Se i tuoi dati sono già partizionati o banalmente partizionabili, potresti voler fornire la tua funzione di partizionamento per l'attività di riduzione della mappa.

Il modo migliore per comprendere Hadoop è scaricarlo e iniziare a esplorare gli esempi di inclusione.Usa un box Linux/VM e la tua configurazione sarà molto più semplice rispetto a Mac o Windows.Una volta che ti senti a tuo agio con gli esempi e i concetti, inizia a vedere come il tuo spazio problematico potrebbe essere mappato nel framework.

Un paio di risorse che potresti trovare utili per maggiori informazioni su Hadoop:

Video e presentazioni dell'Hadoop Summit

Hadoop:La guida definitiva:Versione con tagli grezzi - Questo è uno dei pochi (unici?) libri disponibili su Hadoop al momento.Direi che vale il prezzo dell'opzione di download elettronico anche a questo punto (il libro è completo al 40% circa).

Hadoop: The Definitive Guide: Rough Cuts Version

Calcolo parallelo/distribuito = VELOCITÀ << Hadoop rende tutto questo davvero semplice ed economico poiché puoi semplicemente usare un mucchio di macchine di base!!!

Nel corso degli anni le capacità di archiviazione su disco sono aumentate notevolmente, ma la velocità con cui si leggono i dati non è rimasta al passo.Più dati hai su un disco, più lenta sarà la ricerca.

Hadoop è una variante intelligente dell’approccio “dividi e conquista” alla risoluzione dei problemi.Essenzialmente suddividi il problema in blocchi più piccoli e assegni i blocchi a diversi computer diversi per eseguire l'elaborazione in parallelo accelerare le cose piuttosto che sovraccaricare una macchina.Ogni macchina elabora il proprio sottoinsieme di dati e il risultato alla fine viene combinato.Hadoop su un singolo nodo non ti darà la velocità che conta.

Per vedere i vantaggi di Hadoop, dovresti avere un cluster con almeno 4-8 macchine commodity (a seconda della dimensione dei tuoi dati) sullo stesso rack.

Non è più necessario essere un ingegnere di sistemi paralleli super geniale per trarre vantaggio dal calcolo distribuito.Basta conoscere l'hadoop con Hive e sei a posto.

sì, Hadoop può essere utilizzato molto bene senza HDFS.HDFS è solo uno spazio di archiviazione predefinito per Hadoop.Puoi sostituire HDFS con qualsiasi altro spazio di archiviazione come i database.HadoopDB è un'estensione di Hadoop che utilizza i database anziché HDFS come origine dati.Cercalo su Google, lo otterrai facilmente.

Se hai appena iniziato a muoverti, inizia scaricando CDH4 ed eseguilo.Puoi installarlo facilmente in una macchina virtuale locale ed eseguirlo in "modalità pseudo-distribuita" che imita da vicino il modo in cui verrebbe eseguito in un cluster reale.

Sì, puoi utilizzare il file system locale utilizzando file:// specificando il file di input ecc. E questo funzionerebbe anche con piccoli set di dati. Ma la vera potenza di Hadoop si basa sul meccanismo distribuito e di condivisione.Ma Hadoop viene utilizzato per elaborare enormi quantità di dati. Tale quantità di dati non può essere elaborata da un singolo computer locale o, anche se lo facesse, ci vorrà molto tempo per completare il lavoro. Poiché il file di input si trova in una posizione condivisa (HDFS ) più mappatori possono leggerlo contemporaneamente e ridurre il tempo per completare il lavoro.In poche parole È possibile utilizzarlo con il file system locale ma per soddisfare i requisiti aziendali è necessario utilizzarlo con il file system condiviso.

Grandi risposte teoriche sopra.

Per modificare il tuo file system Hadoop in locale, puoi modificarlo nel file di configurazione "core-site.xml" come di seguito per le versioni Hadoop 2.x.x.

 <property>
    <name>fs.defaultFS</name>
    <value>file:///</value>
  </property>

per le versioni Hadoop 1.x.x.

 <property>
    <name>fs.default.name</name>
    <value>file:///</value>
  </property>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top