Muito se tem falado sobre Big Data, um assunto bastante em voga atualmente. Mas o que significa Big Data e quais tecnologias e produtos estão relacionados a ele?
Big Data, da mesma forma que BI ou CRM, é um termo bastante abrangente e a diversidade de tecnologias e produtos existentes nesta categoria é igualmente ampla, surgindo novidades a cada dia. Para quem é da área técnica, falar em Big Data é lembrar imediatamente deHadoop. Realmente, Hadoop talvez seja o principal produto relacionado a Big Data. Basta observar que ele está presente em praticamente todos os pacotes, comerciais ou não, existentes no mercado. Mas também existem várias outras tecnologias e uma gama enorme de produtos associados ao conceito.
Então, como saber que tecnologia ou produto utilizar?
A utilização de cada tecnologia e produto depende, principalmente, do uso e do objetivo que se pretende alcançar.
Em relação ao uso, um dos fatores mais determinantes é se o processamento será em Batch ou Real-Time.
No caso de processamento batch, o principal produto de mercado é o famoso Hadoop, onde os dados são armazenados através dos nós do cluster e depois são executados jobs com map-reduce para processá-los. Como no mundo Big Data não existe uma só resposta para um determinado problema, os bancos NoSQL também podem ser utilizados para situações de processamento batch.
Quando falamos do Hadoop, logo imaginamos várias máquinas em cluster, com armazenamento e processamento distribuídos. Conceitos similares aplicam-se também às outras tecnologias, como os bancos de dados NoSQL (tais como o Oracle NoSQL), os produtos de processamento Real-Time (como o IBM InfoSphere Streams) e os produtos de Data Discovery (como o IBM InfoSphere Data Explorer e Oracle Endeca Information Discovery), entre outros. Independente de tecnologia e produto, os requisitos básicos de poder de processamento distribuído (e paralelo), escalabilidade (e disponibilidade) e tolerância a falhas (e redundância) não podem ser desprezados. Assim, tecnologias e produtos a serem considerados devem minimamente atender a estes requisitos.
No caso do processamento Real-Time, necessitamos de alta performance sem que a informação precise ser armazenada, ou seja, o fluxo de dados é processado “on the fly” e apenas o resultado da análise é apresentado ou armazenado. Exemplos típicos de utilização prática de processamento Real-Time são a monitoração de sensores, a análise de logs de rede, de navegação na internet etc. Os bancos de dados NoSQL (que abordei em um post anterior) também podem ser utilizados para processamentos “near Real-Time”. Nesse caso, o dado a ser processado é armazenado a priori, porém a alta performance desse tipo de tecnologia permite que seja armazenado e processado com baixa latência.
O objetivo final que se pretende alcançar também determina a tecnologia a ser utilizada. Em casos exploratórios, onde se deseja indexar um conjunto de documentos para pesquisa “Google-style”, o ideal é utilizar uma tecnologia de Data Discovery, que pode ou não estar integrada ao Hadoop, já que esses produtos possuem sua forma própria de indexação. Já nos casos onde é necessário estabelecer correlações ou aplicar funções estatísticas para a geração de insights, o ideal é utilizar pacotes como o” R“ integrados ao Hadoop.
O tipo de dado a ser processado também influencia na escolha de tecnologia e precisamos avaliar se o dado é estruturado, semi estruturado ou não estruturado, como análise de texto puro, por exemplo.
Outros fatores que determinam o “mix” de produtos e tecnologias a serem utilizados para a composição da solução são a facilidade de uso, a disponibilidade de mão-de-obra especializada, a curva de aprendizado, o nível de maturidade etc. Em relação ao “mix” de tecnologias, existem produtos e pacotes, open-source e comerciais. Os pacotes são interessantes pois possuem maior nível de integração e facilidades de instalação, configuração e gerenciamento. Pacotes comerciais também trazem vantagens sobre os não comerciais no que diz respeito a:
Em suma, existem diversas tecnologias e produtos relacionados a Big Data e geralmente, na prática, é necessário utilizar vários deles para compor uma solução. A escolha do “mix” de tecnologias é influenciada por fatores técnicos – tipos de dados, formatos de origem e fontes de informação, objetivo a ser alcançado e tipo de aplicação, situações de processamento batch ou real-time e velocidade de resposta – e não técnicos, como por exemplo custo, suporte, facilidade de uso, disponibilidade de mão-de-obra especializada, curva de aprendizado e nível de maturidade do produto.
Só para sintetizar, fecho este post com uma lista de categorias de tecnologias relacionadas a Big Data que, como já comentamos, devem ser selecionadas de acordo com as características do seu projeto (não incluí nesta lista as tecnologias de uso pelo próprio cluster, tais como gerenciamento de jobs, serialização, linguagens de programação etc):
Fonte: Triscal