Neste pequeno artigo vamos falar sobre duas ferramentas para processamento de dados, Hadoop e Spark, mas precisamos entender que as duas ferramentas são tecnologias distintas e com diferentes casos de usos.
Vimos que a própria Apache Software Foundation faz a seguinte divisão das ferramentas:
- Spark é uma ferramenta para Big Data;
- Hadoop é um banco de dados.
Tanto que na documentação do Apache ele nos diz: "Hadoop é um framework para desenvolvimento de aplicações distribuídas", aplicações com alta disponibilidade e tolerância a falhas. E para usarmos Hadoop nesse cenário temos alguns subprojetos como:
- Hadoop Commons;
- Hadoop Distribuited File System;
- Hadoop MapReduce
Sempre quando falamos de Hadoop, estamos falando de HDFS (Hadoop Distributed File System), que é um sistema de arquivos distribuído, feito para armazenar arquivos de grande porte utilizando um hardware comum, ou seja, de baixo custo.
O HDFS permite trabalharmos com vários nós, melhor com milhares de nós dentro de um cluster. Outro item do Hadoop é o FIO, ferramenta de gerenciamento e que nos dá a possibilidade de outras estruturas de processamento de dados rodar no Hadoop.
Agora, sobre o Spark, temos que lembrar que ele é um framework para processamento de Big Data, que sua construção foi feita com o foco na velocidade do processamento e análises desse conteúdo que foi processado de uma forma fácil. Ele nos entrega APIs de alto nível em Python, Java e Scala, trazendo um conjunto de bibliotecas onde possibilita a integração de uma aplicação com SQL, streaming trazendo uma variedade de situações de processamento de dados.
Então, podemos ver que as duas ferramentas são estruturadas para Big Data. E se sua empresa está com um crescimento rápido de dados, o Hadoop dará o armazenamento desses dados de forma segura e confiável, e o mais legal, ele é open source sem custos de licenciamento.
Já o Spark faz a compreensão desses dados, ou seja, havendo a necessidade de analisar esses dados em tempo real, aí quem entra em cena é o Spark. Mas podemos extrair os dados do Hadoop a partir dele mesmo ou de ferramentas de mercado, como Tableau, Pentaho e outras.
O grande benefício do Hadoop é sua plataforma distribuída, onde ele fica menos propenso a falhas, assim os dados sempre estarão disponíveis. Hoje, ele é um dos banco de dados mais usados para o ambiente de Big Data em nuvem.
Como falamos acima, Hadoop e Spark são projetos da Apache Software Foundation, e sua licença é open source, ou seja, sem custos. Com isso, podemos ver que que o licenciamento dos bancos de dados tradicionais, como Oracle e MSSQL, faz com que os CIOs utilizem, cada vez mais, o modelo SAAS (Software-as-a-Service), dos provedores de nuvem que contemplam o serviço de Hadoop e Spark.
O Spark nos dá velocidade nas aplicações que estão nos clustrers de Hadoop, essa velocidade faz com que ele execute até 100 vezes mais rápido, conforme documentação da fundação Apache. Por que é tão rápido? Porque Spark tem seu funcionamento em memória, assim ele não usa disco do seu servidor. Podemos ver a diferença do MapReduce e do Spark. O MapReduce faz a leitura dos dados do cluster e executa uma operação, e escrevendo o resultado de volta no cluster, essa ação torna-se lenta. Já o Spark faz a mesma operação em um só lugar, muito próximo ao tempo real, assim seu desempenho é muito mais rápido; outro benefício do Spark é que pode carregar dados de vários lugares, como MySQL, Amazon S3, Google CloudStorage, Couhbase e HDFS.
Um ponto de atenção sobre o Spark, é que a ferramenta não é fácil de usar. É necessário que o analista de dados tenha um bom entendimento sobre análises complexas dentre um conjunto de dados diversos e de origens diferentes, como streaming de dados em tempo real e lotes de arquivos.
Um ponto importante sobre o Spark, é que as empresas que estão trabalhando com IOT (Internet of Things), melhor internet das coisas, estão olhando para ele com um certo carinho, pela sua característica de realizar análises de dados interativos em tempo real, dando ao cliente uma maior personalização sobre suas análises.
Isso nos mostra que as empresas não vão escolher somente uma ferramenta, mas as duas, pois elas se completam, trazendo maior qualidade, rapidez e segurança no processamento de grandes dados e análise deles.
O grande diferencial do Hadoop é a capacidade de armazenamento de qualquer tipo de dados no seu formato nativo, realizando em escala uma enorme variedade de análise desses dados. E nos dá o que toda toda empresa procura, um custo baixo por ser open source e não precisar de hardware específico.
Seguindo por outro caminho, o Spark traz o framework com RDDs (Resilient Distributed Datasets), esse recurso faz com que seja permitido o reuso dos dados distribuídos, dando de forma eficiente a recuperação de falhas no cluster.
Mas podemos usar também somente o Hadoop? Sim, pois o mesmo, além do HDFS (Hadoop Distributed File System), temos o conhecido MapReduce, que faz o processamento substituindo o Spark. Também é possível usar somente o Spark sem o Hadoop, mas temos que lembrar que ele não tem um sistema de gerenciamento de arquivos. Sendo assim, teremos que fazer a integração com outro sistema de gerenciamento de arquivos. Pode ser alguma plataforma de nuvem ou o HDFS.
Como já falamos, o Spark se torna mais rápido que o MapReduce, pois a forma como é feito o processamento dos dados no MapReduce é por etapas e, no Spark, faz a operação a partir de conjunto de dados de uma só vez.
Analisando o MapReduce, segue abaixo, de uma forma genérica, a forma com que executa a carga de trabalho:
- Leitura dos dados do cluster.
- Faz a operação.
- Escreve o resultado.
- Lê os dados atualizados.
- Faz a próxima operação.
- Escreve o resultado.
E assim sucessivamente.
Entretanto, o Spark já completa as operações de análise de dados na memória. Aí você vai me perguntar: e o processo?
O processo basicamente é:
- Leitura dos dados do cluster, executa as operações analiticas e finaliza escrevendo o resultado no cluster.
Assim, o Spark chega ser até 10 vezes mais rápido que o MapReduce para o processamento em lote e até 100 vezes mais rápido em análises in-memory. Mas podemos usar o MapReduce para casos em que as operações de dados forem estáticos, principalmente se podemos esperar pelo processamento em lote. Já em situações onde é necessário ter análise de dados contínuos, ou seja, IOT onde seus sensores sempre estão coletando dados, o Spark será sua ferramenta escolhida.
E para concluir, pessoal, o Hadoop nasceu para ser escalável e suporta quedas ou falhas, pois seus dados são gravados a cada operação. Entretanto, o Spark traz a resiliência do RDD (Resilient Distributed Dataset), que faz com que seus dados sejam armazenados num conjuntos de dados resilientes e distribuído por todo o cluster.
Espero que esse artigo tenha ajudado na sua implantação de qual ferramenta usará para fazer sua Big Data.
Hadoop ou Spark, e agora?