Problemi noti del cluster Apache Spark in HDInsight

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

Livy perde la sessione interattiva

Quando Livy viene riavviato (da Ambari oppure a causa del riavvio della macchina virtuale con nodo head 0) con una sessione interattiva ancora attiva, una sessione di processo interattiva andrà persa. Per questo motivo, i nuovi processi possono rimanere bloccati in stato Accettato e non possono essere avviati.

Soluzione:

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 corrispondono a Livy se i processi sono stati avviati con una sessione interattiva Livy senza specificare nomi espliciti. Per la sessione Livy avviata dal notebook di Jupyter, il nome del processo verrà avviato con remotesparkmagics_*.

  3. Eseguire il comando seguente per terminare questi processi.

     yarn application –kill <Application ID>
    

Verranno avviati nuovi processi.

Il server cronologia Spark non viene avviato

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

Soluzione:

Avviare manualmente il server cronologia da Ambari.

Problema di autorizzazioni nella directory log Spark

Quando hdiuser invia un processo con spark-submit, si verifica un errore java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (autorizzazione negata) e il log del driver non viene scritto.

Soluzione:

  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

Attualmente, il connettore Spark-Phoenix non è supportato in un cluster HDInsight Spark.

Soluzione:

Usare il connettore Spark-HBase. Per istruzioni, vedere Come usare un connettore Spark-HBase.

Seguito alcuni problemi noti relativi ai notebook Jupyter.

Notebook con nomi di file contenenti caratteri non ASCII

I notebook Jupyter utilizzabili nei cluster HDInsight Spark non devono contenere nei nomi di file caratteri non ASCII. Se si tenta di caricare tramite l'interfaccia utente Jupyter un file con un nome di file non ASCII, l'operazione si interromperà senza avvisi. Questo significa che Jupyter non consentirà di caricare il file, ma non genererà 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 .

Soluzione:

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. 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. Con Jupyter in genere è consigliabile evitare di eseguire .collect() su RDD o frame di dati di grandi dimensioni. Se si vuole visualizzare il contenuto di un RDD, considerare invece la possibilità di eseguire .take() o .sample() per evitare la crescita eccessiva dell'output.
  • 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 del codice nel notebook di Jupyter tramite il magic Spark 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.

Timeout del notebook di Jupyter durante la creazione della sessione

Quando il cluster Spark esaurisce le risorse, si verificherà il timeout dei kernel Spark e Pyspark nel notebook di Jupyter quando si cerca di creare la sessione.

Soluzioni:

  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.

Vedere anche

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestire risorse