Uma breve introdução do Hadoop HDFS — Hadoop Distributed File System [1|2]

Augusto Oeiras
6 min readAug 26, 2020

--

Porque eu devo conhecer o Apache Hadoop em pleno 2020, vou mostrar em duas seções uma breve introdução sobre este maravilhoso ecossistema.

Bom, resolvi trazer esse conteúdo por três motivos:
1- Existe muita leviandade sobre o entendimento e aplicabilidade do Hadoop HDFS, ou por desconhecimento mesmo ou apenas simplesmente nunca ter usado e apenas viver do “ouvi falar”.

2- Nunca ter tentado utilizar simplesmente porque não é trivial sua utilização (e não é fácil mesmo).

3- Que convenhamos quase não tem material assim em pt-br, neh!

Vamos começar com uma breve introdução do que é o Apache Hadoop.

Um pouco mais sobre o Hadoop

O Apache Hadoop é um framework open source, escalável e tolerante a falhas escrito em Java. Ele processa eficientemente grandes volumes de dados em um cluster de hardware commodity (baixo custo) . O Hadoop não é apenas um sistema de armazenamento, mas também uma plataforma para armazenamento de dados e processamento de dados.

O Hadoop é uma ferramenta de código aberto da ASF-Apache Software Foundation. Um projeto de código aberto significa que ele está disponível gratuitamente e podemos até mesmo alterar seu código — fonte de acordo com os requisitos. Se determinada funcionalidade não atender a sua necessidade, você poderá alterá-la de acordo com sua necessidade. A maior parte do código do Hadoop foi escrita pelo Yahoo, IBM, Facebook e Cloudera.

Ele fornece uma estrutura eficiente para executar tarefas em vários nós de clusters. Cluster significa um grupo de máquinas conectada s via LAN. O Apache Hadoop fornece processamento paralelo de dados enquanto trabalha em várias máquinas simultaneamente.

A linguagem de programação básica do Hadoop é Java, mas isso não significa que você pode codificar apenas em Java. Você pode codificar em C, C ++, Perl, Python, Ruby, etc. Você pode codificar a estrutura do Hadoop em qualquer linguagem, mas será melhor codificar em Java, já que você terá um controle de nível mais baixo do código.

O Hadoop pode ser configurado em uma única máquina (modo pseudo-distribuído), mas mostra seu poder real com um cluster de máquinas. Podemos escalá-lo para milhares de nós em tempo real, sem nenhum tempo de inatividade. O Hadoop consiste em três partes principais:

Hadoop Distributed File System (HDFS)- É a camada de armazenamento do Hadoop.

Map-Reduce- É a camada de processamento de dados do Hadoop.

YARN- É a camada de gerenciamento de recursos do Hadoop.

O Hadoop funciona com a arquitetura Primary-Secondary (Primario-Secundario). Existe um nó primario e existem nós secundários onde n pode ser mais de 1000 por exemplo.

O Primario gerencia, mantém e monitora os secundários, enquanto os secundários são os nós reais que fazem o trabalho. Na arquitetura do Hadoop, o Primario deve ser implementado em um bom hardware, pois ele é a peça central do cluster Hadoop.

O Primario armazena os metadados (dados sobre dados) enquanto os secundários são os nós que armazenam os dados. O cliente (aplicação cliente) se conecta ao nó primario para executar qualquer tarefa.

Agora, vamos discutir cada um deles.

Componentes do Apache Hadoop.

HDFS

O Hadoop HDFS ou o Hadoop Distributed File System é um sistema de arquivos distribuído que fornece armazenamento no Hadoop de maneira distribuída.

No nó principal da Arquitetura Hadoop, um daemon chamado namenode é executado para o HDFS. Em todos os secundários, um daemon chamado datanode é executado para o HDFS. Portanto, os secundários também são chamados de datanodes.

O Namenode armazena meta dados e gerencia os datanodes. Por outro lado, os Datanodes armazenam os dados e executam as tarefas.

Arquitetura base do Apache Hadoop

O HDFS é um sistema de arquivos altamente tolerante a falhas, distribuído,confiável e escalável para armazenamento de dados.

O HDFS foi desenvolvido para lidar com grandes volumes de dados e pode ser usado com arquivos de tamanho no intervalo de GBs a TBs. Um arquivo é dividido em blocos (padrão 128 MB) e armazenado de forma distribuída em várias máquinas. Esses blocos se replicam de acordo com o fator de replicação. Após a replicação, os blocos são armazenados em diferentes nós.

Logo , se uma das máquinas do cluster onde está uma das 3 cópias do bloco falhar, ainda teremos duas cópias daquele bloco.

Considerando um arquivo de 640 MB, ele será dividido em 5 blocos de 128 MB cada (se usarmos o valor padrão).

MapReduce

O Hadoop MapReduce é um modelo de programação.

Ele foi projetado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes.

O MapReduce move a computação para perto dos dados (ao invés de mover os dados para perto da computação, como em arquiteturas de Data Warehouse por exemplo).

Ele faz isso, pois o movimento de um enorme volume de dados será muito caro e demorado . Ele permite escalabilidade massiva em centenas ou milhares de servidores em um cluster Hadoop.

Algoritmo MapReduce

Portanto, o Hadoop MapReduce é uma estrutura para processamento distribuído de grandes volumes de dados configurados em um cluster de computadores . Como os dados são armazenados de maneira distribuída no HDFS, o MapReduce permite realizar o Map–Reduce para realizar o processamento paralelo.

YARN

YARN- Yet Another Resource Negotiator- é a camada de gerenciamento de recursos do Hadoop. No cluster de vários nós, torna-se muito complexo gerenciar/alocar/liberar os recursos (CPU, memória, disco). O Hadoop Yarn gerencia os recursos com bastante eficiência.

Arquitetura do YARN

No nó principal, o daemon do Resource Manager é executado para o YARN e, em seguida, para todos os nós secundários, o daemon do NodeManager é executado. Uma alternativa ao YARN é o Apache Mesos.

Como o Hadoop funciona?

  1. A aplicação cliente envia os dados para o Hadoop, que então divide os dados em blocos de tamanho 128 Mb (por padrão) . Em seguida, os dados são enviados pelo HDFS para diferentes nós no cluster.
  2. Depois que todos os blocos do arquivos são armazenados nos datanodes, um usuário pode processar os dados.
  3. Quando um job de processamento é disparado com o MapReduce (ou Apache Spark), o nó Primario agenda o job (enviado pelo usuário) em nós individuais.
  4. Depois que todos os nós processarem os dados, a saída será gravada de volta no HDFS. O daemon Namenode armazena os metadados enquanto os daemons datanode armazenam os dados reais.

Os dados são divididos em pequenos pedaços chamados de blocos e esses blocos são armazenados de forma distribuída em nós diferentes no cluster. Cada bloco é replicado de acordo com o fator de replicação (por padrão, 3).

Para processar os dados, o cliente precisa enviar o algoritmo para o nó primario. O Hadoop funciona com base no princípio da localização dos dados, ou seja, em vez de mover dados para o algoritmo, o algoritmo é movido para datanodes onde os dados estão armazenados.

Em resumo, podemos dizer que o cliente envia os dados (que serão armazenados) e o programa (que vai processar os dados). O HDFS armazena os dados enquanto o MapReduce processa os dados.

Simples, não?

Conclusão

Nesta primeira parte é fundamental dar uma visão geral do funcionamento da arquitetura do Apache Hadoop. O que nós vimos nesta etapa

1- Uma breve introdução do Apache Hadoop.

2- Componentes do Apache Hadoop.

3- Como funciona o Hadoop.

P.S

E no próximo post vamos introduzir pontos importantes da utilização do Apache Hadoop HDFS, como funciona o armazenamento distribuído — HDFS e como o ambiente realiza as operações de leitura e escrita no HDFS.

--

--