Processamento em Big Data
Luiz Henrique Zambom Santana
24/08/2016
Agenda
● Introdução
● Map/Reduce e Hadoop
● Arquitetura Lambda
● Filas com Apache Kafka
● Memória compartilhada com Apache Ignite
● Streaming com Apache Spark
● Exercícios
● Conclusões
Motivação
Não custa lembrar...
No início era o map/reduce...
...e o Apache Hadoop...
Latência vs. Vazão
O que é mais importante?
Arquitetura Lambda (Nathan Marz)
Arquitetura Kappa (Jay Kreps)
Arquitetura do Exercício
Twitter Spark
streamming
1
Master Database
(Cassandra)
Kafka queue
2
2
Ignite SQL
3
https://github.com/lhzsantana/
neoway-processing
Apache Kafka
● Criado pelo LinkedIn no começo de 2011
● Liderado atualmente pela http://www.confluent.io/
● http://www.slideshare.net/GuozhangWang/apache-kafka-at-linkedin-43307044
Apache Kafka
Apache Kafka
Apache Kafka
1. Download Kafka
2. Start zookeeper
a. zookeeper-server-start.bat zookeeper.properties
3. Start kafka
a. kafka-server-start.bat server.properties
Apache Kafka
● Exercício
○ Usando o exemplo, criar um código para enfilerar objetos produto no tópico MeusProdutos e
objetos vendas no tópico MinhasVendas.
● Desafio
○ Ler dados do Cassandra, enfilerar e enviar para o MongoDB.
Apache Ignite
● In-Memory Data Fabric
● Compete/Coopera em várias frentes
DataGrid
● JCache (JSR 107)
● Vantagens:
○ Consistency
○ Distributed In-Memory Caching
○ Lightning Fast Performance
○ Elastic Scalability
○ Distributed In-Memory
Transactions
○ Web Session Clustering
○ Hibernate L2 Cache Integration
○ Tiered Off-Heap Storage
○ Distributed ANSI-99 SQL Queries
with support for Joins
Apache Ignite com Spark
Apache Ignite como Streaming
IgniteSQL
● Possui duas formas de
operação transactional e
atomic
● Implementa SQL Ansi-99
De certa forma relacionado ao NewSQL...
SQL and NoSQL will merge
“Not yet SQL”
Michael Stonebraker, 2015
https://www.youtube.com/watch?v=KRcecxdGxvQ
Apache Ignite
● Exercício
○ Usando o exemplo, criar um código enviar o Produto e a Venda para o Ignite. Acessar os
produtos com preço maior que 20 e as vendas com valor maior que 100.
○ Usar uma transação para atualizar o valor de produto em 10%.
■ http://apacheignite.gridgain.org/v1.0/docs/transactions
● Desafio
○ Acessar todas as vendas de um produto usando um Join:
http://apacheignite.gridgain.org/docs/sql-queries#sql-joins
Apache Spark
● Iniciado no AMPLab
● Tese do Dr. Matei Zaharia
“An Architecture for Fast and
General Data Processing on
Large Clusters”
Abstração de memória
Data Frames
Abstração de memória
Spark Streaming
Spark Streaming e o Spark Engine
Discretized Stream (DStream)
Transformações sobre DStreams
Apache Spark
1. Download Spark
2. Windows:
a. spark-class.cmd org.apache.spark.deploy.master.Master
b. spark-class.cmd org.apache.spark.deploy.worker.Worker spark://192.168.99.1:7077
3. Linux
a. ./sbin/start-master.sh
b. ./sbin/start-slave.sh spark://192.168.99.1:7077
4. Colocar o Jar do projeto no Target
5. Possível erro: org.apache.spark.rpc.netty.RequestMessage; local class
incompatible: stream classdesc
Apache Spark
Spark Context (cliente)
Apache Spark
● Exercícios
○ Usando como base o código de streaming do Twitter, salvar as informações no Cassandra.
● Desafio
○ Usar o conector para Kafka para receber os dados de Produtos e Vendas do exercício
anterior via s]treaming.
Conclusões
● Existem muitas (muitas!) opções para processamento de dados em Big Data
● Sugestões:
○ Apache Parquet
○ Apache Mesos
○ MLLib
Outros frameworks de Big Data
● Streaming
○ Storm
● Filas
○ Flume
● Multi-NoSQL
○ Apache Drill
● Gerenciador de Hadoop
○ Apache Falcon
○ Apache Flink
○ Apache Apex
● Exploração e Visualização
○ Apache Zepellin
Referências
● Hadoop
○ http://www.cloudera.com/developers/get-started-with-hadoop-tutorial.html
● Spark
○ https://www.mapr.com/blog/spark-streaming-and-twitter-sentiment-analysis
○ https://databricks.gitbooks.io/databricks-spark-reference-applications/content/twitter_classifier/
collect.html
● Arquitetura Lambda
○ http://www.devmedia.com.br/conheca-a-arquitetura-lambda-em-java/32646
Referências
● Mesos
○ https://abhishek-tiwari.com/post/building-distributed-systems-with-mesos
● Kafka
○ https://www.mapr.com/blog/getting-started-sample-programs-apache-kafka-09
Referências
● Parquet
○ http://www.infoworld.com/article/2915565/big-data/apache-parquet-paves-the-way-towards-bet
ter-hadoop-data-storage.html

Processamento em Big Data