Total de visualizações de página

sábado, 10 de dezembro de 2011

Big Data- Parte VIII- Os Big Data e as formas de armazenamento-Novas soluções-I.


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”




Um comentário: