Você está na página 1de 7

HIVE

SOLUO DE ARMAZENAMENTO SOBRE A MAPREDUCE


INTRODUO
O volume de dados a ser extrado e analisado na indstria de Business Intelligence est crescendo rapidamente, tornando as solues de armazenamento tradicionais proibitivamente caras. Hadoop uma implementao open-source Map-Reduce que est se apresentando como uma alternativa para armazenar e processar volumes extremamente grandes de dados em hardware commodity. No entanto, o modelo de programao Map-Reduce de baixo nvel e requer que os desenvolvedores escrevam programas personalizados que so difceis de manter e reutilizar. Este trabalho tem por objetivo apresentar a soluo Hive construda em cima do Hadoop. Hive suporta consultas expressas em uma linguagem declarativa SQL-like-HiveQL , que compilada em Map-Reduce executada no Hadoop . Alm disso, suporta HiveQL personalizados MapReduce scripts para serem conectados s consultas. A linguagem inclui um sistema com suporte para tabelas com tipos primitivos, colees como matrizes e mapas, e composies aninhadas. As bibliotecas de IO subjacentes podem ser estendidas para consultas de dados em formatos personalizados. HIVE tambm inclui um sistema de catlogo, Hive - Metastore, contendo esquemas e estatsticas, que so teis para a explorao de dados e otimizao de consultas. No Facebook, Hive contm milhares de tabelas com mais de 700 terabytes de dados e est sendo amplamente utilizado para relatrios e anlises ad-hoc por mais de 100 usurios.

MAPREDUCE
MapReduce sistema de programao de alto nvel que permite que muitos processos de um banco de dados (BD) possam ser escrito de forma simples. Esses processos nos bancos de dados visam trabalhar com uma grande quantidade de dados, que so divididos e designados a um conjunto de mquinas, denominado cluster de computadores. Tem por objetivo melhorar o desempenho na performance obtida pelo

paralelismo, omitindo toda a complexidade de modo que o usurio foque no problema principal, que o processamento dos dados. O modelo MapReduce composto por duas fases, a de mapeamento dos dados e reduo. Para execuo dessas fases o framework designa uma das mquinas do cluster como master; essa mquina ento define um conjunto de mquinas para desempenhar a funo de mapeamento e um outro conjunto para executar a tarefa de reduo. Na primeira fase a mquina master tem a funo de dividir os dados de entrada em vrias partes menores e ento designar cada parte a uma mquina que estar desempenhando a atividade de mapeamento. Aps o trmino dessa fase inicia-se a fase de reduo. Nessa segunda fase a mquina master notificar as mquinas que desempenham a atividade de reduo sobre a localizao dos dados produzidos pela fase anterior, para que os dados sejam condensados em informaes teis para que possam ser interpretados e utilizados para o _m ??? necessrio. Podemos ver a execuo na figura abaixo.

Cada uma dessas fases, a de mapeamento e reduo, implementa uma funo, Map e Reduce respectivamente, ambas funes so implementadas pelo usurio. A funo Map recebe como entrada um par chave-valor. Com o par sero realizadas as operaes definidas de Map, e ser produzido como sada uma lista de pares chave-valor intermedirias. Com a concluso dessa fase o framework agrupar todos os valores associados mesma chave, partindo para a prxima fase, que utiliza a funo Reduce.

HADOOP

Hadoop um framework que permite o processamento de dados em larga escala em clusters de computadores. Oferece um mecanismo de distribuio dos dados em um Sistema de Arquivo Distribudo (Hadoop Distributed File System - HDFS). Tambm oferece uma interface para implementar as funes de Map e Reduce o que facilita a programao. As premissas do MapReduce consistem na simplificao do armazenamento, comparada as estruturas de armazenamento do SGBD, o armazenamento utilizado deve ser simples e normalmente armazenar uma chave e um valor para os dados. O Hadoop pode ser instalado em trs modos: Standalone til para testar a aplicao e depurar o cdigo, e roda como um nico processo Java. Pseudo-Distributed O modo Pseudo-Distributed, assim como no Standalone, executado em apenas uma mquina, porm cada daemon do Hadoop roda em um processo distinto. Fully-Distributed utilizado em sistemas de produo, realmente distribudos.

Preocupaes com falhas de hosts no meio de processamento de tarefas so desconsideradas. Todos os problemas de distribuio ficam a cargo do framework.

HIVE
Hive uma infra-estrutura de DW baseado no Hadoop. O Hadoop fornece grande dimensionamento e tolerncia a falhas para armazenamento e processamento de dados (utilizando o paradigma de programao chave-valor) em cluster de computadores. Hive desenvolvido para fornecer fcil sumarizao de dados, consultas distribuidas e anlise de grande volume de dados. O Hive no projetado para processamento de transaes online, pois os jobs do Hadoop tendem a ter alta latncia, mesmo quando os dados envolvidos so muito pequenos, como resultado, a latncia para consultas realizadas so geralmente muito elevadas. Ele fornece uma linguagem simples chamada HiveQL. Essa linguagem suporta a definio de dados (Data Definition Language - DDL), a manipulao de dados (Data Manipulation Language - DML) alm das consultas.

CONSULTAS

Hive fornece uma linguagem de consulta SQL , chamado HiveQL que suporta select, project , join, aggregate, union all e subconsultas na clusula from. HiveQL suporta Declaraes Definio de Dados (DDL) ( No seria Linguagem de Definio de dados DDL) para criar tabelas com formatos de serializao especficas e particionamento e quebra de colunas. Os usurios podem carregar dados de fontes externas e inserir os resultados da consulta em tabelas Hive, via carga e insero de manipulao de dados (DML), ( Isso mesmo?) respectivamente. HiveQL atualmente no suporta a atualizao e excluso de registros nas tabelas existentes . HiveQL suporta insero multi-tabelas, onde os usurios podem executar vrias consultas sobre a mesma entrada de dados usando uma nica instruo HiveQL . Hive otimiza essas consultas, compartilhando a digitalizao dos dados de entrada . HiveQL tambm muito extensvel. Ele suporta o uso de definio de transformao de coluna (UDF) e agregao de funes (UDAF) implementado em Java. Alm disso, os usurios podem incorporar scripts personalizados de Map-Reduce escritos em qualquer idioma usando uma interface simples de streaming baseado em linha, ou seja, ler as linhas da entrada padro e escrever linhas para a sada padro. Este exibilidade vem a um custo de converso de linhas para strings.

ARQUITETUTURA E ORGANIZAO DO HIVE


O Hive formado por poucos componentes. Podemos apontar esses como sendo de Interface externa, que fornecem as opes por linhas de comando (Command Line Interface - CLI), interao com pginas web (Graphic User Interface - GUI), alm de uma API (Application Programming Interface). O servidor Thrift, que possui uma API cliente para executar declaraes HiveQL. Thrift um framework para servios de outras linguagens, onde um servidor escrito em uma linguagem, como Java, pode tambm suportar clientes em uma outra linguagem. Tambm possui o Metastore, que um catlogo do sistema que contm metadados. Os metadados so informaes sobre as tabelas armazenadas pelo Hive, e que so especificadas no momento de criao. Os metadados so utilizados por todos os outros componentes do Hive. E por fim temos o Driver, o componente que interage com o Hadoop, e gerencia declaraes HiveQL, na compilao, otimizao e execuo. Demonstrao de utilizao do HIVE.

ORGANIZAO DOS DADOS


Os dados manipulados pelo Hive so armazenados no HDFS. A organizao desses dados ocorre da seguinte forma: Base de Dados: utlizado para indentificar, agrupar e evitar conflitos de conjuntos de dados. Tabelas: conjunto de dados homogneo presente em uma base de dados. No Hive cada tabela representado por um diretrio no HDFS, onde o nome do diretrio o nome da tabela. Esta definio feita automaticamente pela operao DDL. Parties: so colunas virtuais da tabela. Tabelas podem possuir uma ou mais parties. Cada partio da tabela representada no Hive como um subdiretrio do diretrio que representa a tabela. O nome deste subdiretrio formado pelo nome da partio definido pela operao DDL mais seu valor, que obtido no momento da insero dos dados.

Grupos (Buckets): os dados de cada partio podem ser agrupados baseados no valor de uma funo hash sobre uma das colunas da tabela. Cada grupo de dados armazenado como um arquivo dentro do diretrio da partio. Essa organizao cria uma simples estruturao dos dados e torna visvel porque uma consulta com Hive torna-se eficiente. Cria-se uma estrutura em rvore onde o n raiz representa o diretrio da tabela, e cada n abaixo do n raiz um subdiretrio representando a partio. As folhas da rvore so os arquivos contendo os dados. Desse modo, a cada nvel que descemos na rvore, satisfazendo as condies das parties, elimina-se todo o resto da rvore, diminuindo significativamente a quantidade de dados analisados durante uma consulta.

CONClUSO
Hive um armazm de dados distribudo que roda em cima do Apache Hadoop e permite anlises sobre grande quantidade de dados.

Com o HiveQL, quando os trabalhos MapReduce so necessrios, Hive no gera programas em Java MapReduce. Ao invs disso, ele usa built-in, Mapper genricos e mdulos Reduce que so movidos por um arquivo XML que representa o "plano de trabalho." Em outras palavras, esses mdulos genricos fazem a funo de mini-intrpretes da lngua e da "linguagem" para conduzir o clculo codificado em XML. No est claro
Embora Hive apresente uma interface de Data Warehouse para Hadoop, ainda uma estrutura de processamento em lote. Como os dados do Hive esto localizados em Hadoop, limitado s restries do Hadoop. Hadoop no feito para a edio de dados. No h UPDATE em Hive, porque esta funcionalidade no pode ser executada em dados mais HDFS, pois ele no suporta este tipo de transaes. Mesmo assim, Apache Hive tornou possvel aos desenvolvedores com conhecimento de SQL bsico criarem consultas significativamente complicadas extrarem rapidamente valores a partir de grandes volumes de dados.