Problemi noti del cluster Apache Spark in HDInsight

Questo documento elenca tutti i problemi noti relativi all'anteprima pubblica di HDInsight Spark.

Apache Livy perde la sessione interattiva

Quando Apache Livy viene riavviato (da Apache Ambari oppure a causa del riavvio della macchina virtuale con nodo head 0) con una sessione interattiva ancora attiva, una sessione di processo interattiva va persa. Di conseguenza, i nuovi processi possono rimanere bloccati in stato Accettato.

Attenuazione:

Seguire questa procedura per risolvere il problema:

  1. Eseguire SSH nel nodo head. Per altre informazioni, vedere Usare SSH con HDInsight.

  2. Eseguire il comando seguente per trovare gli ID applicazione dei processi interattivi avviati tramite Livy.

    yarn application –list
    

    I nomi di processo predefiniti sono Livy se i processi sono stati avviati con una sessione interattiva di Livy senza nomi espliciti specificati. Per la sessione Livy avviata da Jupyter Notebook, il nome del processo inizia con remotesparkmagics_*.

  3. Eseguire il comando seguente per terminare questi processi.

    yarn application –kill <Application ID>
    

Vengono avviati nuovi processi.

Il server cronologia Spark non viene avviato

Il server cronologia Spark non viene avviato automaticamente dopo la creazione di un cluster.

Attenuazione:

Avviare manualmente il server cronologia da Ambari.

Problema di autorizzazioni nella directory log Spark

hdiuser ottiene l'errore seguente durante l'invio di un processo con spark-submit:

java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)

Inoltre, non viene scritto alcun log del driver.

Attenuazione:

  1. Aggiungere hdiuser al gruppo Hadoop.
  2. Indicare 777 autorizzazioni in /var/log/spark dopo la creazione del cluster.
  3. Aggiornare il percorso del log Spark tramite Ambari in modo che corrisponda a una directory con 777 autorizzazioni.
  4. Eseguire spark-submit come sudo.

Il connettore Spark-Phoenix non è supportato

I cluster HDInsight Spark non supportano il connettore Spark-Phoenix.

Attenuazione:

Usare il connettore Spark-HBase. Per istruzioni, vedere How to use Spark-HBase connector (Come usare un connettore Spark-HBase).

Di seguito sono riportati alcuni problemi noti relativi ai notebook di Jupyter.

Notebook con nomi di file contenenti caratteri non ASCII

Non usare caratteri non ASCII nei file di Jupyter Notebook. Se tramite l'interfaccia utente di Jupyter si prova a caricare un file con un nome non ASCII, l'operazione si interrompe senza alcun messaggio di errore. Jupyter non consente di caricare il file, ma non genera nemmeno un errore visibile.

Errore durante il caricamento di notebook di maggiori dimensioni

Quando si caricano notebook di maggiori dimensioni, potrebbe comparire l'errore Error loading notebook .

Attenuazione:

Se viene visualizzato questo errore, non significa che i dati sono danneggiati o persi. I notebook sono ancora disponibili su disco in /var/lib/jupytered è possibile usare SSH nel cluster per accedervi. Per altre informazioni, vedere Usare SSH con HDInsight.

Dopo aver effettuato la connessione al cluster usando SSH, è possibile copiare i notebook dal cluster nel computer locale (tramite SCP o WinSCP) come backup per evitare la perdita di dati importanti del notebook. È quindi possibile usare SSH per il tunneling al nodo head sulla porta 8001 e accedere a Jupyter senza passare attraverso il gateway. Da qui è possibile cancellare l'output del notebook e salvarlo di nuovo per ridurne le dimensioni.

Per evitare questo errore in futuro, è necessario seguire alcune procedure consigliate:

  • È importante mantenere ridotte le dimensioni del notebook. L'output dei processi Spark inviato a Jupyter viene salvato in modo permanente nel notebook. È consigliabile usare Jupyter in generale per evitare l'esecuzione su dataframe o dataframe rdd di grandi dimensioni. Se invece si vuole esaminare il contenuto di un RDD, prendere in considerazione l'esecuzione .collect().take() o .sample() in modo che l'output non sia troppo grande.
  • Quando si salva un notebook, cancellare anche tutte le celle di output per ridurre le dimensioni.

L'avvio iniziale del notebook richiede più tempo del previsto

La prima istruzione di codice in Jupyter Notebook usando Spark magic potrebbe richiedere più di un minuto.

Spiegazione:

Ciò accade quando viene eseguita la prima cella di codice. In background viene avviata la configurazione della sessione e vengono impostati i contesti Spark, SQL e Hive. La prima istruzione viene eseguita dopo l'impostazione di questi contesti, dando l'impressione che l'esecuzione dell'istruzione impieghi molto tempo.

Jupyter Notebook timeout nella creazione della sessione

Quando il cluster Spark non è disponibile, i kernel Spark e PySpark nel Jupyter Notebook tenteranno di creare la sessione.

Mitigazioni:

  1. Liberare alcune risorse nel cluster Spark nei modi seguenti:

    • Arrestando altri notebook Spark selezionando il menu Close and Halt o facendo clic su Shutdown nel notebook.
    • Arrestando altre applicazioni Spark da YARN.
  2. Riavviare il notebook che si stava cercando di avviare. Ora dovrebbero essere disponibili risorse sufficienti per creare una sessione.

Vedi anche

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestione di risorse