Vídeo: Palestra Virtual sobre Big Data (Hadoop, Map Reduce, HDFS) 2024
O Apache Hadoop é uma plataforma de software livre e de código aberto para escrever e executar aplicativos que processam uma grande quantidade de dados para análises preditivas. Permite um processamento paralelo distribuído de grandes conjuntos de dados gerados a partir de diferentes fontes. Essencialmente, é uma ferramenta poderosa para armazenar e processar grandes dados.
O Hadoop armazena qualquer tipo de dados, estruturados ou não estruturados, de diferentes fontes - e, em seguida, agrega esses dados de maneira quase que desejada. O Hadoop lida com dados heterogêneos usando o processamento paralelo distribuído - o que o torna uma estrutura muito eficiente para usar em software analítico lidar com dados importantes. Não é de admirar que algumas grandes empresas adotem o Hadoop, incluindo o Facebook, Yahoo! Google, IBM, Twitter e LinkedIn.
Antes do Hadoop, as empresas não podiam aproveitar os grandes dados, que não foram analisados e quase inutilizáveis. O custo para armazenar esses dados em um banco de dados relacional proprietário e criar um formato estruturado em torno dele não justificou os benefícios de analisar esses dados e utilizá-lo.
Hadoop, por outro lado, está fazendo essa tarefa sem costura - em uma fração do custo - permitindo que as empresas encontrem informações valiosas sobre os dados abundantes que adquiriram e se acumulam.
O poder de Hadoop reside no tratamento de diferentes tipos - na verdade, qualquer tipo de dados: texto, fala, e-mails, fotos, postagens, tweets, você o nomeia. A Hadoop cuida da agregação desses dados, em toda sua variedade, e fornece a você a capacidade de consultar todos os dados conforme sua conveniência.
Você não precisa construir um esquema antes que você possa dar sentido aos seus dados; O Hadoop permite que você consulte esses dados em seu formato original.
Além de manipular grandes quantidades de dados variados, o Hadoop é tolerante a falhas, usando programas simples que manipulam o agendamento do processamento distribuído em várias máquinas. Esses programas podem detectar falhas de hardware e desviar uma tarefa para outra máquina em execução. Esse arranjo permite que o Hadoop ofereça alta disponibilidade, independentemente da falha de hardware.
O Hadoop usa dois componentes principais (subprojetos) para fazer seu trabalho: MapReduce e Hadoop Distributed File System. Os dois componentes funcionam de forma cooperativa:
-
MapReduce : a implementação do MapReduce pela Hadoop é baseada na pesquisa do Google sobre modelos de programação para processar grandes conjuntos de dados dividindo-os em pequenos blocos de tarefas. MapReduce usa algoritmos distribuídos, em um grupo de computadores em um cluster, para processar grandes conjuntos de dados.Consiste em duas funções:
-
A função Mapa () que reside no mestre nó (computador em rede). Ele divide a consulta de entrada ou tarefa em subtarefas menores, que então distribui para nós de trabalho que processam as tarefas menores e passam as respostas de volta para o nó mestre. As subtarefas são executadas em paralelo em vários computadores.
-
A função Reduzir () coleta os resultados de todas as subtarefas e as combina para produzir um resultado final agregado - que retorna como a resposta para a grande consulta original.
-
-
Sistema de arquivos distribuídos Hadoop (HDFS) : o HDFS replica os blocos de dados que residem em outros computadores em seu data center (para garantir a confiabilidade) e administra a transferência de dados para as várias partes do seu sistema distribuído.
Considere um banco de dados de dois bilhões de pessoas e assuma que você deseja calcular o número de amigos sociais do Sr. X e organizá-los de acordo com seus locais geográficos. Essa é uma ordem alta.
Os dados de dois bilhões de pessoas podem ser originados em fontes muito diferentes, como redes sociais, listas de endereços de e-mail, postagens, tweets, histórico de navegação, e é apenas para abridores. Hadoop pode agregar esta enorme e diversificada massa de dados para que você possa investigar isso com uma consulta simples.
Você usaria recursos de programação MapReduce para resolver essa consulta. Definir os procedimentos de Mapa e Reduzir torna esse conjunto de dados grande gerenciável. Usando as ferramentas que o framework Hadoop oferece, você criaria uma implementação MapReduce que faria a computação como duas subtarefas:
-
Calcule o número médio de amigos sociais do Sr. X.
-
Organize os amigos do Sr. X por localização geográfica.
O seu programa de implementação MapReduce executaria essas subtarefas em paralelo, gerenciaria a comunicação entre as subtarefas e reunia os resultados. De dois bilhões de pessoas, você saberia quem são os amigos online do Sr. X.
O Hadoop fornece uma variedade de processadores de mapas; qual (ais) que você seleciona dependerá da sua infra-estrutura.
Cada um dos seus processadores irá lidar com um certo número de registros. Suponha que cada processador manipule um milhão de registros de dados. Cada processador executa um procedimento de mapa que produz vários registros de pares de valores-chave onde G (chave) é a localização geográfica de uma pessoa (país) e N (valor) é o número de contatos com a pessoa.
Suponha que cada processador Map produza muitos pares do formulário, como o seguinte:
Mapa do processador # 1:
Mapa do processador # 2:
Mapa do processador # 3:
Mapa do processador # 4:
Mapa do processador # 5:
Mapa do processador # 6:
Na fase Reduzir, o Hadoop atribui uma tarefa a um certo número de processadores: Execute o procedimento Reduzir que agrega os valores das mesmas chaves para produzir um resultado final. Para este exemplo, a implementação Reduzir a contagem de valores para cada chave - localização geográfica. Assim, após a fase Map, a fase Reduzir produz o seguinte:
------ ----
Claramente, o Sr.X é um cara popular - mas este foi um exemplo muito simples de como o MapReduce pode ser usado. Imagine que você está lidando com um grande conjunto de dados onde você deseja executar operações complexas, como agrupar bilhões de documentos, onde a operação e os dados são muito grandes para uma única máquina. Hadoop é a ferramenta a considerar.