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?
O cache do usuário do meu trabalho no Apache Hadoop ou Apache Spark está ocupando todo o espaço em disco na partição. O trabalho do Amazon EMR está falhando ou o serviço HDFS NameNode está no modo seguro.
Descrição resumida
Em um cluster do Amazon EMR, o YARN está configurado para permitir que os trabalhos gravem dados de cache em /mnt/yarn/usercache. Quando você processa uma grande quantidade de dados ou executa vários trabalhos simultâneos, o sistema de arquivos /mnt pode ficar cheio. Isso faz com que o gerenciador de nós falhe em alguns nós e o trabalho congele ou falhe.
Para resolver esse problema, use um dos seguintes métodos:
- Se você não tiver trabalhos de longa duração ou de streaming, ajuste as configurações de retenção de cache do usuário para o YARN NodeManager.
- Se você tiver trabalhos de longa duração ou de streaming, aumente os volumes do Amazon Elastic Block Store (Amazon EBS).
Resolução
Ajuste as configurações de retenção de cache do usuário para o NodeManager
Os seguintes atributos definem as configurações de limpeza do cache:
- yarn.nodemanager.localizer.cache.cleanup.interval-ms: esse é o intervalo de limpeza do cache. O valor padrão é 600.000 milissegundos. Após esse intervalo, quando o tamanho do cache exceder o valor definido em yarn.nodemanager.localizer.cache.target-size-mb, os arquivos que os contêineres em execução não usam serão excluídos.
- yarn.nodemanager.localizer.cache.target-size-mb: esse é o espaço máximo em disco permitido para o cache. O valor padrão é 10.240 MB. Quando o tamanho do disco de cache excede esse valor, os arquivos que não estão em uso pelos contêineres em execução são excluídos no intervalo definido em yarn.nodemanager.localizer.cache.cleanup.interval-ms.
Para definir o intervalo de limpeza e o tamanho máximo do espaço em disco no cluster, conclua as seguintes etapas:
-
Abra /etc/hadoop/conf/yarn-site.xml em cada núcleo e nó de tarefa.
-
Reduza os valores de yarn.nodemanager.localizer.cache.cleanup.interval e yarn.nodemanager.localizer.cache.target-size-mb para cada nó principal e de tarefa.
Por exemplo:
sudo vim /etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.localizer.cache.cleanup.interval-ms 400000 yarn.nodemanager.localizer.cache.target-size-mb 5120
-
Execute os seguintes comandos em cada nó principal e de tarefa para reiniciar o NodeManager:
EMR 5.29 e versões anterioressudo stop hadoop-yarn-nodemanager sudo start hadoop-yarn-nodemanager
EMR 5.30.0 e versões posteriores
sudo stop hadoop-yarn-nodemanager.service sudo systemctl start hadoop-yarn-nodemanager.service
-
Para definir o intervalo de limpeza e o tamanho máximo do espaço em disco em um novo cluster, adicione um objeto de configuração semelhante ao seguinte ao iniciar o cluster:
[ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.localizer.cache.cleanup.interval-ms": "400000", "yarn.nodemanager.localizer.cache.target-size-mb": "5120" } } ]
Lembre-se de que o serviço de exclusão não é concluído nos contêineres em execução. Isso significa que, mesmo depois de ajustar as configurações de retenção de cache do usuário, os dados ainda podem estar sendo transferidos para o seguinte caminho e preenchendo o sistema de arquivos:
{'yarn.nodemanager.local-dirs'}/usercache/user/appcache/application_id ,
Aumente a escala verticalmente dos volumes do EBS nos nós do cluster do EMR
Para aumentar a escala verticalmente do armazenamento em um cluster do EMR em execução, consulte Aumentar a escala verticalmente do armazenamento de forma dinâmica em clusters do Amazon EMR.
Para aumentar a escala verticalmente do armazenamento em um novo cluster do EMR, especifique um tamanho de volume maior ao criar o cluster do EMR. Você também pode fazer isso ao adicionar nós a um cluster existente:
- Amazon EMR versões 5.22.0 e posteriores: a quantidade padrão de armazenamento do EBS aumenta com base no tamanho da instância do Amazon Elastic Compute Cloud (Amazon EC2). Para obter mais informações sobre a quantidade de armazenamento e o número de volumes alocados para cada tipo de instância, consulte Armazenamento padrão do Amazon EBS para instâncias.
- Amazon EMR versões 5.21 e posteriores: o tamanho padrão do volume do EBS é 32 GB. 27 GB são reservados para a ** partição /mnt. ** O HDFS, o YARN, o cache do usuário e todas as aplicações usam a partição /mnt. Aumente o tamanho do seu volume do EBS conforme necessário. Você também pode especificar vários volumes do EBS montados como /mnt1 ou /mnt2.
Para trabalhos de streaming do Spark, você também pode executar um RDD.unpersist() depois de não precisar mais dos dados. Ou chame explicitamente System.gc() em Scala ou sc._jvm.System.gc() em Python para iniciar a coleta de resíduos da JVM e remover os arquivos shuffle intermediários.
Conteúdo relevante
- feita há 25 diaslg...
- feita há 11 diaslg...
- Resposta aceitafeita há 9 diaslg...
- feita há 11 diaslg...
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 anos