Uma breve introdução do Hadoop HDFS — Hadoop Distributed File System [1|2]
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.
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.
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.
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?
- 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.
- Depois que todos os blocos do arquivos são armazenados nos datanodes, um usuário pode processar os dados.
- 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.
- 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.