Quero executar trabalhos do Apache Spark em um cluster do Amazon EMR, mas o nó central está quase sem espaço em disco.
Resolução
Determine se você tem nós centrais não íntegros
Quando os nós que têm pelo menos um volume do Amazon Elastic Block Store (Amazon EBS) conectado atingem mais de 90% de utilização do disco, eles são considerados não íntegros. Para determinar quais nós atingiram 90% de utilização do disco, conclua as seguintes etapas:
- Verifique a métrica MRUnhealthyNodes do Amazon CloudWatch. Essa métrica mostra o número de nós não íntegros em um cluster do EMR.
Observação: também é possível criar um Alarme do CloudWatch para monitorar a métrica MRUnhealthyNodes.
- Conecte-se ao nó primário e acesse o log do controlador de instância em /emr/instance-controller/log/instance-controller.log.
- No log do controlador de instância, pesquise instanceJointStatusMap para identificar quais nós não estão íntegros.
Para obter mais informações, consulte a seção Alta utilização do disco devido a um nó não íntegro em Como resolvo um erro “ExecutorLostFailure”: Slave lost” no Spark do Amazon EMR?
- Para determinar se uma montagem tem alta utilização, faça login nos nós principais e execute o seguinte comando:
df -h
Remova arquivos temporários e locais desnecessários da aplicação Spark
Quando você executa tarefas do Spark, as aplicações do Spark criam arquivos locais que ocupam o espaço restante em disco no nó central. Por exemplo, se o comando df -h mostrar que /mnt usa mais de 90% do espaço em disco, verifique quais diretórios ou arquivos têm alta utilização.
Execute o comando a seguir no nó central para ver os dez principais diretórios que estão usando mais espaço em disco:
cd /mnt
sudo du -hsx * | sort -rh | head -10
Se o diretório /mnt/hdfs tiver alta utilização, verifique o uso do Sistema de Arquivos Distribuído do Hadoop (HDFS) e remova todos os arquivos desnecessários, como arquivos de log. Para verificar a utilização do espaço em um diretório específico, execute o seguinte comando:
hdfs dfsadmin -report
hadoop fs -du -s -h /path/to/dir
Observação: substitua /path/to/dir pelo caminho para o diretório para o qual você deseja verificar a utilização do espaço.
Reduza o período de retenção dos logs de eventos do Spark e do contêiner YARN
O diretório /var/log armazena arquivos de log, como registros de eventos do Spark e logs de contêineres do YARN. Para limpar automaticamente os arquivos de log do HDFS, reduza o período de retenção.
Reduza o período de retenção padrão dos arquivos de histórico de trabalhos do Spark
Por padrão, os arquivos de histórico de trabalhos do Spark estão localizados em /var/log/spark/apps. Quando o limpador de histórico do sistema de arquivos é executado, o Spark exclui arquivos do histórico de trabalhos com mais de sete dias.
Para reduzir o período de retenção padrão em um cluster em execução, conclua as seguintes etapas:
- use SSH para se conectar ao nó primário.
- Adicione ou atualize os seguintes valores em /etc/spark/conf/spark-defaults.conf:
------spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 12h
spark.history.fs.cleaner.maxAge 1d
------
A configuração anterior executa o limpador a cada 12 horas. A configuração limpa arquivos com mais de 1 dia. É possível personalizar esse período nos parâmetros spark.history.fs.cleaner.internval e spark.history.fs.cleaner.maxAge.
- Reinicie o Servidor de histórico do Spark.
Para reduzir o período de retenção padrão dos arquivos de histórico de tarefas do Spark ao iniciar o cluster, use a seguinte configuração:
{
"Classification": "spark-defaults",
"Properties": {
"spark.history.fs.cleaner.enabled": "true",
"spark.history.fs.cleaner.interval": "12h",
"spark.history.fs.cleaner.maxAge": "1d"
}
}
É possível personalizar o período nos parâmetros spark.history.fs.cleaner.interval e spark.history.fs.cleaner.maxAge.
Para obter mais informações sobre esses parâmetros, consulte Monitoramento e instrumentação no site do Apache Spark.
Reduza o período de retenção padrão dos logs de contêiner do YARN
Os logs da aplicação Spark, são os logs de contêiner do YARN dos trabalhos do Spark, localizados em /var/log/hadoop-yarn/apps no nó central. O Spark move esses logs para o HDFS quando a aplicação termina de ser executado. Por padrão, o YARN mantém logs de aplicações no HDFS por 48 horas. Para reduzir o período de retenção, conclua as seguintes etapas:
- Use o SSH para se conectar aos nós primário, central ou de tarefas.
- Abra o arquivo /etc/hadoop/conf/yarn-site.xml em cada nó do seu cluster do Amazon EMR (nós primário, central e de tarefa).
- Reduza o valor da propriedade yarn.log-aggregation.retain-seconds em todos os nós.
- Reinicie o daemon ResourceManager.
Também é possível reconfigurar o cluster para reduzir o período de retenção.
Reduza o uso de /mnt/yarn
Quando o uso do disco no diretório /mnt/yarn for alto, ajuste a retenção do cache do usuário ou escale os volumes do EBS no nó. Para obter mais informações, consulte Como faço para interromper o cache de usuário de um trabalho do Hadoop ou do Spark para que o cache não use muito espaço em disco no Amazon EMR?
Redimensione o cluster ou ajuste a escala do Amazon EMR
Para evitar problemas de espaço no HDFS, escale o número de seus nós centrais. E, se diretórios diferentes dos diretórios do HDFS ficarem cheios, escale o número de seus nós centrais ou de tarefas. Para obter mais informações, consulte Use o ajuste de escala de cluster do Amazon EMR para se ajustar às mudanças nos workloads.
Também é possível estender os volumes do EBS em nós existentes ou usar um script de escalabilidade dinâmica. Para obter mais informações, consulte Como soluciono falhas de estágio “no space left on device” em uma tarefa do Apache Spark no Amazon EMR?
Informações relacionadas
Configurar o hardware e a rede de clusters do Amazon EMR
Configuração do HDFS
Trabalhando com sistemas de armazenamento e arquivos com o Amazon EMR