Compartilhar via


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:

  1. SSH no nó principal. Para obter informações, consulte Usar SSH com HDInsight.

  2. 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_*

  3. 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:

  1. Adicione hdiuser ao grupo Hadoop.
  2. Forneça 777 permissões em /var/log/spark após a criação do cluster.
  3. Atualize o local do log spark usando o Ambari para ser um diretório com 777 permissões.
  4. 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.

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:

  1. 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.
  2. 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

Criar e executar aplicativos

Ferramentas e extensões

Gerenciar recursos