À medida que o número de arquivos no cluster do Hadoop Distributed File System (HDFS) aumenta, a memória heap da Java Virtual Machine (JVM) no NameNode e nos DataNodes também deve aumentar. Sem heap suficiente, novas gravações falham. Este tópico explica como calcular o tamanho de heap necessário e aplicar a configuração no console do E-MapReduce (EMR).
Pré-requisitos
Antes de começar, verifique se você tem:
Acesso ao console do EMR com permissão para modifique configurações de serviços do cluster
As contagens atuais de arquivos e blocos de dados na interface web do HDFS — consulte Acessar as UIs web de componentes open source para obter instruções sobre como abrir a interface web do HDFS
Ajustar o tamanho do heap do NameNode
Calcular o tamanho recomendado de heap
Use a seguinte fórmula:
Recommended memory size = (Number of files in millions + Number of data blocks in millions) × 512 MB
Exemplo: Um cluster tem 10 milhões de arquivos. Todos são de pequeno a médio porte (cada um cabe em um único bloco), logo, a contagem de blocos também é de 10 milhões. Tamanho de heap recomendado: (10 + 10) × 512 MB = 10.240 MB.
A tabela a seguir mostra os tamanhos de heap recomendados para quantidades comuns de arquivos, considerando que a maioria caiba em um único bloco.
|
Número de arquivos |
Tamanho de memória recomendado (MB) |
|
10.000.000 |
10.240 |
|
20.000.000 |
20.480 |
|
50.000.000 |
51.200 |
|
100.000.000 |
102.400 |
Aplicar a configuração
O procedimento varia conforme o cluster use ou não alta disponibilidade (HA).
Cluster HA
Faça login no console do EMR.
Localize o cluster desejado e clique em Services na coluna Actions.
Na aba Services, localize o serviço HDFS e clique em Configure.
Na aba Configure, pesquise
hadoop_namenode_heapsize.Defina o valor conforme o cálculo realizado.
Reinicie o NameNode para aplicar a alteração.
Cluster não HA
Faça login no console do EMR.
Localize o cluster desejado e clique em Services na coluna Actions.
Na aba Services, localize o serviço HDFS e clique em Configure.
Na aba Configure, pesquise
hadoop_namenode_heapsizeehadoop_secondary_namenode_heapsize.Defina os valores conforme o cálculo realizado.
Reinicie o NameNode ou o Secondary NameNode para aplicar a alteração.
Ajustar o tamanho do heap do DataNode
Calcular o tamanho recomendado de heap
A demanda de heap em cada DataNode depende da quantidade de réplicas de blocos armazenadas nesse nó, e não do total de arquivos. Use as seguintes fórmulas:
Number of replicas per DataNode = Number of data blocks × 3 / Number of DataNodes
Recommended memory size = Number of replicas per DataNode in millions × 2,048 MB
O valor recomendado já considera a sobrecarga do kernel da JVM e a memória necessária para jobs em horários de pico; portanto, use-o diretamente em condições normais.
Exemplo: Um cluster usa armazenamento triplicado, roda em instâncias do Elastic Compute Service (ecs) da família de big data e tem 6 nós principais. Com 10 milhões de arquivos e 10 milhões de blocos de dados (todos de pequeno a médio porte):
Réplicas por DataNode: 10.000.000 × 3 / 6 = 5.000.000
Tamanho de heap recomendado: 5 × 2.048 MB = 10.240 MB
A tabela abaixo indica os tamanhos de heap recomendados com base no número de réplicas por DataNode, considerando que a maioria dos arquivos caiba em um único bloco.
|
Número de réplicas por DataNode |
Tamanho de memória recomendado (MB) |
|
1.000.000 |
2.048 |
|
2.000.000 |
4.096 |
|
5.000.000 |
10.240 |
Aplicar a configuração
Faça login no console do EMR.
Localize o cluster desejado e clique em Services na coluna Actions.
Na aba Services, localize o serviço HDFS e clique em Configure.
Na aba Configure, pesquise
hadoop_datanode_heapsizena seção Configuration Filter.Defina o valor conforme o cálculo realizado.
Reinicie os DataNodes para aplicar a alteração.