Domínio do Gerenciamento de Recursos Ninja

HadoopBeginner
Pratique Agora

Introdução

Na antiga terra do sol nascente, aninhada entre os majestosos picos do Monte Fuji, prosperava uma vila secreta de ninjas. Aqui, a arte do sigilo, da precisão e da engenhosidade era aperfeiçoada à perfeição. Entre as fileiras de elite desta vila, destacava-se Yuki, uma renomada mestre em armamento ninja.

A forja de Yuki era um espetáculo para se ver, um testemunho de sua dedicação e engenhosidade inabaláveis. Do aço mais fino, ela forjava lâminas que podiam cortar o ar com graça sem esforço, shuriken que podiam encontrar seu alvo com precisão cirúrgica e kunai que podiam perfurar até a armadura mais resistente.

No entanto, a verdadeira maestria de Yuki residia não apenas em sua habilidade artesanal, mas também em sua capacidade de gerenciar os recursos da vila. À medida que o clã ninja crescia, a demanda por armas e equipamentos também aumentava, e Yuki se viu encarregada de garantir que cada ninja tivesse acesso às ferramentas de que precisava, quando precisava delas.

Foi nessa busca que Yuki descobriu o poder do Hadoop Resource Manager, uma ferramenta poderosa que lhe permitiria alocar e gerenciar eficientemente os recursos da vila, garantindo que a missão de cada ninja fosse bem-sucedida.

Entendendo o Hadoop Resource Manager

Neste passo, vamos nos aprofundar nos fundamentos do Hadoop Resource Manager e seu papel no ecossistema Hadoop.

Primeiramente, altere o usuário padrão:

su - hadoop

O Hadoop Resource Manager é um componente crucial da arquitetura YARN (Yet Another Resource Negotiator) no Hadoop. Ele é responsável por gerenciar os recursos computacionais do cluster e agendar aplicações nos nós disponíveis.

Para começar, vamos explorar a arquitetura do Resource Manager:

+------------------+
|  Resource Manager|
+------------------+
|  Scheduler       |
|  ApplicationsMaster
|  NodeManager     |
+------------------+

O Resource Manager consiste em três componentes principais:

  1. Scheduler (Agendador): Este componente é responsável por alocar recursos para as diversas aplicações em execução com base em políticas de agendamento predefinidas.
  2. ApplicationsManager (Gerenciador de Aplicações): Este componente é responsável por aceitar submissões de tarefas, negociar o primeiro contêiner para executar o ApplicationMaster e fornecer o serviço para reiniciar o contêiner ApplicationMaster em caso de falha.
  3. NodeManager (Gerenciador de Nós): Este componente é executado em cada nó do cluster e é responsável por lançar e monitorar os contêineres atribuídos pelo Scheduler.

Para entender melhor a funcionalidade do Resource Manager, vamos explorar um exemplo simples.

Submeta uma tarefa MapReduce de exemplo ao cluster:

yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 16 1000000

Verifique o status da tarefa:

yarn application -list

A saída deve ser semelhante a esta:

2024-03-23 22:48:44,206 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):1
                Application-Id     Application-Name     Application-Type       User      Queue              State        Final-State        Progress                        Tracking-URL
application_1711205220447_0001      QuasiMonteCarlo            MAPREDUCE     hadoop    default            RUNNING          UNDEFINED

Neste exemplo, submetemos uma tarefa MapReduce ao cluster usando o comando yarn. O Resource Manager recebe a solicitação da tarefa e atribui os recursos necessários (contêineres) para executar a tarefa. Em seguida, podemos verificar o status da tarefa e visualizar os logs usando os comandos fornecidos.

Configurando o Resource Manager

Neste passo, exploraremos como configurar o Resource Manager para atender às necessidades específicas da nossa vila ninja.

O comportamento do Resource Manager pode ser personalizado por meio de várias propriedades de configuração. Essas propriedades são tipicamente definidas no arquivo yarn-site.xml, localizado no diretório de configuração do Hadoop (/home/hadoop/hadoop/etc/hadoop).

Vamos visualizar o arquivo de configuração 'yarn' e adicionar algumas configurações adicionais para ele:

vim /home/hadoop/hadoop/etc/hadoop/yarn-site.xml

Adicione as configurações:

  <!-- Specify the scheduling policy -->
  <property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
  </property>

  <!-- Configure the maximum number of applications to run concurrently -->
  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>8192</value>
  </property>

  <!-- Configure the minimum and maximum virtual cores per container -->
  <property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>4</value>
  </property>

Neste arquivo de configuração, definimos as seguintes propriedades:

  • yarn.resourcemanager.scheduler.class: Especifica a política de agendamento a ser usada. Neste caso, estamos usando o Fair Scheduler (Agendador Justo), que garante que os recursos sejam alocados de forma justa entre as aplicações.
  • yarn.scheduler.maximum-allocation-mb: Define a quantidade máxima de memória (em megabytes) que pode ser alocada para um único contêiner.
  • yarn.scheduler.minimum-allocation-vcores e yarn.scheduler.maximum-allocation-vcores: Definem o número mínimo e máximo de núcleos virtuais que podem ser alocados para um contêiner, respectivamente.

Para aplicar essas alterações de configuração, precisamos reiniciar os serviços do Hadoop.

Monitorando e Gerenciando Aplicações

Neste passo, aprenderemos como monitorar e gerenciar aplicações em execução no cluster Hadoop usando o Resource Manager.

O Resource Manager fornece uma interface de usuário web (UI) que permite monitorar e gerenciar os recursos do cluster e as aplicações em execução. Para acessar a UI do Resource Manager, abra um navegador web e navegue até http://<nome-do-host-do-resource-manager>:8088.

Na UI do Resource Manager, você verá várias seções que fornecem informações sobre o cluster, nós e aplicações. Aqui estão alguns recursos-chave:

  1. Métricas do Cluster: Esta seção exibe as métricas gerais do cluster, como o total de recursos disponíveis, o número de aplicações em execução e a utilização de recursos.
  2. Node Managers (Gerenciadores de Nós): Esta seção lista todos os NodeManagers ativos no cluster, juntamente com seu status, recursos disponíveis e contêineres em execução.
  3. Running Applications (Aplicações em Execução): Esta seção mostra as aplicações atualmente em execução, seu progresso, uso de recursos e outros detalhes.
  4. Application History (Histórico de Aplicações): Esta seção fornece uma visão histórica das aplicações concluídas, incluindo seus logs e métricas.

Para demonstrar como gerenciar aplicações usando a UI do Resource Manager, vamos submeter uma nova aplicação ao cluster.

## Submit a WordCount job to the cluster
yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /home/hadoop/input /home/hadoop/output

Este script submete uma tarefa WordCount MapReduce ao cluster. Antes de executar o script, certifique-se de criar o diretório de entrada e colocar alguns arquivos de texto nele:

hdfs dfs -mkdir -p /home/hadoop/input
hdfs dfs -put /home/hadoop/hello.txt /home/hadoop/input

Após submeter a tarefa, você pode monitorar seu progresso e gerenciá-la a partir da UI do Resource Manager. Você pode visualizar os logs da tarefa, interromper a tarefa, se necessário, ou verificar o diretório de saída assim que a tarefa for concluída.

Visualize o conteúdo do arquivo de entrada:

hadoop:~/ $ hadoop fs -cat /home/hadoop/input/*                      [22:56:37]
hello labex
hello hadoop
hello spark
hello flink

Visualize o conteúdo do arquivo de saída:

hadoop:~/ $ hadoop fs -cat /home/hadoop/output/*                     [22:57:37]
flink 1
hadoop 1
hello 4
labex 1
spark 1

Resumo

Neste laboratório, exploramos o Hadoop Resource Manager, uma ferramenta poderosa que permite a alocação e o gerenciamento eficientes de recursos em um cluster Hadoop. Mergulhamos na arquitetura do Resource Manager, aprendemos como configurá-lo para atender a necessidades específicas e descobrimos várias técnicas para monitorar e gerenciar aplicações em execução no cluster.

Através da jornada de Yuki, a mestre ferreira ninja, testemunhamos o poder transformador do Resource Manager em garantir que cada ninja tivesse acesso às ferramentas necessárias para missões bem-sucedidas. Assim como Yuki dominou a arte do gerenciamento de recursos, também podemos aproveitar as capacidades do Hadoop Resource Manager para otimizar nossos fluxos de trabalho de processamento de big data.

Este laboratório não apenas proporcionou experiência prática com o Resource Manager, mas também incutiu uma compreensão mais profunda do ecossistema Hadoop e seus componentes versáteis. Ao abraçar os princípios de gerenciamento de recursos e agendamento eficiente, podemos desbloquear novos reinos de proeza no processamento de dados e enfrentar até mesmo os desafios mais formidáveis de big data.