2013-11-08 16 views
6

Sospetto che la risposta sia "dipende", ma esiste una guida generale sul tipo di hardware da pianificare per Facebook Presto?Requisiti hardware per Facebook Presto

Poiché Presto utilizza un coordinatore e un gruppo di lavoratori ei lavoratori eseguono con i dati, immagino che i problemi principali saranno la RAM sufficiente per il coordinatore, la larghezza di banda della rete sufficiente per i risultati parziali inviati dai lavoratori al coordinatore, ecc.

Se è possibile fornire alcune considerazioni generali su come dimensionare per questo in modo appropriato, mi piacerebbe sentirli.

+0

Hai guardato in http://prestodb.io/docs/current/installation/deployment.html? – sufinawaz

risposta

24

La maggior parte delle persone utilizza Presto sui nodi Hadoop che già dispongono. Su Facebook, in genere, eseguiamo Presto su alcuni nodi all'interno del cluster Hadoop per distribuire il carico della rete.

In generale, sceglierei i rapporti standard del settore per un nuovo cluster: 2 core e 2-4 gig di memoria per ogni disco, con 10 gigabit di rete se ci si può permettere. Dopo aver installato alcune macchine (4+), fai un benchmark usando le tue query sui tuoi dati. Dovrebbe essere ovvio se è necessario regolare i rapporti.

In termini di dimensionamento dell'hardware per un cluster da zero alcune cose da considerare:

  • dimensione dei dati totale determinerà il numero di dischi di cui avrete bisogno. HDFS ha un grande overhead quindi avrai bisogno di molti dischi.
  • Il rapporto tra la velocità della CPU e i dischi dipende dal rapporto tra i dati a caldo (i dati con cui si sta lavorando) e i dati a freddo (dati di archivio). Se stai appena iniziando il tuo data warehouse avrai bisogno di molte CPU dato che tutti i dati saranno nuovi e caldi. D'altra parte, la maggior parte dei dischi fisici può fornire dati solo così velocemente, quindi a un certo punto più CPU non aiutano.
  • Il rapporto tra la velocità della CPU e la memoria dipende dalla dimensione delle aggregazioni e dei join che si desidera eseguire e dalla quantità di dati (a caldo) che si desidera memorizzare nella cache. Attualmente, Presto richiede che i risultati dell'aggregazione finale e la tabella hash per un join si adattino alla memoria su una singola macchina (stiamo lavorando attivamente alla rimozione di queste restrizioni). Se si dispone di una maggiore quantità di memoria, il sistema operativo memorizzerà nella cache le pagine del disco che miglioreranno in modo significativo le prestazioni delle query.

Facebook corriamo i nostri processi Presto come segue:

  • Gestiamo i nostri JVM con un mucchio 16 gigabyte di lasciare più memoria disponibile per i buffer del sistema operativo
  • Sulle macchine corriamo Presto ci don 'eseguire le attività MapReduce
  • La maggior parte delle macchine Presto su cui ci sono 16 core reali e l'affinità del processore (presto cgroup) per limitare Presto a 12 core (quindi il client DFS e altre cose possono essere eseguiti facilmente)
  • Mo st dei nostri server sono su 10 reti gigabit, ma noi abbiamo un grande cluster crufty vecchio con 1 gigabit (che funziona bene)
  • Usiamo la stessa configurazione per il coordinatore e gli operai
+0

Grazie per la risposta dettagliata e veloce! – benvolioT

+0

Grazie per l'ottima risposta – Pradatta