2014-09-07 19 views

risposta

19

This has been answered on the spark user list:

Il modo migliore è sicuramente solo per aumentare l'ulimit se possibile, questo è una sorta di un presupposto che facciamo in Spark che i cluster saranno in grado di muoversi in giro.

Potreste essere in grado di incidere intorno a questo diminuendo il numero di riduttori [o per anime usati da ogni nodo] ma questo potrebbe avere alcune implicazioni di prestazioni per il vostro lavoro.

In generale, se un nodo nel cluster è assegnato C core e si esegue un lavoro con riduttori X poi scintilla aprire i file C * X per iscritto parallelo e inizio. Il consolidamento shuffle contribuirà a ridurre il numero totale di file creati ma il numero di handle di file aperti a qualsiasi ora non cambia in modo da non aiutare il problema ulimit.

-Patrick Wendell

+1

ho pensato uno dei principali vantaggi di scintilla era mantiene le cose in ram .. perché sarebbe necessario aprire così tanti file, allora? – anthonybell

+0

Utilizza questi file durante la riproduzione casuale. L'idea è di mettere in primo piano i dati per ogni riduttore sul disco locale, quindi il riduttore può consumare i dati sul proprio ritmo (tirare invece di premere). – marios

+1

nel caso in cui qualcun altro passi allo stesso problema utilizzando mesos, citando lo stesso thread di lista degli utenti spark: "Si scopre che il mesos può sovrascrivere l'impostazione ulimit -n del sistema operativo, quindi abbiamo aumentato l'impostazione ulimit-n del mesos slave. " – vefthym

8

ulimit predefinito è 1024 che è irrisorio per applicazioni su larga scala. HBase raccomanda fino a 64 KB; i moderni sistemi Linux non sembrano avere problemi con questo numero di file aperti.

uso

ulimit -a 

per verificare il numero massimo di corrente di file aperti

ulimit -n 

può cambiare temporaneamente il numero di file aperti; è necessario aggiornare i file di configurazione del sistema e i limiti per utente per renderlo permanente. Nei sistemi RedHat, che possono essere trovati in

/etc/sysctl.conf 
/etc/security/limits.conf 
Problemi correlati