O que é o Spark ?



Para realizar análises de grandes quantidades de dados, localizados em clusters com diversos nós, precisamos de recursos tradicionais de SQL e Datawarehouse ( Star schemas, drill down, etc ), assim como precisamos ter algorítimos e estruturas de dados para otimizar as consultas em caso de falhas em qualquer um dos nós envolvidos. 


Outro ponto que observamos mais recentemente nestas análises massivas de dados é o uso de algorítimos chamados de “machine learning” (Page-Ranking, Clustering, Regression, etc), que fazem um reuso de dados muito frequente. 


O framework MapReduce da plataforma Hadoop simplificou e automatizou bastante a análise de quantidades massivas de dados em clusters,  mas a medida que as análises passam a exigir um reuso de dados, a leitura e gravação para disco podem se tornar um problema.  Precisamos ressaltar que o Hadoop MapReduce não é um framework orientado para transações e análises que precisem de baixo tempo de resposta.


Visando atender estes novos cenários, o AMPLab da UC Berkeley ( http://amplab.cs.berkeley.edu/ ), desenvolveu um projeto chamado Spark, que visava resolver estas questões colocadas acima, permitindo realizar análises rápidas em quantidades massivas de dados, baseados em estruturas de memória compartilhadas, com facilidade de uso e que fosse integrado ao ambiente Hadoop. 


Neste projeto Spark foi desenvolvido e implementado o conceito dos chamados RDDs (Resilient Distributed Datasets), que permitem o reuso de dados distribuídos em uma variedade de aplicações, provendo um mecanismo eficiente para recuperação de falhas em clusters. Os RDDs são estruturas de dados em paralelo, tolerantes a falha, que permitem ao usuário persistir resultados intermediários em memória, controlar o particionamento para otimizar os dados e manipular dados usando um conjunto de operadores.  


Atualmente o Spark é um dos projetos da Fundação Apache ( http://spark.apache.org ), roda programas em Java, Python e Scala muito mais rápido que usando Hadoop MapReduce.   Em um teste utilizando algorítimos de regressão com o framework Spark, este foi 100 vezes mais rápido que um algorítimo similar usando apenas Hadoop MapReduce.




Rodando sobre o Spark Engine foram desenvolvidos softwares para análise de dados usando SQL ( Shark – Hive on Spark ), biblioteca Machine Learning ( MLIB ) e biblioteca para processamento de dados usando grafos ( GraphX ).



Nos próximos posts vamos falar sobre o Impala e sobre o Shark (Hive on Spark).














Comentários

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HBASE ?

O que é o HDFS ?