2012-02-22 12 views
8

Abbiamo un grande archivio documenti attualmente in esecuzione a 3 TB nello spazio e aumenta di 1 TB ogni sei mesi. Sono attualmente memorizzati in un filesystem di Windows che a volte ha causato problemi in termini di accesso e recupero. Stiamo cercando di sfruttare un database di archivio di documenti basato su Haddop. È una buona idea andare avanti con Haddop? Qualcuno ha qualche esposizione allo stesso? Quali possono essere le sfide, i blocchi tecnologici nel raggiungere lo stesso?Hadoop come database archivio documenti

+0

Sono curioso di sapere quali vantaggi si vedono in Hadoop per questo utilizzo. – Bill

+0

@Msdnexpert: che tipo di funzionalità stai cercando? Semplice spazio condiviso? HDFS/Hadoop non è una SAN. Maggiori dettagli, per favore. –

+0

Sì Sto cercando di sfruttare HDFS come un sistema di storage scalabile distribuito. È possibile? – Msdnexpert

risposta

10

Hadoop è più per l'elaborazione in batch che l'accesso ai dati elevati. Dovresti dare un'occhiata ad alcuni sistemi NoSQL, come i database orientati ai documenti. Difficile rispondere senza sapere come sono i tuoi dati.

La regola numero uno per la progettazione NoSQL consiste nel definire innanzitutto gli scenari di query. Una volta compreso veramente come si desidera interrogare i dati, è possibile esaminare le varie soluzioni NoSQL disponibili. L'unità di distribuzione predefinita è la chiave. Quindi è necessario ricordare che è necessario essere in grado di dividere i dati tra le macchine nodo in modo efficace altrimenti si finirà con un sistema scalabile orizzontalmente con tutto il lavoro ancora fatto su un nodo (anche se le query migliori a seconda del caso).

È inoltre necessario ripensare al teorema di PAC, la maggior parte dei database NoSQL è consistente (CP o AP) mentre i DBMS relazionali tradizionali sono CA. Ciò influirà sul modo in cui gestisci i dati e sulla creazione di determinate cose, ad esempio la generazione delle chiavi può essere un trucco. Ovviamente i file in una cartella sono un po 'diversi.

Inoltre, si ricorda che in alcuni sistemi come HBase non esiste un concetto di indicizzazione (sto cercando di avere l'impostazione di indicizzazione dei file in questo archivio di documenti Windows FS). Tutti gli indici dovranno essere creati dalla logica dell'applicazione e tutti gli aggiornamenti e le eliminazioni dovranno essere gestiti come tali. Con Mongo puoi effettivamente creare indici su campi e interrogarli in tempi relativamente brevi, c'è anche la possibilità di integrare Solr con Mongo. Non devi solo eseguire una query per ID in Mongo come fai in HBase che è una famiglia di colonne (ovvero il database di stile di Google BigTable) in cui essenzialmente hai coppie di valore-chiave nidificate.

Quindi, ancora una volta si tratta dei dati, di ciò che si desidera archiviare, di come si prevede di memorizzarlo e, soprattutto, di come si desidera accedervi. Il progetto Lily sembra molto promettente. Il lavoro in cui sono coinvolto ci consente di prelevare una grande quantità di dati dal web e di memorizzarli, analizzarli, eliminarli, analizzarli, analizzarli, inviarli in streaming, aggiornarli ecc. Ecc. Non usiamo un solo sistema ma molti che sono più adatti per il lavoro a portata di mano. Per questo processo utilizziamo sistemi diversi in fasi diverse in quanto ci fornisce un accesso rapido dove ne abbiamo bisogno, offre la possibilità di trasmettere e analizzare i dati in tempo reale e, soprattutto, di tenere traccia di tutto mentre andiamo (come la perdita di dati in un prod il sistema è un grosso problema). Sto usando Hadoop, HBase, Hive, MongoDB, Solr, MySQL e anche buoni vecchi file di testo. Ricorda che la produzione di un sistema che utilizza queste tecnologie è un po 'più difficile dell'installazione di Oracle su un server, alcune versioni non sono così stabili ed è necessario eseguire prima i test.Alla fine della giornata dipende in realtà dal livello di resistenza degli affari e dalla natura mission-critical del vostro sistema.

Un altro percorso che nessuno ha finora menzionato è NewSQL - cioè RDBMS scalabili orizzontalmente ... Ce ne sono alcuni là fuori come il cluster MySQL (credo) e VoltDB che potrebbero essere adatti alla tua causa.Ma ancora a seconda dei tuoi dati (i file word docs o documenti di testo con informazioni su prodotti, fatture o strumenti o qualcosa del genere) ...

Anche in questo caso, i sistemi NoSQL sono anche non relazionali, cioè non relazionali. e ci sono per un seme migliore per i set di dati non relazionali. Se i tuoi dati sono intrinsecamente relazionali e hai bisogno di alcune funzionalità di query SQL che hanno realmente bisogno di fare cose come i prodotti cartesiani (ovvero i join), allora potresti star meglio di stare con Oracle e investire un po 'di tempo nell'indicizzazione, sharding e ottimizzazione delle prestazioni.

Il mio consiglio sarebbe di giocare effettivamente con alcuni sistemi diversi. Guarda a;

MongoDB - Documento - CP

CouchDB - Documento - AP

Cassandra - Famiglia Colonna - Disponibile & partizione tollerante (AP)

VoltDB - Un posto davvero un prodotto di bell'aspetto, un database di relazioni distribuito che potrebbe funzionare per il tuo caso (potrebbe essere più facile ve). Sembrano anche fornire un supporto alle imprese che potrebbe essere più adatto per un prodotto (cioè dare agli utenti aziendali un senso di sicurezza).

Qualsiasi sia il mio 2c. Giocare con i sistemi è davvero l'unico modo per scoprire cosa funziona davvero per il tuo caso.

+0

Ottima risposta puoi dare qualsiasi risorsa per il database come prospettiva di ingegneria dei dati per principianti come può qualcuno imparare queste cose? –

0

HDFS non sembra la soluzione giusta. È ottimizzato per la massiccia elaborazione dei dati da parte di Parralel e non per essere un file system generico. In particolare ha le seguenti limitazioni che rendono probabilmente una cattiva scelta:
a) È sensibile al numero di file. Il limite pratico dovrebbe essere di circa decine di milioni di file.
b) I file sono di sola lettura e possono essere aggiunti, ma non modificati. Va bene per l'elaborazione dei dati analitici ma potrebbe non soddisfare le tue necessità.
c) Ha un singolo punto di errore - namenode. Quindi la sua affidabilità è limitata.

Se è necessario un sistema con una scalabilità comparabile, ma non sensibile al numero di file, suggerire OpenStack's Swift. Inoltre non ha SPOF.

+0

a) è corretto, b) può essere simulato da un'eliminazione seguita da una scrittura, c) non è più valido: https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop- HDFS/HDFSHighAvailabilityWithNFS.html. – Matt

0

Il mio suggerimento è che è possibile acquistare un archivio NAS. Può essere EMS isilon tipo di prodotto che puoi prendere in considerazione.

Hadoop HDFS non è per lo storage di file. E 'di archiviazione per l'elaborazione dei dati (per report, analisi ..)

NAS è per la condivisione di file

SAN è più per un database

http://www.slideshare.net/jabramo/emc-sanoverviewpresentation

Dichiarazione: Io non sono un EMC persona, quindi puoi prendere in considerazione qualsiasi prodotto. Ho appena usato EMC come riferimento.

Problemi correlati