Com o aparecimento do conceito de Big Data, novas formas de
armazenamento e acesso aos dados, agora em escalas muito superiores, começaram
a aparecer. Acostumados com os conceitos de Bancos de Dados e de DataWarehouse
como sinônimos de depósitos de grandes volumes, a comunidade começou a se
inteirar de novos termos e produtos, até então desconhecidos na camada das
aplicações tradicionais. Nomes como Hadoop, BigCouch, BigTable, Cassandra,
Cloudera, MongoDB, Hive, etc começam a surgir e a serem discutidos como
soluções para essa nova fase de estruturação e acesso de grandes volumes de
dados, sem uma grife por trás, digamos assim. Marcas desconhecidas no grande
mercado dos gerenciadores de dados.
De maneira geral esses produtos podem ser entendidos como
participantes de camadas que tem estruturações arquiteturais diferentes. Uns
são mais voltados para o armazenamento
dos dados, normalmente na forma distribuída, onde as unidades de
informações(dados, metadados etc) são espalhadas por centenas e até milhares de
“nós” processadores ligados em rede, com topologias diferentes(master-slave, ou
peer-to-peer). Podem ter a conformação de Gerenciadores de bancos de dados
distribuídos (SGBDD) ou de gerenciadores de arquivos distribuídos(DFS). A diferença está
no conjunto de funcionalidades embutidas, com os SGBD distribuídos, que normalmente oferecem aspectos de schemas, DDL,
conceitos de ACID, acrônimo para Atomicidade, Consistência, Isolamento e Durabilidade.
Nessa categoria, os produtos ditos NOSQL DB podem oferece características
diferentes dos “ tradicionais” SGBDD, não se utilizando de linguagem SQL e
modificando os aspectos de normalização(por exemplo, abdicando da 1ª forma normal),
e assim, se afastando do modelo
relacional, tradicional nos produtos SGBD a partir da década de 80. Nessa
categoria aparecem o BigTable, da Google, o Dynamo da Amazon, o Cassandra do Facebook,
por exemplo. São produtos de BD que priorizaram a disponibilidade dos dados à sua
consistência., em função do volume e do
estilo de aplicação a que foram direcionados inicialmente. Por outro lado, no
domínio dos DFS(sistemas de arquivos distribuídos), aparecem nomes como Hadoop,
framework inspirado no GFS(Google File System), inspirado inicialmente nos
laboratórios de Mountain View. Acoplados às camadas de distribuição e
armazenamento de dados, aparecem frameworks capazes de comandar o tratamento
das pesquisas , agora resolvidas em milhares de “nós”, com dados replicados
para garantir alta tolerância e retornar os dados selecionados, filtrados e
consolidados. Nesse universo apareceu o padrão MapReduce. Essa dupla, Haddop-MapReduce
é hoje, um par de conceitos dentre os mais discutidos na computação de nuvem e
serviram para a produção de várias tecnologias derivadas.
Hadoop-MapReduce
Oriundos do fenômeno Google que ensinou ao mundo como processar e
pesquisar montanhas gigantescas de dados, essa nova tendência aparece com muita
força nas soluções emergentes do mercado de altíssimo volume de dados. Em 2003,
quando o Google se defrontou com o desafio de indexar a internet toda, colocando
todas as páginas passíveis de serem acessadas pelas suas máquinas de buscas,
apareceram as primeiras ideias. Para resolver esse enigma, um conjunto de
engenheiros da Google definiu o conceito de MapReduce, conjugado com o complexo sistema de
gerência de dados (FMS) desenvolvido pela própria Google, que seria a origem do
Hadoop.
A ideia por trás do MapReduce é um framework de programação que foca fortemente
o processamento e o armazenamento distribuído de dados, além de estruturações
de dados que em nada lembram as tradicionais tabelas e relações que conhecemos.
Com o melhor da filosofia “dividir para
conquistar”, a proposta visa a quebrar um enorme conjunto de dados em “tascos”
menores que serão espalhados por
milhares de nós processadores. Um nó controlador, tipo master, quebra as
perguntas em pequenas consultas que são enviadas aos nós processadores
subordinados e depois retornam, quando são agregadas numa resposta coesa. O
Google reescreveu todo o seu sistema de indexação para se utilizar das
vantagens da proposta de MapReduce. Além de trabalhar com essa esquadrilha de
nós processadores, o framework ainda
possibilita a estratégia de fault-tolerance,
que garante que, mesmo que haja queda em alguns dos muitos nós, os
remanescentes se incumbirão de realizar as tarefas que não puderam ser
terminadas. Os dados são replicados em vários nós, garantindo que no caso de falhas
de uma cópia, outras estarão disponíveis.
A proposta foi revolucionária na medida em que permitiu que, em vez de
um ou alguns supercomputadores, todo o processamento possa ser executado por inúmeras
máquinas menores, mais baratas e com menor investimento. Um conjunto de
processadores comprados como “commodities”, alocados em vários racks, acabaram
formando um instrumento poderoso para processar altos volumes de dados. No
conceito de cluster Haddop, cada um dos servidores da rede pode ter 2,4 ou 8
processadores e você poderá ter centenas de servidores, cada qual tomando conta
de um pedaço do grande volume de dados, traduzido em fragmentos distribuídos. O resultado oriundo desses milhares de
processadores, originados de uma consulta, retornam para uma camada redutora
que transforma os milhares de resultados parciais em um conjunto final a ser
entregue a quem fez a solicitação. A
tecnologia permitiu que a Google tornasse o seu sistema muito mais inteligente
trocando a complexidade anteriormente existente pelas análises de
comportamentos dos usuários Google, com oferecimento de novos produtos e
desenvolvimento de melhorias que alcançaram também os produtos Google Maps e
Google Earth. Os detalhes mais secretos da tecnologia MapReduce e de seu Google
FMS permaneceram proprietários, porém a empresa permitiu a publicação aberta de
alguns conceitos subjacentes. Essas publicações permitiram o desenvolvimento de
alternativas no mercado. Quando o site
Yahoo percebeu a força da proposta do concorrente, juntou esforços para
desenvolver algo semelhante, criando o Hadoop, batizado em função do nome de um
brinquedo (baby elephant). O Hadoop
não é considerado propriamente um SGBD (Sistema Gerenciador de Bancos de Dados),
ficando mais centrado na categoria de um gerenciador distribuído de arquivos -
DFMS (Distributed File Management System). É caracterizado pela ausência de uma
linguagem específica como o SQL e por uma
forma estrutural menos rigorosa, como a definida pelo modelo relacional,
que é moldado por normalizações e regras de dependências funcionais. O Hadoop,
ao contrário, permite uma forma flexível de definições estruturais e não
oferece uma linguagem DML (Data Manipulation Language) padrão, podendo ser
trabalhado por qualquer linguagem do mercado. O Hadoop tem grande parte de sua
força na combinação com a estratégia de distribuição de dados, através de uma
arquitetura MPP, em que uma esquadrilha de servidores oferece “escalabilidade”
linear. O Hadoop aplica o modelo de programação do MapReduce, possibilitando a
criação de aplicativos em qualquer linguagem e que roda em paralelo, dentro da
arquitetura distribuída estabelecida. O Hadoop não trabalha na forma
transacional, sendo vocacionado para processamentos batchs que executam os programas desenvolvidos. Nesse estágio não
há consultas interativas. Não comporta acessos randômicos aos dados,
trabalhando de forma sequencial, o que pode trazer certas restrições em tipos
de processamentos com workload misto (atualização
e consulta) que exigem acessos aleatórios. Hoje o Hadoop se destaca como um
ambiente de processamento com “escalabilidade” infinita, tratando altíssimos
volumes de dados que seriam inviáveis de ser tratados (armazenados e
processados) num RDBMS tradicional. Como um DFMS, o Hadoop permite o tratamento
de dados estruturados, semiestruturados e não estruturados, potencializando o
seu uso na web. Hoje o Hadoop permite
a análise do que cerca de 300 milhões de pessoas veem no site do Yahoo, minerando o seu comportamento e alternando
dinamicamente home páginas por onde
eles se deslocam. O Yahoo estima um investimento de dezenas de milhões de
dólares no seu desenvolvimento, mas a sua essência é mantida como open-source. Até a Microsoft,
normalmente refratária aos aspectos de open-source,
também adotou o Hadoop quando incorporou a empresa Powerset a fim de melhorar a
sua máquina de busca. No Facebook, o Hadoop é usado para gerenciar 40 bilhões
de fotos armazenadas na maior das redes sociais. A empresa Eyealike, por sua
vez, aplica o Hadoop para o reconhecimento facial em fotos. O Hadoop agora é um framework de código aberto da Apache e está sendo usado
por algumas empresas como Comscore (especializada em aplicações de inteligência
no mercado digital) e CBS Interactive (com foco em marketing digital)
para tratar gigantescos volumes de dados e prepará-los para estruturas de BI/analytics.
O produto pode ser obtido na Apache
Foundation, em módulos independentes, mas pode ser comprado de terceiros como
Cloudera e IBM, em pacotes.
O pacote é uma unidade com vários componentes testados para
garantir compatibilidade e estabilidade entre as partes, além de vir com
suporte e serviços na base de assinatura. A Cloudera também
está desenvolvendo aplicativos focados
em segmentos verticais, como financeiro, biotecnologia, energia, varejo e
seguros baseados nos conceitos do MapReduce e em um FMS (File Management
System) similar (com busca paralelizada em sistemas MPP e fault tolerance). Em algumas soluções,
como a da Aster, são
desenvolvidas funções de tratamento de pesquisa, otimização, particionamento de
dados, classificação, etc., por vezes embutidas numa sintaxe SQL-like e que são executadas nos “nós” em
que partições de dados são previamente armazenadas. Isso tudo dentro do estilo
de arquitetura que envolve dezenas de centenas de nós, alguns com objetivos
específicos, como armazenamento de metadados, analisador, otimizador e
distribuidor de consultas . Com o objetivo de
otimizar os acessos, o Hadoop adota blocos físicos de tamanho grande (64MB). A
solução também foca o processamento in-memory
e máquinas MPP (Massive Parallel Processing). Essa arquitetura é voltada para o
tratamento de grandes arquivos, como click-stream
data base, que registram os passos de um internauta pelo site através dos cliques de uma sessão,
ou para o processamento de dados da Catalina, por exemplo, em que pesquisam
dados de milhões de clientes que usam cupom, para montar modelos de
comportamento. A parte cuidadosa na
adoção de umas solução dessas é
exatamente a sua imaturidade,
comparada com o SQL quarentão, além de conceitos novos, incomuns e não tão
fáceis como os tradicionais relacionais. A Google e a IBM têm programas para o
ensino do Hadoop nas universidades, visando à sua maior adoção. Outros produtos
dessa linhagem são GreenPlum, adquirido pela gigante do mundo de
armazenamento EMC e DataMeer.
Pontos fortes da estratégia Hadoop:
Sempre que as novidades aparecem é
importante analisá-las sob certos aspectos, conforme a seguir:
Custo: o software
é livre e, quando comparado com o custo de uma estrutura de SGBD relacional
necessário para tratar dados no volume da era dos zettabytes, torna-se mais atraente ainda;
Dados: por possuir uma abordagem sem esquema
formal de dados o Hadoop e o MapReduce
trabalham bem com qualquer tipo de dados. O MapReduce interpreta os dados em
tempo de execução, baseado em estruturas simplificadas do tipo “chave=valor” definidos em um programa de MapReduce. Dessa
forma, o programa pode trabalhar com facilidade no tratamento de dados
estruturados, semiestruturados e não-estruturados, como imagens, textos, etc;
Escalabilidade: o produto
é um DFMS que trabalha em
arquitetura MPP que roda em um conjunto de servidores,
oferecendo “escalabilidade” linear. Possui overhead
pequeno se comparado com os gerenciadores relacionais;
Modelos de dados: o Hadoop
é um DFMS que não necessita de um esquema ou conceitos de normalização para
tratar os dados, nem uma linguagem especial para acessá-los. O produto oferece
alta performance e facilidade, via aplicações como Flume, para receber, tratar
e transferir altos volumes de dados;
Administração do ambiente: o produto
automaticamente gerencia as falhas nos diversos nós da arquitetura, além de
oferecer facilidades para manipulação grandes clusters de máquinas, rodando programas que executam em arquitetura
paralela.
A figura abaixo ilustra o conceito de
Hadoop-MapReduce
Grande volume de
dados
(Tera-Peta-Exa)
dividido em
milhares de
pequenos arquivos
|
Milhares
de nós processadores, com dados e funções de Map e Reduce
|
• Dados e funções
replicadas,
• Armazenamento key-value,
alta
taxa
de compressão
• MPP
• Fault Tolerant
|
Consulta:
é mapeada (dividida) em diversas subconsultas
Enviada
a diversos nós processadores, controlado pelo nó master
Retornam
ao Master que os consolida (Reduce) na resposta
|
Nó
master
|
Resultado
|
Map
|
Reduce
|
Outros
“nós”
|
Grande volume de
dados
(Tera-Peta-Exa)
dividido em
milhares de
pequenos arquivos
|
Milhares
de nós processadores, com dados e funções de Map e Reduce
|
• Dados e funções
replicadas,
• Armazenamento key-value,
alta
taxa
de compressão
• MPP
• Fault Tolerant
|
Consulta:
é mapeada (dividida) em diversas subconsultas
Enviada
a diversos nós processadores, controlado pelo nó master
Retornam
ao Master que os consolida (Reduce) na resposta
|
Nó
master
|
Resultado
|
Map
|
Reduce
|
Outros
“nós”
|
Grande volume de
dados
(Tera-Peta-Exa)
dividido em
milhares de
pequenos arquivos
|
Milhares
de nós processadores, com dados e funções de Map e Reduce
|
• Dados e funções
replicadas,
• Armazenamento key-value,
alta
taxa
de compressão
• MPP
• Fault Tolerant
|
Consulta:
é mapeada (dividida) em diversas subconsultas
Enviada
a diversos nós processadores, controlado pelo nó master
Retornam
ao Master que os consolida (Reduce) na resposta
|
Nó
master
|
Resultado
|
Map
|
Reduce
|
Outros
“nós”
|
Grande post Barbieri. Compartilhado.
ResponderExcluirUm abraço dos Griffos.