Conhecendo o Apache Hive
Este artigo apresenta o Apache Hive, discutindo seus principais conceitos e demonstrando sua forma de utilização.
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 - gerenciador de recursos e processador das tarefas de MapReduce.
O MapReduce é um modelo computacional que decompõe jobs (tarefas) de manipulação de uma grande quantidade de dados em tarefas individuais (aqui chamadas de tasks) para serem executadas em paralelo através de um cluster de servidores.
O modelo de MapReduce foi desenvolvido pelo Google. Ele está associado a duas operações fundamentais de transformação de dados, map e reduce. A operação de map converte elementos de uma coleção de uma forma para outra. Nesse caso, uma entrada de pares “chave-valor” é convertida para uma coleção “zero para muitos”, aonde vários valores com a mesma chave são agregados.
Numa operação de MapReduce, todos os pares são enviados para uma mesma operação de reduce. Ou seja, a chave e a coleção de valores associados àquela chave são passados para uma mesma operação. A operação de reduce converte a coleção para um valor como a soma, ou a média de valores da coleção, gerando um par “chave-valor” final.
A partir da versão 2.x, o Hadoop passou a utilizar um novo componente como gerenciador de recursos e processador das tarefas de MapReduce, conhecido como MapReduce 2.0 (MRv2) ou YARN. A ideia por trás do YARN é separar os processos das duas maiores funcionalidades do JobTracker: o gerenciador de recursos e o agendador de tarefas." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo