Quer saber como o Hadoop realmente armazena e processa grandes quantidades de dados?
Neste artigo, estudaremos como o Hadoop funciona internamente. Veremos como o Hadoop armazena e processa grandes conjuntos de dados. O artigo explica em detalhes sobre o funcionamento do Hadoop. O artigo primeiro fornece uma breve introdução ao Hadoop.
Em seguida, veremos os componentes principais do Hadoop e os Daemons em execução no cluster do Hadoop. O artigo explica o funcionamento do Hadoop cobrindo todos os seus componentes principais, como HDFS, MapReduce e YARN.
Então, vamos primeiro ver a breve introdução ao Hadoop.
Introdução ao Hadoop
Com o aumento do Big Data, a Apache Software Foundation em 2008 desenvolveu uma estrutura de código aberto conhecida como Apache Hadoop, que é uma solução para todos os problemas de big data.
Apache Hadoop é uma estrutura que pode armazenar e processar grandes quantidades de dados não estruturados que variam em tamanho de terabytes a petabytes. É um sistema altamente tolerante a falhas e altamente disponível.
O Hadoop armazena uma grande quantidade de dados de maneira distribuída no HDFS. O Hadoop MapReduce é a unidade de processamento no Hadoop, que processa os dados em paralelo.
O Hadoop YARN é outro componente central da estrutura do Hadoop, responsável por gerenciar recursos entre aplicativos em execução no cluster e agendar a tarefa.
Antes de estudar como o Hadoop funciona internamente, vamos primeiro ver os principais componentes e daemons do Hadoop.
Componentes e Daemons do Hadoop
O Hadoop consiste em três componentes principais que são HDFS, MapReduce e YARN.
1. Hadoop HDFS
É a camada de armazenamento do Hadoop. O Hadoop Distributed File System armazena dados em vários nós em um cluster. Ele divide os dados em blocos e os armazena em diferentes nós. O tamanho do bloco é 128 MB por padrão . Podemos configurar o tamanho do bloco de acordo com nossos requisitos.
2. Hadoop MapReduce
É a camada de processamento no Hadoop. O Hadoop MapReduce processa os dados armazenados no Hadoop HDFS em paralelo em vários nós do cluster. Ele divide a tarefa enviada pelo usuário na tarefa independente e as processa como subtarefas no hardware comum.
3. FIO do Hadoop
É a camada de gerenciamento de recursos e processos do Hadoop. O YARN é responsável por compartilhar recursos entre os aplicativos em execução no cluster e agendar a tarefa no cluster.
Esses são os três componentes principais do Hadoop.
Daemons em execução no cluster Hadoop
Existem alguns Daemons que são executados no cluster Hadoop. Daemons são o processo leve que é executado em segundo plano.
Alguns Daemons são executados no nó Mestre e outros no nó Escravo. Vamos agora estudar os Hadoop Daemons.
Os principais Hadoop Daemon são:
1. Demônios Mestres
- NomeNode: É o mestre Daemon no Hadoop HDFS. Ele mantém o namespace do sistema de arquivos. Ele armazena metadados sobre cada bloco dos arquivos.
- Gerente de Recursos: É o daemon mestre do YARN. Ele arbitra recursos entre todos os aplicativos em execução no cluster.
2. Daemons Escravos
- DataNode: DataNode é o daemon escravo do Hadoop HDFS. Ele roda em máquinas escravas. Ele armazena dados ou blocos reais.
- NodeManager: É o daemon escravo do YARN. Ele cuida de todos os nós de computação individuais no cluster.
Como o Hadoop funciona?
O Hadoop armazena e processa os dados de maneira distribuída em todo o cluster de hardware comum. Para armazenar e processar quaisquer dados, o cliente envia os dados e o programa para o cluster Hadoop.
O Hadoop HDFS armazena os dados, o MapReduce processa os dados armazenados no HDFS e o YARN divide as tarefas e atribui recursos.
Vejamos agora esses componentes em detalhes.
1. HDFS
Os dados no Hadoop são armazenados no Hadoop Distributed File System. Há dois daemons em execução no Hadoop HDFS que são NameNode e DataNode.
a. NameNode
NameNode é o daemon mestre no HDFS. Ele é executado nos nós mestres. Ele mantém o namespace do sistema de arquivos. NameNode não armazena os dados reais. Ele armazena os metadados, como informações sobre blocos de arquivos, permissão de arquivos, locais de blocos, etc.
NameNode gerencia o DataNode e fornece instruções a eles. NameNode recebe uma pulsação do DataNodes a cada 3 segundos, o que especifica que o DataNode está ativo.
b. DataNode
DataNode é o daemon escravo no HDFS. DataNodes são os nós escravos que armazenam os dados de negócios reais. Eles são responsáveis por atender as solicitações de leitura/gravação do cliente com base nas instruções do NameNode. Os DataNodes enviam mensagens de pulsação ao NameNode para garantir que eles estejam ativos.
c. NomeNode Secundário
É outro daemon no Hadoop HDFS. É o nó auxiliar para o NameNode primário. O NameNode secundário baixa os logs de edição e o arquivo Fsimage do NameNode primário e aplica periodicamente os logs de edição ao Fsimage .
Em seguida, ele envia de volta o arquivo Fsimage atualizado para o NameNode. Portanto, se o NameNode primário falhar, o último Fsimage salvo no NameNode secundário será usado para recuperar os metadados do sistema de arquivos.
Sempre que o cliente deseja ler ou gravar dados no Hadoop HDFS, ele primeiro interage com o NameNode. NameNode primeiro verifica os privilégios do cliente e, se o cliente tiver privilégios suficientes, o NameNode fornecerá o endereço dos DataNodes de onde o cliente pode ler ou gravar dados.
O arquivo do cliente no HDFS é dividido em blocos. O tamanho do bloco é 128 MB por padrão. DataNode armazena os blocos de arquivos. Para fornecer tolerância a falhas, o HDFS cria réplicas de blocos dependendo do fator de replicação.
Por padrão, o fator de replicação é 3, o que significa que 3 cópias de um bloco são armazenadas no HDFS. O HDFS armazena réplicas do bloco em diferentes DataNodes seguindo o algoritmo Rack Awareness.
Durante a leitura do arquivo, se algum DataNode ficar inativo, o NameNode fornece o endereço de outro DataNode contendo uma réplica do bloco de onde o cliente pode ler seus dados sem qualquer tempo de inatividade.
2. MapReduce
MapReduce é a camada de processamento no Hadoop. Ele processa os dados em paralelo em várias máquinas no cluster. Ele funciona dividindo a tarefa em subtarefas independentes e as executa em paralelo em vários DataNodes.
MapReduce processa os dados em duas fases, ou seja, a fase Map e a fase de redução . A entrada e a saída de ambas as fases são os pares chave e valor. O tipo de chave, pares de valores é especificado pelo programador através da classe InputFormat . Por padrão, o formato de entrada de texto é usado.
O programador especifica as duas funções, ou seja, função de mapa e a função reduzir . Na função map, o programador escreve a lógica de negócios para processar os dados.
Na função Reduce, o programador escreve a lógica para resumir e agregar a saída intermediária da função map e gera a saída.
Funcionamento do Hadoop MapReduce
Sempre que o cliente deseja realizar qualquer processamento em seus dados no cluster do Hadoop, ele primeiro armazena os dados no Hadoop HDFS e, em seguida, grava o programa MapReduce para processar os dados. O Hadoop MapReduce funciona da seguinte forma:
1. O Hadoop divide o trabalho em tarefas de dois tipos, ou seja, mapear tarefas e reduzir tarefas. O YARN agendou essas tarefas (que veremos mais adiante neste artigo). Essas tarefas são executadas em diferentes DataNodes.
2. A entrada para o trabalho MapReduce é dividida em partes de tamanho fixo chamadas divisões de entrada.
3. Uma tarefa de mapa que executa uma função de mapa definida pelo usuário para cada registro na divisão de entrada é criada para cada divisão de entrada. Essas tarefas de mapa são executadas nos DataNodes onde residem os dados de entrada.
4. A saída da tarefa de mapa é uma saída intermediária e é gravada no disco local.
5. As saídas intermediárias das tarefas do mapa são embaralhadas e classificadas e são então passadas para o redutor.
6. Para uma única tarefa de redução, a saída intermediária classificada do mapeador é passada para o nó em que a tarefa de redução está sendo executada. Essas saídas são então mescladas e passadas para a função de redução definida pelo usuário.
7. A função reduce resume a saída do mapeador e gera a saída. A saída do redutor é armazenada no HDFS.
8. Para várias funções de redução, o usuário especifica o número de redutores. Quando há várias tarefas de redução, as tarefas de mapa particionam sua saída, criando uma partição para cada tarefa de redução.
FIO
YARN é a camada de gerenciamento de recursos no Hadoop. Ele agenda a tarefa no cluster do Hadoop e atribui recursos aos aplicativos em execução no cluster. Ele é responsável por fornecer os recursos computacionais necessários para a execução das aplicações.
Há dois daemons do YARN em execução no cluster do Hadoop para servir os serviços principais do YARN. Eles estão:
a. Gestor de recursos
É o daemon mestre do YARN. Ele é executado no nó mestre por cluster para gerenciar os recursos no cluster. O ResourceManager tem dois componentes principais que são Scheduler e ApplicationManager.
O planejador aloca recursos para vários aplicativos em execução no cluster.
ApplicationManager assume o trabalho enviado pelo cliente e negocia o contêiner para executar o ApplicationMaster específico do aplicativo e reinicia o contêiner ApplicationMaster em caso de falha.
b. Gerenciador de nós
NodeManager são os daemons escravos do YARN. Ele é executado em todos os nós escravos no cluster. Ele é responsável por lançar e gerenciar os contêineres nos nós. Os contêineres executam os processos específicos do aplicativo com um conjunto restrito de recursos, como memória, CPU e assim por diante.
Quando o NodeManager é iniciado, ele se anuncia ao ResourceManager. Ele envia periodicamente uma pulsação para o ResourceManager. Oferece recursos para o cluster.
c. Mestre de aplicativos
O ApplicationMaster por aplicativo negocia os agendadores de formulários de contêineres, rastreia o status do contêiner e monitora o progresso do contêiner.
Um cliente envia um aplicativo para o ResourceManager. O ResourceManager entra em contato com o NodeManager que inicia e monitora os contêineres de computação nos nós do cluster. O contêiner executa o ApplicationMaster.
A tarefa MapReduce e o ApplicationMaster são executados em contêineres que são agendados pelo ResourceManager e gerenciados pelos NodeManagers.
Vamos agora resumir como o Hadoop funciona internamente:
1. O HDFS divide os dados de entrada do cliente em blocos de 128 MB. Dependendo do fator de replicação, são criadas réplicas de blocos. Os blocos e suas réplicas são armazenados em diferentes DataNodes.
2. Uma vez que todos os blocos são armazenados em HDFS DataNodes, o usuário pode processar os dados.
3. Para processar os dados, o cliente envia o programa MapReduce para o Hadoop.
4. O ResourceManager então agendou o programa enviado pelo usuário em nós individuais no cluster.
5. Quando todos os nós concluem o processamento, a saída é gravada de volta no HDFS.
Resumo
Neste artigo, estudamos todo o funcionamento do Hadoop. Espero que, depois de ler este artigo, você entenda como o Hadoop armazena e processa grandes quantidades de dados.
O artigo também explica como os recursos são agendados entre os aplicativos nos recursos. O artigo descreve os principais daemons em execução no cluster do Hadoop e os principais componentes do Hadoop.
Espero que você entenda como o Hadoop funciona internamente.
Continue aprendendo!!