IGTI Blog
Hadoop e Spark: Qual ferramenta utilizar na era dos dados?

Hadoop e Spark: Qual ferramenta utilizar na era dos dados?

Estamos vivendo a grande era dos dados. Há pouco tempo nosso cotidiano era marcado por grandezas que giravam em torno de Gigabytes (109 bytes) e Terabytes (1012 Bytes). Nos dias atuais as grandezas estão na escala dos Petabytes (1015 bytes) e, por que não, na escala dos Exabytes (1018 bytes).

Um importante estudo realizado pela IDC – International Data Corporation apontou que a quantidade total de dados no mundo em 2012 era de 2,8 Zettabytes (1021 bytes) e que em 2020 esse total de dados chegaria a 40 Zettabytes. O estudo prevê que, a partir de 2012, a quantidade de dados total irá dobrar a cada dois anos.

O Universo Digital – Crescimento dos dados em 50 vezes, do início de 2010 até o fim de 2020

Fonte: IDC – Dezembro de 2012

Ainda de acordo com a IDC, estima-se que em 2012, 23% dos dados totais eram úteis para processamento Big Data e que em 2020 esse percentual chegará a 33%. Dos 23% de dados úteis atuais, apenas 3% são classificados e 0,5% são efetivamente analisados. Espera-se que até 2020 esse percentual de dados classificados e analisados aumentem consideravelmente, conforme apresentado no gráfico de Oportunidades do Big Data.

Oportunidades do Big Data

Fonte: IDC – Dezembro de 2012

O aumento da quantidade de dados classificados e analisados poderá resultar em valiosas informações para a tomada de decisão em diversas áreas da sociedade. O processo de análise dessa grande quantidade de dados será encarado daqui para frente como uma grande oportunidade e desafio para os especialistas da área. Essas análises exigirão volumosos investimentos em infraestrutura computacional, ferramentas e recursos humanos especializados. Ainda segundo a IDC, o custo de cada Gigabyte terá uma redução de preço saindo de $2 em 2012 para $0.20 em 2020, conforme apresentado no gráfico abaixo. Essa queda de preços irá contribuir diretamente para o aumento da quantidade de dados classificados e analisados.

Queda do custo e aumento do investimento

Fonte: IDC – Dezembro de 2012

Os investimentos necessários para transformar toda essa grande quantidade de dados em informação e conhecimento inevitavelmente passará pela pesquisa e desenvolvimento de ferramentas de processamento distribuído, principalmente por meio de frameworks que facilitam o trabalho dos desenvolvedores de software. Essas ferramentas já realizam automaticamente a distribuição do processamento, permitindo que os desenvolvedores mantenham o foco no que realmente importa: o negócio. Diante dessa necessidade surgiram diversas ferramentas (frameworks) para processamento distribuído, tais como Apache Hadoop, Spark, Flink, dentre outros.

Hadoop e Spark

O Hadoop foi criado em 2007 baseado no modelo MapReduce, para ser uma ferramenta escalável e tolerante a falhas. Nela os dados são tratados como pares chave/valor (Key/Value) e processados por meio de duas funções principais, Map e Reduce. Mesmo possuindo algumas deficiências, como a dificuldade de lidar com algoritmos iterativos, devido a necessidade de gravação dos dados em disco a cada iteração, o Hadoop reinou por muito tempo como o framework mais utilizado para processamento Big Data. Grandes empresas em todo o mundo obtiveram bons resultados usando o Hadoop, seu sistema de arquivos distribuídos (HDFS) e outros sistemas que compõem seu ecossistema, tais como HBase, Hive, Pig, Mahout, dentre outros. Apesar de apresentar bons resultados de tempo de execução, consumo de recursos e escalabilidade, com o tempo observou-se que a ferramenta apresentava uma deficiência crucial, que era o excesso de gravações de dados no disco. Essa característica acrescentava tempo considerável (overhead) às aplicações iterativas, referente à leitura e gravação em disco a cada iteração do algoritmo.

Com o objetivo de ser um mais uma opção de framework distribuído, tolerante a falhas e escalável, surgiu em 2010 o Apache Spark com o propósito de ser uma ferramenta com capacidade de manipular grandes massas de dados em memória, entretanto o sistema é também mais eficiente que o modelo MapReduce para aplicações executando em disco. Em alguns testes realizados, o Spark alcançou números impressionantes ao produzir resultados até 100 vezes mais rápidos que o Hadoop, para algumas aplicações específicas . O Spark surgiu para suprir a principal deficiência do modelo MapReduce e da ferramenta Hadoop, apresentando-se como uma importante alternativa para solução de problemas que exigem a implementação de algoritmos iterativos.

A grande pergunta por trás de toda essa história é: qual a melhor opção: Hadoop ou Spark? Para responder essa questão devemos analisar algumas variáveis, como o problema a ser trabalhado, a experiência do desenvolvedor em lidar com as ferramentas e, principalmente, os recursos computacionais disponíveis. Como foi dito anteriormente, o Spark tem a característica de usar muita memória RAM para o processamento e armazenamento de dados intermediários das iterações do algoritmo. Caso não exista memória suficiente disponível, o Spark começará a utilizar o disco para armazenamento e funcionará de maneira similar ao Hadoop. Se o conjunto de máquinas (cluster) que vai ser utilizado possui muita memória RAM disponível e o algoritmo a ser implementado tem a característica de ser iterativo, talvez o Spark seja a melhor solução. Por outro lado, se a quantidade de memória RAM no cluster é pequena e o algoritmo não tem a característica de iteratividade, a melhor solução pode ser ainda o bom e velho Hadoop. Tudo isso ainda dependerá da experiência do desenvolvedor em lidar com cada um dos frameworks, pois essa questão sempre afeta o tempo de desenvolvimento das soluções.

O Spark surgiu como uma alternativa viável ao Hadoop, entretanto necessita de grandes quantidades de memória RAM para o seu efetivo funcionamento. O Hadoop ainda é muito utilizado e se apresenta como uma boa solução para uma grande quantidade de aplicações de diversos tamanhos e características. Cabe ao desenvolvedor e ao administrador de sistemas Big Data avaliarem cada uma das variáveis acima e decidir pelo uso do framework que mais se adéqua ao problema a ser resolvido e ao orçamento que será destinado.

Professor autor: João Paulo Barbosa Nascimento