Esse tema é útil em situações onde se tem uma grande
quantidade de dados que precisam ser armazenados de forma distribuída, sendo
necessário extrair, manipular ou carregar parte dessas informações de forma
rápida e confiável, podendo fazê-lo de forma simples através de um mecanismo de
pesquisa baseado em SQL.
Vemos uma quantidade cada vez maior de informação sendo gerada, seja através do avanço das mídias sociais e serviços de internet, de uma crescente demanda por conteúdos cada vez mais diversificados ou ainda por pesquisas e explorações feitas no ramo da ciência.
O fato é que, dependendo do tipo da necessidade envolvida, se faz necessário o armazenamento de uma quantidade de informação tão grande e complexa, da ordem de muitos terabytes, que se torna inviável tentar manipulá-la com ferramentas tradicionais.
Esse grande conjunto de dados, conhecido como "big data", e a dificuldade em lidar com essas informações acontece, em vários casos, não só pelo volume de dados armazenados, mas também por outros critérios como a velocidade com que esses dados chegam para serem armazenados, o tempo no qual eles devem ser processados, além dos tipos de dados que devem ser tratados e armazenados, sejam eles logs de aplicação, imagens, áudios, vídeos etc.
Um grande problema quando se fala em big data se refere a como esses dados serão manipulados de forma eficaz. Como serão feitos a captura, o armazenamento, o processamento, a análise e apresentação dos dados?
Uma forma de se resolver parte desse problema é através de processamento paralelo, onde os dados são divididos em porções menores e distribuídos para serem processados. Para algo do tipo, é necessária uma plataforma robusta e escalável, com várias máquinas, para se conseguir realizar a tarefa.
Isso sem contar a necessidade da replicação dos dados para se evitar rupturas e perdas de informação.
Ainda é necessário que as informações sejam processadas de forma independente (em cada máquina em separado) ou, caso contrário, pode haver um gargalo na rede e consequentemente um comprometimento de toda a plataforma.
Depois das informações processadas e armazenadas, precisaremos analisar e apresentar esses dados de forma eficiente.
Nesse cenário complexo, temos algumas ferramentas que podem nos auxiliar. É o caso do conjunto de ferramentas da Apache relacionado ao big data que formam o ecossistema do Hadoop.
O Hadoop, por sua vez, é um software open source desenvolvido para armazenamento e processamento de uma grande quantidade de dados de forma distribuída.
Arquitetura do Hadoop
O Hadoop utiliza um sistema de arquivos distribuído, conhecido como HDFS (Hadoop Distributed File System), que foi inspirado no sistema de arquivos do Google (Google file system).
O HDFS tem muitas semelhanças com outros sistemas distribuídos, no entanto apresenta características próprias como, por exemplo, ser tolerante a falhas e projetado para hardwares de baixo custo, além de possuir alta disponibilidade de acesso e ser perfeito para aplicações com um grande conjunto de dados.
O Hadoop divide os arquivos em grandes blocos de memória (64MB ou 128MB) e distribui os blocos entre os nós do cluster. Para processar os dados recebidos, o Hadoop os processa remotamente através de cada nó.
O HDFS possui dois tipos de nós: master, conhecido também como namenode, e os workers, ou datanodes. O master armazena as informações da distribuição de arquivos e metadados. Já os workers armazenam os dados propriamente ditos.
Essa técnica permite que os dados sejam processados de forma mais rápida e eficiente, por ser distribuída, do que outras formas como, por exemplo, um processamento local das informações.
O framework do Hadoop é composto pelos seguintes módulos (Figura 1):
· Hadoop Common - libs e utilitários necessários aos outros módulos do Hadoop;
· Hadoop Distributed File System (HDFS) - sistema de arquivos distribuídos;
· Hadoop MapReduce - processador de dados em larga escala
· Hadoop YARN - ger ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais