Etapa 6: revisar as configurações - Amazon EMR

Etapa 6: revisar as configurações

Definições de configuração especificam detalhes sobre como um cluster é executado, como quantas vezes uma tarefa deve ser repetida e quanta memória está disponível para classificação. Quando você executa um cluster usando o Amazon EMR, existem configurações específicas do Amazon EMR, além das definições de configuração padrão do Hadoop. As definições de configuração são armazenadas no nó principal do cluster. Você pode verificar as definições de configuração para garantir que o cluster tenha os recursos necessários para um funcionamento eficiente.

O Amazon EMR define definições de configuração do Hadoop padrão que ele utiliza para iniciar um cluster. Os valores se baseiam na AMI e no tipo de instância que você especifica para o cluster. Você pode modificar os valores padrão das definições de configuração usando uma ação de bootstrap ou especificando novos valores em parâmetros de execução de trabalho. Para obter mais informações, consulte Criar ações de bootstrap para instalar softwares adicionais. Para determinar se uma ação de bootstrap alterou as definições de configuração, verifique os logs dessa ação.

O Amazon EMR registra em log as configurações do Hadoop usadas para executar cada trabalho. Os dados de log são armazenados em um arquivo job_job-id_conf.xml no diretório /mnt/var/log/hadoop/history/ do nó principal, em que job-id é substituído pelo identificador do trabalho. Se você tiver habilitado o arquivamento em log, esses dados serão copiados para o Amazon S3 na pasta logs/date/jobflow-id/jobs, em que date é a data em que o trabalho foi executado, e jobflow-id é o identificador do cluster.

As seguintes definições de configuração de trabalhos do Hadoop são especialmente úteis para investigar problemas de desempenho. Para obter mais informações sobre as definições de configuração do Hadoop e como elas afetam o comportamento do Hadoop, acesse http://hadoop.apache.org/docs/.

Atenção
  1. Definir dfs.replication como 1 em clusters com menos de quatro nós poderá causar perda de dados do HDFS se um único nó ficar inativo. É recomendável usar um cluster com pelo menos quatro nós centrais para workloads de produção.

  2. O Amazon EMR não permitirá que os clusters escalem os nós principais abaixo de dfs.replication. Por exemplo, se dfs.replication = 2, o número mínimo de nós central será 2.

  3. Ao usar o Ajuste de Escala Gerenciado, o Auto Scaling ou optar por redimensionar manualmente o cluster, é recomendável definir dfs.replication como 2 ou mais.

Definição da configuração Descrição
dfs.replication O número de nós HDFS para os quais um único bloco (como o bloco de disco rígido) é copiado a fim de produzir um ambiente semelhante ao RAID. Determina o número de nós HDFS que contêm uma cópia do bloco.
io.sort.mb Total de memória disponível para classificação. Esse valor deve ser 10x io.sort.factor. Essa configuração também pode ser usada para calcular o total de memória usado pelo nó de tarefas, contando io.sort.mb multiplicado por mapred.tasktracker.ap.tasks.maximum.
io.sort.spill.percent Usado durante a classificação, no momento em que o disco começa a ser usado porque a memória de classificação alocada está ficando cheia.
mapred.child.java.opts Suspenso. Em vez disso, use mapred.map.child.java.opts e mapred.reduce.child.java.opts. As opções Java que TaskTracker usa ao iniciar uma JVM para uma tarefa para execução interna. Um parâmetro comum é “-Xmx” para configurar o tamanho máximo da memória.
mapred.map.child.java.opts As opções Java que TaskTracker usa ao iniciar uma JVM para uma tarefa map para execução interna. Um parâmetro comum é “-Xmx” para configurar o tamanho máximo do heap de memória.
mapred.map.tasks.speculative.execution Determina se tentativas de tarefas map da mesma tarefa podem ser executadas em paralelo.
mapred.reduce.tasks.speculative.execution Determina se tentativas de tarefas reduce da mesma tarefa podem ser executadas em paralelo.
mapred.map.max.attempts O número máximo de vezes que uma tarefa map pode ser tentada. Se tudo falhar, a tarefa map será marcada como falha.
mapred.reduce.child.java.opts As opções Java que TaskTracker usa ao iniciar uma JVM para uma tarefa reduce para execução interna. Um parâmetro comum é “-Xmx” para configurar o tamanho máximo do heap de memória.
mapred.reduce.max.attempts O número máximo de vezes que uma tarefa reduce pode ser tentada. Se tudo falhar, a tarefa map será marcada como falha.
mapred.reduce.slowstart.completed.maps A quantidade de tarefas map que devem ser concluídas antes que tarefas reduce sejam tentadas. Uma espera insuficiente pode causar erros “Too many fetch-failure” em tentativas.
mapred.reuse.jvm.num.tasks Uma tarefa é executada em uma única JVM. Especifica quantas tarefas podem reutilizar a mesma JVM.
mapred.tasktracker.map.tasks.maximum A quantidade máxima de tarefas que podem ser executadas em paralelo por nó de tarefa durante o mapeamento.
mapred.tasktracker.reduce.tasks.maximum A quantidade máxima de tarefas que podem ser executadas em paralelo por nó de tarefa durante a redução.

Se as suas tarefas de cluster consumirem muita memória, você poderá melhorar o desempenho usando menos tarefas por nó core e reduzindo seu tamanho do heap do rastreador de trabalhos.