2015-11-09 12 views
5

Ho due cluster, uno nella macchina virtuale locale un altro nel cloud remoto. Entrambi i cluster in modalità Standalone.Come inviare il codice a un cluster Spark remoto da IntelliJ IDEA

mio ambiente:

Scala: 2.10.4 
Spark: 1.5.1 
JDK: 1.8.40 
OS: CentOS Linux release 7.1.1503 (Core) 

Il cluster locale:

Spark Master: scintilla: // local1: 7077

Il cluster remoto:

Spark Master: spark: // remote1: 707 7

Voglio finire questo:

codici di scrittura (solo semplice word-count) in IntelliJ IDEA localmente (sul mio laptp), e impostare l'URL Spark Maestro spark://local1:7077 e spark://remote1:7077, quindi eseguire il mio codici in IntelliJ IDEA. Cioè, non voglio usare spark-submit per inviare un lavoro.

Ma ho avuto qualche problema:

Quando uso il cluster locale, tutto va bene. Esegui codici in IntelliJ IDEA o usa spark-submit può inviare un lavoro al cluster e può completare il lavoro.

ma quando uso il cluster remoto, ho ottenuto nel registro un avviso:

TaskSchedulerImpl: lavoro iniziale non ha accettato alcuna risorsa; controllare la vostra interfaccia utente cluster per garantire che i lavoratori siano registrati e di risorse sufficienti

È risorse sufficienti non sufficiente memoria!

E questo registro continua a stampare, senza ulteriori azioni. Entrambi i codici spark-submit ed eseguire i codici in IntelliJ IDEA risultano uguali.

Voglio sapere:

  • E 'possibile inviare i codici da per IntelliJ IDEA cluster remoto?
  • Se è OK, ha bisogno di configurazione?
  • Quali sono i possibili motivi che possono causare il mio problema?
  • Come posso gestire questo problema?

Grazie mille!

Aggiornamento

c'è una domanda simile here, ma penso che la mia scena è diversa. Quando eseguo i miei codici in IntelliJ IDEA e imposta Spark Master nel cluster di macchine virtuali locali, funziona. Ma ho ricevuto l'avviso Initial job has not accepted any resources;....

Desidero sapere se la politica di sicurezza oi fuochi d'artificio possono causare questo?

+0

Possibile duplicato di [Esecuzione del codice spark su eclipse con la scintilla installata su un altro server] (http://stackoverflow.com/questions/33591481/running-spark-code-on-eclipse-with-spark-being-install -on-altro-server) –

+0

@AlbertoBonsanto Ma quell'altro post (che è il tuo) * non * mostra come eseguire direttamente da IJ: richiede la costruzione del jar e l'uso di 'spark-submit'. – javadba

risposta

3

Inviare codice in modo programmatico (ad esempio tramite SparkSubmit) è piuttosto complicato. Per lo meno c'è una varietà di impostazioni e considerazioni sull'ambiente - gestite dallo script spark-submit - che sono piuttosto difficili da replicare all'interno di un programma scala. Sono ancora incerto su come ottenerlo: e ci sono stati una serie di lunghi thread all'interno della comunità degli sviluppatori di scintille sull'argomento.

La mia risposta qui è di circa una parte del tuo post: in particolare la

TaskSchedulerImpl: lavoro iniziale non ha accettato alcuna risorsa; controllare la l'interfaccia utente cluster per garantire che i lavoratori sono registrati e hanno risorse sufficienti

Il motivo è in genere ci sono stati una mancata corrispondenza sulla memoria richiesta e/o il numero di core dal vostro lavoro rispetto a ciò che erano disponibili sul cluster . Forse al momento della presentazione da IJ del

$ SPARK_HOME/conf/scintilla defaults.conf

non erano adeguatamente corrispondenti ai parametri richiesti per il vostro compito sul cluster esistente. Potrebbe essere necessario aggiornare:

spark.driver.memory 4g 
spark.executor.memory 8g 
spark.executor.cores 8 

È possibile controllare l'interfaccia utente scintilla su porta 8080 per verificare che i parametri richiesti siano effettivamente disponibili sul cluster.

Problemi correlati