Sommario:
- Hardware di grandi dimensioni / topologia di rete
- Sincronizzazione grandi dati
- Sistema di file di dati di grandi dimensioni
Video: Hadoop Rack Awareness 2024
Oltre all'ottimizzazione del codice effettivo dell'applicazione con MapReduce per i progetti di Big Data, è possibile utilizzare alcuni tecniche di ottimizzazione per migliorare l'affidabilità e le prestazioni. Si dividono in tre categorie: hardware / topologia di rete, sincronizzazione e file system.
Hardware di grandi dimensioni / topologia di rete
Indipendentemente dall'applicazione, l'hardware e le reti più veloci produrranno probabilmente i tempi di esecuzione più veloci per il software. Un netto vantaggio di MapReduce è la capacità di funzionare su cluster economici di hardware di base e reti standard. Se non presti attenzione a dove i tuoi server sono fisicamente organizzati, non otterrai le migliori prestazioni e l'alto grado di tolleranza agli errori necessari per supportare attività di big data.
L'hardware delle merci viene spesso memorizzato in rack nel data center. La vicinanza dell'hardware all'interno del rack offre un vantaggio in termini di prestazioni rispetto al trasferimento di dati e / o codice da rack a rack. Durante l'implementazione, puoi configurare il tuo motore MapReduce per essere al corrente e sfruttare questa prossimità.
Mantenere insieme i dati e il codice è una delle migliori ottimizzazioni per le prestazioni di MapReduce. In sostanza, più gli elementi di elaborazione dell'hardware si avvicinano l'un l'altro, minore sarà la latenza con cui dovrai confrontarti.
Sincronizzazione grandi dati
Poiché non è in grado di contenere tutti i risultati della mappatura all'interno del nodo, i meccanismi di sincronizzazione copiano i risultati di mappatura sui nodi di riduzione immediatamente dopo che sono stati completati in modo che l'elaborazione può iniziare immediatamente. Tutti i valori della stessa chiave vengono inviati allo stesso riduttore, garantendo nuovamente prestazioni più elevate e una migliore efficienza.
Gli output di riduzione vengono scritti direttamente nel file system, quindi deve essere progettato e ottimizzato per ottenere i migliori risultati.
Sistema di file di dati di grandi dimensioni
L'implementazione di MapReduce è supportata da un file system distribuito. La principale differenza tra i file system locali e distribuiti è la capacità. Per gestire le enormi quantità di informazioni in un mondo di grandi dimensioni, i file system devono essere distribuiti su più macchine o nodi in una rete.
Le implementazioni MapReduce si basano su uno stile di distribuzione master-slave, in cui il nodo master memorizza tutti i metadati, i diritti di accesso, la mappatura e la posizione di file e blocchi e così via. Gli slave sono nodi in cui vengono memorizzati i dati effettivi. Tutte le richieste vanno al master e quindi vengono gestite dal nodo slave appropriato.Mentre si contempla la progettazione del file system, è necessario considerare quanto segue:
-
Riscaldare: Come ci si potrebbe aspettare, il nodo principale potrebbe essere sovraccaricato perché tutto inizia lì. Inoltre, se il nodo principale fallisce, l'intero file system non è accessibile finché non viene ripristinato il master. Un'ottimizzazione molto importante è creare un nodo master "warm standby" che può entrare in servizio se si verifica un problema con il master online.
-
Più grande è, meglio è: Anche la dimensione del file è una considerazione importante. Un sacco di piccoli file (meno di 100 MB) dovrebbero essere evitati. I file system distribuiti che supportano i motori MapReduce funzionano meglio quando sono popolati con un numero modesto di file di grandi dimensioni.
-
La vista lunga: Poiché i carichi di lavoro sono gestiti in batch, la larghezza di banda della rete altamente sostenuta è più importante dei tempi di esecuzione rapidi dei mappatori o dei riduttori. L'approccio ottimale prevede che il codice esegua lo streaming di molti dati quando viene letto e di nuovo quando è il momento di scrivere sul file system.
-
Mantieni la sicurezza: Ma non eccessivamente. L'aggiunta di livelli di sicurezza sul file system distribuito ne ridurrà le prestazioni. I permessi dei file sono lì per proteggersi da conseguenze non intenzionali, non da comportamenti malevoli. L'approccio migliore consiste nel garantire che solo gli utenti autorizzati abbiano accesso all'ambiente del data center e mantengano il file system distribuito protetto dall'esterno.