Partilhar via


Problemas conhecidos do cluster do Apache Spark no HDInsight

Este documento controla todos os problemas conhecidos da pré-visualização pública do HDInsight Spark.

Apache Livy vaza sessão interativa

Quando o Apache Livy é reiniciado (a partir do Apache Ambari ou devido ao reinício da máquina virtual do nó principal 0) com uma sessão interativa ainda viva, é divulgada uma sessão de trabalho interativa. Como resultado, as novas tarefas podem ficar bloqueadas no estado Aceite.

Mitigação:

Utilize o seguinte procedimento para contornar o problema:

  1. Ssh no nó principal. Para obter informações, veja Use SSH with HDInsight (Utilizar SSH com o HDInsight).

  2. Execute o seguinte comando para encontrar os IDs da aplicação das tarefas interativas iniciadas através do Livy.

    yarn application –list
    

    Os nomes de tarefas predefinidos serão Livy se os trabalhos tiverem sido iniciados com uma sessão interativa do Livy sem nomes explícitos especificados. Para a sessão do Livy iniciada por Jupyter Notebook, o nome da tarefa começa com remotesparkmagics_*.

  3. Execute o seguinte comando para eliminar essas tarefas.

    yarn application –kill <Application ID>
    

As novas tarefas começam a ser executadas.

O Servidor do Histórico do Spark não foi iniciado

O Spark History Server não é iniciado automaticamente após a criação de um cluster.

Mitigação:

Inicie manualmente o servidor de histórico a partir do Ambari.

Problema de permissão no diretório de registos do Spark

O hdiuser obtém o seguinte erro ao submeter uma tarefa com spark-submit:

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

E não foi escrito nenhum registo de controlador.

Mitigação:

  1. Adicione hdiuser ao grupo Hadoop.
  2. Forneça permissões 777 em /var/log/spark após a criação do cluster.
  3. Atualize a localização do registo do Spark com o Ambari para ser um diretório com 777 permissões.
  4. Execute spark-submit como sudo.

Spark-Phoenix conector não é suportado

Os clusters do HDInsight Spark não suportam o conector Spark-Phoenix.

Mitigação:

Em vez disso, tem de utilizar o conector Spark-HBase. Para obter as instruções, veja Como utilizar Spark-HBase conector.

Seguem-se alguns problemas conhecidos relacionados com o Jupyter Notebook.

Blocos de notas com carateres não ASCII em nomes de ficheiro

Não utilize carateres não ASCII em nomes de ficheiro Jupyter Notebook. Se tentar carregar um ficheiro através da IU do Jupyter, que tem um nome de ficheiro não ASCII, este falha sem qualquer mensagem de erro. O Jupyter não lhe permite carregar o ficheiro, mas também não gera um erro visível.

Erro ao carregar blocos de notas de tamanhos maiores

Poderá ver um erro Error loading notebook ao carregar blocos de notas com um tamanho maior.

Mitigação:

Se receber este erro, não significa que os seus dados estão danificados ou perdidos. Os blocos de notas ainda estão no disco no /var/lib/jupytere pode aceder ao SSH no cluster para aceder aos mesmos. Para obter informações, veja Use SSH with HDInsight (Utilizar SSH com o HDInsight).

Depois de se ligar ao cluster através de SSH, pode copiar os blocos de notas do cluster para o seu computador local (com SCP ou WinSCP) como uma cópia de segurança para evitar a perda de quaisquer dados importantes no bloco de notas. Em seguida, pode aceder ao túnel SSH no nó principal na porta 8001 para aceder ao Jupyter sem passar pelo gateway. A partir daí, pode limpar a saída do seu bloco de notas e guardá-la novamente para minimizar o tamanho do bloco de notas.

Para evitar que este erro aconteça no futuro, tem de seguir algumas das melhores práticas:

  • É importante manter o tamanho do bloco de notas pequeno. Qualquer saída das tarefas do Spark que é enviada de volta para o Jupyter é mantida no bloco de notas. É uma melhor prática com o Jupyter, em geral, evitar a execução .collect() em RDDs ou dataframes grandes; em vez disso, se quiser espreitar os conteúdos de um RDD, considere executar .take() ou .sample() para que a saída não fique muito grande.
  • Além disso, quando guarda um bloco de notas, desmarque todas as células de saída para reduzir o tamanho.

O arranque inicial do bloco de notas demora mais tempo do que o esperado

A primeira instrução de código no Jupyter Notebook utilizar a magia do Spark pode demorar mais de um minuto.

Explicação:

Isto acontece porque quando a primeira célula de código é executada. Em segundo plano, isto inicia a configuração da sessão e os contextos do Spark, SQL e Hive estão definidos. Depois de definir estes contextos, a primeira instrução é executada e isto dá a impressão de que a instrução demorou muito tempo a ser concluída.

Jupyter Notebook tempo limite na criação da sessão

Quando o cluster do Spark está sem recursos, os kernels do Spark e do PySpark no Jupyter Notebook exceder o limite de tempo ao tentar criar a sessão.

Mitigações:

  1. Liberte alguns recursos no cluster do Spark ao:

    • Parar outros blocos de notas do Spark ao aceder ao menu Fechar e Parar ou clicar em Encerrar no explorador de blocos de notas.
    • A parar outras aplicações spark do YARN.
  2. Reinicie o bloco de notas que estava a tentar iniciar. Devem estar disponíveis recursos suficientes para criar uma sessão agora.

Ver também

Cenários

Criar e executar aplicações

Ferramentas e extensões

Gerir recursos