Problemas conhecidos do cluster do Apache Spark no HDInsight
Este documento mantém o registro de todos os problemas conhecidos para a visualização pública do Spark no HDInsight.
Apache Livy vaza sessão interativa
Quando o Apache Livy é reiniciado (do Apache Ambari ou da reinicialização da máquina virtual headnode 0) com uma sessão interativa ainda ativa, uma sessão de trabalho interativa é perdida. Como resultado, novos trabalhos podem estar paralisados no estado Aceito.
Atenuação:
Use o procedimento a seguir para contornar o problema:
SSH no nó principal. Para obter informações, consulte Usar SSH com HDInsight.
Execute o seguinte comando para encontrar as IDs de aplicativo dos trabalhos interativos iniciados por Livy.
yarn application –list
Os nomes de trabalho padrão serão Livy se os trabalhos foram iniciados com uma sessão interativa Livy sem nenhum nome explícito especificado. Para a sessão Livy iniciada pelo Jupyter Notebook, o nome do trabalho começa com
remotesparkmagics_*
Execute o seguinte comando para eliminar esses trabalhos.
yarn application –kill <Application ID>
A execução de novos trabalhos tem início.
Servidor de histórico Spark não iniciado
O servidor de histórico Spark não é iniciado automaticamente depois de um cluster ser criado.
Atenuação:
Inicie manualmente o servidor de histórico do Ambari.
Problema de permissão no diretório de log do Spark
O hdiuser obtém o seguinte erro ao enviar um trabalho usando o envio spark:
java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)
E nenhum driver log é gravado.
Atenuação:
- Adicione hdiuser ao grupo Hadoop.
- Forneça 777 permissões em /var/log/spark após a criação do cluster.
- Atualize o local do log spark usando o Ambari para ser um diretório com 777 permissões.
- Execute spark-submit como sudo.
Não há suporte para o conector Spark Phoenix
Os clusters de HDInsight Spark não dão suporte para o conector Spark Phoenix.
Atenuação:
Use o conector Spark-HBase em vez disso. Para obter instruções, confira Como usar o conector Spark-HBase.
Problemas relacionados aos Jupyter Notebooks
A seguir estão alguns problemas conhecidos e relacionados aos Jupyter Notebooks.
Notebooks com caracteres não ASCII nos nomes de arquivos
Não use caracteres que não sejam ASCII em nomes de arquivos do Jupyter Notebook. Se você tentar carregar um arquivo por meio da UI Jupyter, que tem um nome de arquivo não ASCII, ele falha sem qualquer mensagem de erro. Jupyter não permite que você carregue o arquivo, mas ele não gerará um erro visível.
Erro ao carregar notebooks de tamanhos maiores
Você pode encontrar um erro Error loading notebook
ao carregar notebooks com um tamanho maior.
Atenuação:
Se você visualizar esse erro, não significa que seus dados estão corrompidos ou foram perdidos. Os notebooks ainda estão no disco, em /var/lib/jupyter
, e você pode usar o SSH no cluster para acessá-los. Para obter informações, consulte Usar SSH com HDInsight.
Depois de se conectar ao cluster usando o SSH, é possível copiar os blocos de anotações do cluster para o computador local (usando SCP ou WinSCP) como um backup para impedir a perda de quaisquer dados importantes no notebook. Você pode aplicar SSH no túnel no nó de cabeçalho na porta 8001 para acessar o Jupyter sem passar pelo gateway. A partir daí, você pode limpar a saída do bloco de anotações e salvá-lo novamente para minimizar o tamanho dele.
Para evitar que esse erro aconteça no futuro, você deve seguir algumas práticas recomendadas:
- É importante manter um tamanho pequeno de bloco de anotações. Qualquer saída de trabalho no Spark que é enviada de volta ao Jupyter é mantida no bloco de anotações. De modo geral, uma melhor prática com o Jupyter é evitar executar
.collect()
em RDDs ou em dataframes grandes. Em vez disso, se você quiser inspecionar o conteúdo de um RDD, considere a execução de.take()
ou.sample()
para que sua saída não fique muito grande. - Além disso, quando você salvar um bloco de anotações, limpe todas as células de saída para reduzir o tamanho.
A inicialização inicial do notebook demora mais do que o esperado
A primeira instrução de código no Jupyter Notebook usando magic do Spark pode demorar mais de um minuto.
Explicação:
Isso acontece quando a primeira célula de código é executada. Em segundo plano, isso inicia a configuração de sessão e os contextos de Spark, SQL e Hive são definidos. Depois desses contextos são definidos, a primeira instrução é executada e isso dá a impressão de que a instrução levou muito tempo para ser concluída.
Tempo limite do Jupyter Notebook na criação da sessão
Quando o cluster do Spark está sem recursos, os kernels do Spark e do PySpark no Jupyter Notebook atingem o tempo limite ao tentar criar a sessão.
Atenuações:
Libere alguns recursos do cluster Spark:
- Pare outros notebooks do Spark no menu Fechar e Parar ou clicando em Desligar no gerenciador de notebook.
- Interrompendo outros aplicativos Spark do YARN.
Reinicie o notebook que você está tentando iniciar. Recursos suficientes devem estar disponíveis para você criar uma sessão agora.
Confira também
Cenários
- Apache Spark com BI: execute análise de dados interativa usando o Spark no HDInsight com ferramentas de BI
- Apache Spark com Machine Learning: use o Spark no HDInsight para analisar a temperatura do edifício usando dados de HVAC
- Apache Spark com Machine Learning: use o Spark no HDInsight para prever os resultados da inspeção de alimentos
- Análise de log do site usando o Apache Spark no HDInsight
Criar e executar aplicativos
- Criar um aplicativo autônomo usando Scala
- Execute trabalhos remotamente em um cluster do Apache Spark usando o Apache Livy
Ferramentas e extensões
- Use o Plug-in de Ferramentas do HDInsight para IntelliJ IDEA para criar e enviar aplicativos Spark Scala
- Use o Plugin do HDInsight Tools para o IntelliJ IDEA para depurar os aplicativos do Apache Spark remotamente
- Use os blocos de anotações do Apache Zeppelin com um cluster do Apache Spark no HDInsight
- Kernels disponíveis para o Jupyter Notebook no cluster do Apache Spark para HDInsight
- Usar pacotes externos com Jupyter Notebooks
- Instalar o Jupyter em seu computador e conectar-se a um cluster Spark do HDInsight