2015-04-20

2) De Onde Vem a Força do Big Data?

#bigdata #hadoop #spark

Como já escrevi, Big Data é uma arquitetura software para computação paralela que contém uma inovação de ruptura em relação a outras arquiteturas que se conhece para essa finalidade. Mas qual é essa tal inovação? Uma pergunta semelhante seria: de onde vem a força do Big Data? A resposta é que ao contrário das outras tecnologias de computação paralela (e.g. OpenMP, MPI, CUDA, TBB), o Big Data é baseado em um sistema de arquivos (file system) distribuído, chamado HDFS. Esse sistema de arquivos foi proposto e implementado principalmente por Doug Cutting e Mike Cafarella em 2005. O Hadoop (primeira geração de Big Data) foi desenvolvido tirando proveito do HDFS. O Spark (segunda geração de Big Data) baseia-se também em HDFS.

O sistema de arquivos (file system) é um pedaço de um sistema operacional. É o sistema de arquivos que permite que possamos entender o que está em disco como “arquivos”, podendo criá-los, escrever neles, ler deles, renomeá-los, apagá-los. Quase sempre o sistema de arquivos é “concentrado”, o que quer dizer que um arquivo fica integralmente num mesmo disco. O leitor não deve confundir-se com o conceito de se mapear discos pela rede, usado em empresas ou em redes domésticas. Quando se mapeia um disco pela rede, o sistema operacional passa a enxergar um novo disco. Mas esse novo disco deve conter integralmente os arquivos que nele são gravados.

Imagine agora um grupo de computadores, que chamaremos de “cluster”. Queremos que o conjunto todo funcione como um bloco para realizar uma tarefa. Cada computador do cluster será chamado de “worker”, embora as vezes também chamado de “nó” [node] ou “escravo” [slave]. No HDFS, um sistema de arquivos distribuído, arquivos são divididos em blocos, e cada bloco é copiado para o disco de um dos computadores worker do cluster. Isso é particularmente conveniente no caso de os arquivos serem muito grandes. Há ainda um detalhe no HDFS: ao invés de haver apenas 1 cópia de cada bloco, há 3 cópias, em computadores diferentes. Esse detalhe produz o muito desejável efeito de robustez (também chamado de “resiliência”), pois no caso de um computador worker pifar, o sistema detecta a falha e a partir das outras 2 cópias recupera-se completamente. O Big Data é portanto uma arquitetura de software para uso em conjunto (cluster) de vários computadores (workers), que é capaz de trabalhar em paralelo para realizar uma tarefa, e que tem robustez para ser capaz de entregar o trabalho feito mesmo que um computador tenha um defeito no meio do processamento.

Outra vantagem fundamental do uso de sistema de arquivos distribuídos é que o software de Big Data realiza o processamento desejado executando simultaneamente uma parte do algoritmo (chamada de “map”) em que cada worker processa sobre o bloco do arquivo que está salvo no seu disco local. A escalabilidade dessa parte do algoritmo é particularmente alta. Numa fase posterior, os dados são consolidados (reduce) para produzir a saída.

Imagine que se deseje contar quantas vezes ocorre uma dada palavra (digamos “computador”) em um conjunto gigantesco de dados (digamos, o conjunto completo de matérias de um grande jornal). O Big Data trata esse problema particularmente bem, pois pode dividir o conjunto de dados por vários computadores worker, e fazer a busca pela palavra dada em paralelo, sem maiores problemas.



--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337


2 comentários:

  1. Sabe me dizer se este algoritmo de Map reduce é o mesmo utilizado pelo MongoDB ou adaptaram o nome para produzir um efeito robustez?

    ResponderExcluir
  2. Caro Raphael,

    esse assunto é complexo. Vou estudar para dar uma resposta compacta e completa, e faço um post sobre o resultado do estudo.

    sbVB

    ResponderExcluir