Tecnologias para Gerenciamento
de Dados na Era
do Big Data
Victor Teixeira de Almeida1,2
Vitor Alcântara Batista1
1PETROBRAS
Importante
A Petrobras não é responsável por qualquer informação contida nesta apresentação. Todas as opiniões aqui emitidas
Cientista de dados (data scientist)
An individual responsible for modeling complex business problems, discovering business insights and identifying opportunities through the use of statistical,
algorithmic, mining and visualization techniques. In addition to advanced analytic skills, this individual is also proficient at integrating and preparing large, varied datasets, architecting specialized database and computing environments, and communicating results. A data scientist may or may not have specialized industry knowledge to aid in modeling business problems and with understanding and preparing data.
Soft Skills: Communication, Collaboration, Leadership, Creativity, Discipline, Passion
Fonte: Gartner, “Emerging Role of the Data Scientist and the Art of Data Science” Published: 20 March 2012 ID:G00227058
Cientista de dados (data scientist)
An individual responsible for modeling complex business problems, discovering business insights and identifying opportunities through the use of statistical,
algorithmic, mining and visualization techniques. In addition to advanced analytic skills, this individual is also proficient at integrating and preparing large, varied datasets, architecting specialized database and computing environments, and communicating results. A data scientist may or may not have specialized industry knowledge to aid in modeling business problems and with understanding and preparing data.
Soft Skills: Communication, Collaboration, Leadership, Creativity, Discipline, Passion
Fonte: Gartner, “Emerging Role of the Data Scientist and the Art of Data Science” Published: 20 March 2012 ID:G00227058
Tecnologias para Gerenciamento de Dados na Era do Big Data • Objetivo:
• Este minicurso pretende apresentar as tecnologias atuais utilizadas para gerenciamento de dados
• Ao final deste minicurso, vocês serão capazes de
entender as principais diferenças entre as tecnologias existentes e de eventualmente definir a melhor
Big Data
Tecnologias de big data
• Escalabilidade horizontal
. . .
Processamento massivamente paralelo
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
Tecnologias de Big Data
• O problema da contagem de triângulos
• SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
Contagem de triângulos
• Importante para determinar o coeficiente de agrupamento de um vértice (indivíduo), ou te todo o grafo (twitter)
• Simples representação • Complexa execução Twitter(follower,followee) SELECT COUNT(*) FROM Twitter as R, Twitter as S, Twitter as T
WHERE R.followee = S.follower AND S.followee = T.follower AND T.followee = R.follower AND R.follower < S.follower AND S.follower < T.follower;
Tecnologias de Big Data
• O problema da contagem de triângulos
• SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
SGBD Relacional
Projeção π Renomear ρ Seleção σ Agregação ϒSQL
Junção • Álgebra relacional • Controle de concorrência e transações (ACID)• Linguagem de consulta padrão declarativa (SQL)
• Índices para facilitar o acesso aos dados
SELECT COUNT(*)
FROM R, S, T
WHERE R.x = S.x
AND S.y = T.y;
Otimização de consultas (e.g. junções)
Ordem R S T R S T R T S S T R Algoritmo R SNested loops join Sort-merge join Merge join
Hash join ...
Demonstração
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas
• SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
SGBD orientado a colunas
ID NOME DT_NASC TEL
1 João da Silva 5/8/1986 99872-6482 2 Manuel Carlos 3/12/1977 99512-9697 3 Júlia Almeida 12/1/1991 99787-9232 4 Maria José 1/9/1979 99588-3248 5 Alberto Jr. 23/2/1980 99784-9885 6 Ana Carolina 21/8/1999 99875-3214 1 João da Silva 5/8/1986 99872-6482 2 Manuel Carlos 3/12/1977 99512-9697 3 Júlia Almeida 12/1/1991 99787-9232 4 Maria José 1/9/1979 99588-3248 . . . 1 2 3 4 5 6 João da Silva Manuel Carlos Júlia Almeida Maria José Alberto Jr. 5/8/1986 3/12/1977 12/1/1991 1/9/1979 23/2/1980 99872-6482 99512-9697 99787-9232 99588-3248 99784-9885 99875-3214 orientado a linhas orientado a colunas OLTP OLAP
SGBD orientado a colunas
coluna fname Dicionário de fname Vetor de atributos de fname
Conversão Tabular -> Colunar
Compressão de dados
• A taxa de compressão dos dados depende da Cardinalidade/Entropia:
• Cardinalidade:
• Na representação tabular é o número de tuplas
• Na representação colunar é o número de valores distintos na coluna • Entropia:
SGBDs orientados a colunas
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas
• SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
SGBD em memória
pg_id página (4k, 8k, 16k) 234523 ÇLAEUIRQO8WY8098Y91 476848 Q9U8-9J DÍPOAUSEAUS´9 900321 JP98QW34U50982UR´P0 784651 QPPPPAJ809SGHA98SHG 345313 IJAF´PSDJFAPS09JP9203J 768874 JPONIDFPASD90QW8J98 105609 A98SJHAF07SHDF0A78SCache de disco em memória (e.g. LRU)
Log de transações Base de dados Gerenciador de páginas Gerenciador de transações Operação de E/S
SGBD em memória
Gerenciador de transações Operação de E/S 1 2 3 4 5 6 João da Silva Manuel Carlos Júlia Almeida Maria José Alberto Jr. Ana Carolina 5/8/1986 3/12/1977 12/1/1991 1/9/1979 23/2/1980 21/8/1999 99872-6482 99512-9697 99787-9232 99588-3248 99784-9885 99875-3214Visão geral de um banco de dados em memória e
colunar
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
SGBD MPP
• Dados distribuídos (particionamento horizontal) • Processamento (algoritmos) paralelo de consultas • OLAPSGBD MPP
AlgoritmoR S
Hash(x)
Demonstração
• Contando triângulos em um SGBD MPP (Myria)
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
Hadoop
• Software livre (Apache Software Foundation) • Sistema de arquivos distribuído (HDFS)
HDFS
• Arquivos divididos em blocos (default 64MB)
• Cada bloco é replicado em algumas poucas máquinas no cluster (default 3)
NameNode
DataNode DataNode DataNode DataNode
Replicação de dados, Balanceamento, monitoramento
DataNode escreve em disco local
Cliente HDFS
MapReduce
• Framework de processamento paralelo • Tolerância a falhas
Exemplo
Exemplo (WordCount)
dog cat dog dog fox doglion cat dog dog lion fox cat
Demonstração
Hive
• Desenvolvido pelo Facebook
• Mantido atualmente por Facebook, Netflix, dentre outros
• HiveQL, linguagem similar a SQL, abstraindo funções MapReduce
• Não cria um SGBD, simplesmente executa jobs MapReduce
hive> CREATE TABLE twitter(follower INT, followee INT);
hive> LOAD DATA INPATH '/input/twitter' OVERWRITE INTO TABLE twitter;
hive> SELECT COUNT(*)
Demonstração
Pig
• Desenvolvido pela Yahoo! ~2006 • Movido para o Hadoop em 2007
• Linguagem (Pig Latin) de alto nível para abstrair a linguagem Java
grunt> Twitter_1 = LOAD '/input/twitter' USING PigStorage(' ') AS (follower:int, followee:int); grunt> Twitter_2 = LOAD '/input/twitter' USING PigStorage(' ') AS (follower:int, followee:int); grunt> Twitter_SelfJoin = JOIN Twitter_1 by $1, Twitter_2 by $0;
grunt> Twitter_SelfJoin_Grp = GROUP Twitter_SelfJoin ALL;
grunt> Twitter_SelfJoin_Cnt = FOREACH Twitter_SelfJoin_Grp GENERATE COUNT(Twitter_SelfJoin); grunt> DUMP Twitter_SelfJoin_Cnt;
Demonstração
Apache Spark
• Spark: Hadoop em memória
• Ideia: alteração do mecanismo de tolerância a falhas
• não-falha: execução mais rápida (dados em memória, sem necessidade de salvar em disco cada resultado)
• falha: execução mais lenta (rollback de diversas etapas do processo, não somente uma como no Hadoop)
100x mais rápido
Apache Spark
RDD (Resilient Distributed Dataset)
• É a unidade básica de dados do Spark
• A maior parte de um programa Spark são operações sobre um RDD
• RDD
• Resilient – Se o dado for perdido, ele pode ser recuperado • Distributed – Armazenado na memória em um cluster
• Dataset – Dados iniciais podem ser lidos de uma fonte (HDFS, Amazon S3, Hbase, Cassandra) ou poder ser criados
Funcionamento do Spark
• Um RDD é distribuído entre os nós do cluster
• Por padrão o Spark particiona os dados por bloco do HDFS, para RDDs baseados em um arquivo
Exemplo – Word Count
Dstreams (Discretized Streams)
• É uma abstração para um fluxo contínuo de RDDs
• A cada intervalo de tempo t, um RDD novo é criado com os dados recebidos
Spark MLlib
Mahout
• O projeto Apache Mahout decidiu migrar seus algoritmos para o Spark
Spark SQL e DataFrame
• Cria abstrações dos RDDs num formato semelhante a um banco de dados relacional
• As tabelas podem ser tratadas como os DataFrames do pandas (Python) e do R
Demonstração
Spark GraphX
• Fornece infraestrutura para processamento distribuído de Grafos no Spark
Spark GraphX
Spark GraphX
• Atualmente apenas 3 algoritmos implementados:
• PageRank
• Contagem de Triângulos
Demonstração
• Contando Triângulos usando GraphX
• Obs: a lógica é diferente. O algoritmo implementado conta o número de triângulos que cada nó participa. A soma em redundâncias.
Apache HAWQ e Cloudera Impala
• SGBD MPP em cima de HDFS • Sem uso de MapReduce
Tecnologias de Big Data
• O problema da contagem de triângulos • SGBD relacional
• SGBD relacional orientado a colunas • SGBD relacional em memória • SGBD MPP • Hadoop • MapReduce • Spark • Pig • SparkSQL • GraphX • Considerações finais
NoSQL
Visualização
• Preparação dos dados e modelagem
• 95% do tempo
• Execução dos modelos
• 5% do tempo
• Interpretação e visualização dos resultados
Futuro
• Database as a Service
• Escalabilidade automática
As a Service
Obrigado
Contatos:
Victor Teixeira de Almeida
victor.almeida@petrobras.com.br e valmeida@ic.uff.br Vitor Alcântara Batista