Pós QCon: Big Data
Experimentos realizados na Promob
Fernando Cicconeto
Sobre o trabalho
- Estudo em tópicos básicos de Big Data
- Experimento em análise de dados de eventos, gerados pelo Catalog3D
- Os eventos geram um grande volume de informação
- Um evento em si não significa muito
- Mas quando o conjunto é analisado, podemos obter informações úteis
- Problema: como armazenar e analisar um grande volume de dados?
Catalog3D
- Plataforma cloud para cadastro de itens 3D
- Modelos e Materiais 3D
- Web App onde é feito o cadastro e visualização
- Plugin cliente para o Promob - possibilita a utilização dos itens do Catalog3D
em projetos de ambientes
Catalog3D
Catalog3D
Dados do Catalog3D
- Cada vez que um item do Catalog3D é utilizado na aplicação cliente, é
gerado um registro
Dados do Catalog3D
- Estes registros são armazenados em uma coleção de documentos do
MongoDB
- Diariamente, são gerados cerca de 25000 registros
- Com o crescimento do volume de informação, realizar queries simples
tornou-se pouco performática
- Aumento do custo de armazenamento
- É necessário mudar a forma como são armazenados e consultados estes
dados
- Cenário para estudo de caso de Big Data
O que é Big Data?
- Grandes volumes de dados
- Estruturados ou não
- Gerados rapidamente ou em grande quantidade
- Podem ser gerados de diversas fontes diferentes, e não ter a mesma
estrutura
- Os dados podem ser analisados para auxiliar na tomada de decisões
estratégicas
- Pode consistir em um conjunto de dados tão grande e complexo, que um
sistema de banco de dados convencional é incapaz de lidar
Estudo de caso
- Ferramenta apresentada no QCon: Apache Spark
- Objetivo: estudar o Spark e analisar o comportamento da ferramenta sobre
os dados do Catalog3D
- Sistema para processamento de dados em cluster, de propósito geral
- Provê APIs de alto nível em várias linguagens: Java, Scala, Python, R
- Executa na JVM
- Pode ser executado um cluster com paralelismo entre nodos
- Conceito de RDD: Resilient Distributed Dataset
- Coleção de dados imutável, paralelizável e tolerante a falhas
- RDDs suportam dois tipos de operações
- Transformation: retorna um novo RDD. Exemplo: map
Apache Spark
Apache Spark
- Trabalha com diferentes data sources: arquivos locais, HDFS (Hadoop
Distributed File System), Amazon S3, bancos de dados, etc.
- Exemplo de RDD gerado a partir de um arquivo local:
- val rdd = sc.textFile("README.md")
- Cada linha do arquivo-texto é considerada um registro
- Conceitos de programação funcional (Gabriel Milani)
- Higher-order functions - val linesWithSpark = rdd.filter(line =>
line.contains("Spark"))
- Lazy evaluation: transformations somente são processadas ao executar uma action - val
count = linesWithSpark.count()
Apache Spark
- Console: spark-shell
- Self-contained applications: aplicações que são escritas e “deployadas” para
o Spark
- Possibilidade de trabalhar com dados estruturados ou não
- Dados não-estruturados: RDD puro. Ex.: arquivo-texto, CSV
- Dados estruturados: Spark SQL. Ex.: arquivos JSON, conexão direta com banco de dados
- O Spark SQL é uma API de extensão do Spark. Há outras, para variados
propósitos:
- mllib: machine learning
Voltando ao estudo de caso...
- Aqui trabalharemos com dados estruturados, em arquivos JSON
- Portanto, será usado o Spark SQL
- Spark SQL permite o processamento de dados estruturados, utilizando a
linguagem SQL para fazer consultas
- Exemplo:
val items = sqlContext.read.json("items-insertion.json")
items.createOrReplaceTempView("items")
val itemIds = sqlContext.sql("SELECT itemId FROM items")
Estrutura da aplicação
- Particionamento dos dados: para cada data, é criado um arquivo JSON
contendo as inserções daquela data: 2017-05-21, 2017-05-22, etc
- Self-contained applications que fazem processamento em batch (lotes)
- Ao fazer o deploy da aplicação, o batch será executado, salvando o resultado
em um outro conjunto de arquivos
- Linguagem Scala
- Exemplo: itens mais inseridos em cada dia
Estrutura da aplicação
- MostInserted
- src
- main
- scala
- MostInserted.scala
- 2017-05-21
- 2017-05-22
- 2017-05-23
- 2017-05-24
MostInserted.scala
build.sbt
Deploy
sbt package
spark-submit --class MostInserted target/scala-2.11/most-inserted-items_2.11-1.0.jar
Resultados
Considerações finais
- O Spark trata-se de uma solução viável para o problema dos dados de
inserção do Catalog3D
- Escalabilidade: possibilidade de configurar clusters e executar
processamento paralelo um mesmo conjunto de dados
- A AWS fornece a opção de configurar clusters e fazer o deploy diretamente
através de uma interface web - Amazon EMR.
- Por outro lado, há uma curva de aprendizagem elevada. Há vários conceitos
a serem entendidos.
- Para o problema em questão, que é relativamente simples, é possível aplicar
a estrutura de dados e alguns conceitos do Spark para a criação de jobs
Perguntas?
Dúvidas?
Colaborações?
fernando@promob.com
Muito obrigado!!!

Mais conteúdo relacionado

PDF
Como arquiteturas de dados quebram
PPTX
NOSQL uma breve introdução
PDF
Introdução ao NoSql
PPTX
No sql Orientado a documento
PDF
Cassandra Trip Brasil
PDF
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
PDF
MongoDB e Bancos de Dados Orientados a Documentos
PDF
Bancos de dados NoSQL
Como arquiteturas de dados quebram
NOSQL uma breve introdução
Introdução ao NoSql
No sql Orientado a documento
Cassandra Trip Brasil
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
MongoDB e Bancos de Dados Orientados a Documentos
Bancos de dados NoSQL

Mais procurados (20)

PPTX
Introdução ao MongoDB (NoSQL)
PDF
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
PPTX
Seminário - NoSQL
PDF
Desenvolvendo Aplicações baseadas em Big Data com PySpark
PDF
Material Seminário NoSQL
PDF
No sql e as vantagens na utilização do mongodb
PDF
Bancos de dados nosql (not only sql)
PPTX
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
ODT
Nosql
PDF
Secot banco de dados no sql de código aberto
PDF
Fisl banco de dados no sql de código aberto
PPTX
SQL SAT Salvador - Arquitetando Data Lake Multicloud
PDF
Mongo db no mundo real slides
PDF
DevDay - MongoDb no mundo real - slides
PPTX
Machine learning com Apache Spark
PDF
Tirando água da rocha: escalabilidade via software no ExpressoV3
PPTX
Big Data com MATLAB (Tiago Monteiro), Webinar ao vivo
PDF
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
DOCX
Introdução ao MongoDB (NoSQL)
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Seminário - NoSQL
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Material Seminário NoSQL
No sql e as vantagens na utilização do mongodb
Bancos de dados nosql (not only sql)
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Nosql
Secot banco de dados no sql de código aberto
Fisl banco de dados no sql de código aberto
SQL SAT Salvador - Arquitetando Data Lake Multicloud
Mongo db no mundo real slides
DevDay - MongoDb no mundo real - slides
Machine learning com Apache Spark
Tirando água da rocha: escalabilidade via software no ExpressoV3
Big Data com MATLAB (Tiago Monteiro), Webinar ao vivo
Hands-on Workshop: Como configurar e utilizar uma estrutura MongoDB para Big ...
Anúncio

Semelhante a Pos-QCon-BigData (20)

PPTX
Introdução no sql mongodb java
PDF
Primeiros Passos Com Elasticsearch
PPTX
Como construir sua primeira aplicação de Big Data na AWS
PDF
Mongo DB
PDF
PostgreSQL-Prático.pdf
PDF
Big data para programadores convencionais
PDF
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
PDF
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
PPTX
Bancos de Dados Orientados a Objetos
PPTX
BANCO DE DADOS.pptx
PDF
Bigadata casese opotunidades
PPTX
Alinguagem SQL no mundo NOSQL
PDF
Introdução ao MongoDB: conceitos e práticas
PPTX
MongoDB - Performance e Escalabilidade para aplicações web
PPTX
Apresentação no Meetup da Elastic em Florianopolis
PDF
Tecnologias para mineração de dados nas nuvens
PPT
CouchDB Presentation
PDF
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
ODP
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
PDF
Mongodb workshop cinlug
Introdução no sql mongodb java
Primeiros Passos Com Elasticsearch
Como construir sua primeira aplicação de Big Data na AWS
Mongo DB
PostgreSQL-Prático.pdf
Big data para programadores convencionais
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
Bancos de Dados Orientados a Objetos
BANCO DE DADOS.pptx
Bigadata casese opotunidades
Alinguagem SQL no mundo NOSQL
Introdução ao MongoDB: conceitos e práticas
MongoDB - Performance e Escalabilidade para aplicações web
Apresentação no Meetup da Elastic em Florianopolis
Tecnologias para mineração de dados nas nuvens
CouchDB Presentation
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Mongodb workshop cinlug
Anúncio

Último (12)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Tipos de servidor em redes de computador.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PDF
Jira Software projetos completos com scrum
PPTX
Utilizando code blockes por andre backes
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Processos no SAP Extended Warehouse Management, EWM100 Col26
Tipos de servidor em redes de computador.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Analise Estatica de Compiladores para criar uma nova LP
Conceitos básicos de Redes Neurais Artificiais
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Jira Software projetos completos com scrum
Utilizando code blockes por andre backes
Proposta de Implementação de uma Rede de Computador Cabeada.pptx

Pos-QCon-BigData

  • 1. Pós QCon: Big Data Experimentos realizados na Promob Fernando Cicconeto
  • 2. Sobre o trabalho - Estudo em tópicos básicos de Big Data - Experimento em análise de dados de eventos, gerados pelo Catalog3D - Os eventos geram um grande volume de informação - Um evento em si não significa muito - Mas quando o conjunto é analisado, podemos obter informações úteis - Problema: como armazenar e analisar um grande volume de dados?
  • 3. Catalog3D - Plataforma cloud para cadastro de itens 3D - Modelos e Materiais 3D - Web App onde é feito o cadastro e visualização - Plugin cliente para o Promob - possibilita a utilização dos itens do Catalog3D em projetos de ambientes
  • 6. Dados do Catalog3D - Cada vez que um item do Catalog3D é utilizado na aplicação cliente, é gerado um registro
  • 7. Dados do Catalog3D - Estes registros são armazenados em uma coleção de documentos do MongoDB - Diariamente, são gerados cerca de 25000 registros - Com o crescimento do volume de informação, realizar queries simples tornou-se pouco performática - Aumento do custo de armazenamento - É necessário mudar a forma como são armazenados e consultados estes dados - Cenário para estudo de caso de Big Data
  • 8. O que é Big Data? - Grandes volumes de dados - Estruturados ou não - Gerados rapidamente ou em grande quantidade - Podem ser gerados de diversas fontes diferentes, e não ter a mesma estrutura - Os dados podem ser analisados para auxiliar na tomada de decisões estratégicas - Pode consistir em um conjunto de dados tão grande e complexo, que um sistema de banco de dados convencional é incapaz de lidar
  • 9. Estudo de caso - Ferramenta apresentada no QCon: Apache Spark - Objetivo: estudar o Spark e analisar o comportamento da ferramenta sobre os dados do Catalog3D
  • 10. - Sistema para processamento de dados em cluster, de propósito geral - Provê APIs de alto nível em várias linguagens: Java, Scala, Python, R - Executa na JVM - Pode ser executado um cluster com paralelismo entre nodos - Conceito de RDD: Resilient Distributed Dataset - Coleção de dados imutável, paralelizável e tolerante a falhas - RDDs suportam dois tipos de operações - Transformation: retorna um novo RDD. Exemplo: map Apache Spark
  • 11. Apache Spark - Trabalha com diferentes data sources: arquivos locais, HDFS (Hadoop Distributed File System), Amazon S3, bancos de dados, etc. - Exemplo de RDD gerado a partir de um arquivo local: - val rdd = sc.textFile("README.md") - Cada linha do arquivo-texto é considerada um registro - Conceitos de programação funcional (Gabriel Milani) - Higher-order functions - val linesWithSpark = rdd.filter(line => line.contains("Spark")) - Lazy evaluation: transformations somente são processadas ao executar uma action - val count = linesWithSpark.count()
  • 12. Apache Spark - Console: spark-shell - Self-contained applications: aplicações que são escritas e “deployadas” para o Spark - Possibilidade de trabalhar com dados estruturados ou não - Dados não-estruturados: RDD puro. Ex.: arquivo-texto, CSV - Dados estruturados: Spark SQL. Ex.: arquivos JSON, conexão direta com banco de dados - O Spark SQL é uma API de extensão do Spark. Há outras, para variados propósitos: - mllib: machine learning
  • 13. Voltando ao estudo de caso... - Aqui trabalharemos com dados estruturados, em arquivos JSON - Portanto, será usado o Spark SQL - Spark SQL permite o processamento de dados estruturados, utilizando a linguagem SQL para fazer consultas - Exemplo: val items = sqlContext.read.json("items-insertion.json") items.createOrReplaceTempView("items") val itemIds = sqlContext.sql("SELECT itemId FROM items")
  • 14. Estrutura da aplicação - Particionamento dos dados: para cada data, é criado um arquivo JSON contendo as inserções daquela data: 2017-05-21, 2017-05-22, etc - Self-contained applications que fazem processamento em batch (lotes) - Ao fazer o deploy da aplicação, o batch será executado, salvando o resultado em um outro conjunto de arquivos - Linguagem Scala - Exemplo: itens mais inseridos em cada dia
  • 15. Estrutura da aplicação - MostInserted - src - main - scala - MostInserted.scala - 2017-05-21 - 2017-05-22 - 2017-05-23 - 2017-05-24
  • 18. Deploy sbt package spark-submit --class MostInserted target/scala-2.11/most-inserted-items_2.11-1.0.jar
  • 20. Considerações finais - O Spark trata-se de uma solução viável para o problema dos dados de inserção do Catalog3D - Escalabilidade: possibilidade de configurar clusters e executar processamento paralelo um mesmo conjunto de dados - A AWS fornece a opção de configurar clusters e fazer o deploy diretamente através de uma interface web - Amazon EMR. - Por outro lado, há uma curva de aprendizagem elevada. Há vários conceitos a serem entendidos. - Para o problema em questão, que é relativamente simples, é possível aplicar a estrutura de dados e alguns conceitos do Spark para a criação de jobs