112
DATA LAKES COM HADOOP E SPARK AGILE ANALYTICS NA PRÁTICA Ricardo Wendell [email protected] João Paulo [email protected]

Data Lakes com Hadoop e Spark: Agile Analytics na prática

Embed Size (px)

Citation preview

Page 1: Data Lakes com Hadoop e Spark: Agile Analytics na prática

DATA LAKES COM HADOOP E SPARK

AGILE ANALYTICS NA PRÁTICA

Ricardo Wendell [email protected]

João Paulo [email protected]

Page 2: Data Lakes com Hadoop e Spark: Agile Analytics na prática

AGENDA

Introdução

Data Warehousing e projetos tradicionais

Arquiteturas de Data Lake

Hadoop e Spark

Tópicos relacionados

Conclusão2

Page 3: Data Lakes com Hadoop e Spark: Agile Analytics na prática

INTRODUÇÃO

3

Page 4: Data Lakes com Hadoop e Spark: Agile Analytics na prática

4Fonte: http://socialtimes.com/one-minute-internet-infographic_b147855

Page 5: Data Lakes com Hadoop e Spark: Agile Analytics na prática

5

BIG DATA

Page 6: Data Lakes com Hadoop e Spark: Agile Analytics na prática

6

BIG DATAV V V V

Page 7: Data Lakes com Hadoop e Spark: Agile Analytics na prática

7

VOLUME

“DADOS EM REPOUSO”

Page 8: Data Lakes com Hadoop e Spark: Agile Analytics na prática

8

VOLUME2.5 QUINTILHÕES DE BYTES GERADOS POR DIA!

Page 9: Data Lakes com Hadoop e Spark: Agile Analytics na prática

9

VELOCIDADE

“DADOS EM MOVIMENTO”

Page 10: Data Lakes com Hadoop e Spark: Agile Analytics na prática

10

VARIEDADE

“DADOS EM MUITOS FORMATOS”

Page 11: Data Lakes com Hadoop e Spark: Agile Analytics na prática

11

VERACIDADE

“DADOS EM DÚVIDA”

Page 12: Data Lakes com Hadoop e Spark: Agile Analytics na prática

12

DATA SCIENCE

Page 13: Data Lakes com Hadoop e Spark: Agile Analytics na prática

13

Page 14: Data Lakes com Hadoop e Spark: Agile Analytics na prática

14Fonte: http://www.shoesofprey.com/blog/pic/ahFzfnNob2Vzb2ZwcmV5LWhyZHIWCxINQmxvZ0ltYWdlRGF0YRiWxuoJDA.jpg

Page 15: Data Lakes com Hadoop e Spark: Agile Analytics na prática

15Fonte: http://ecx.images-amazon.com/images/I/81D5CBkXL6L._SL1500_.jpg

Page 16: Data Lakes com Hadoop e Spark: Agile Analytics na prática

16Fonte: http://www.portalgildabonfim.com.br/site/wp-content/uploads/2014/02/beneficios-da-castanha-do-para-na-barra-de-cereal.png

Page 17: Data Lakes com Hadoop e Spark: Agile Analytics na prática

17

Page 18: Data Lakes com Hadoop e Spark: Agile Analytics na prática

OPORTUNIDADES

18

VAREJO FINANÇAS SAÚDE MOBILE ONGS FÁBRICAS

Page 19: Data Lakes com Hadoop e Spark: Agile Analytics na prática

OPORTUNIDADES

19

VAREJO FINANÇAS SAÚDE MOBILE ONGS FÁBRICAS

Security/Fraud Analytics

Audio/Image/Video Analytics

Text Analytics

Sensor Data Analytics (IoT)

Marketing Analytics

Page 20: Data Lakes com Hadoop e Spark: Agile Analytics na prática

20

DATA SCIENTIST

DATA ENGINEER

Page 21: Data Lakes com Hadoop e Spark: Agile Analytics na prática

21Fonte: https://www.flickr.com/photos/marsdd/2986989396

Page 22: Data Lakes com Hadoop e Spark: Agile Analytics na prática

22Fonte: http://www.forbes.com/sites/danwoods/2014/08/28/why-you-should-hire-a-robot-to-write-for-you/

Page 23: Data Lakes com Hadoop e Spark: Agile Analytics na prática

23

O S E M N

Page 24: Data Lakes com Hadoop e Spark: Agile Analytics na prática

24

O S E M N

Page 25: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ABORDAGENS TRADICIONAIS

25

Page 26: Data Lakes com Hadoop e Spark: Agile Analytics na prática

DATAWAREHOUSE MULTI-CAMADAS GENÉRICO

26

Page 27: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ANALYTICS TRADICIONAL

27

Page 28: Data Lakes com Hadoop e Spark: Agile Analytics na prática

DATA WAREHOUSING E BI

28

Page 29: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ABORDAGENS TRADICIONAIS

29

Page 30: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ABORDAGENS TRADICIONAIS

30

Grande foco em TI!

Page 31: Data Lakes com Hadoop e Spark: Agile Analytics na prática

“Data warehousing e BI são os maiores gastos no orçamento de CIOs, e têm tido

limitado valor para os negócios.”

— Jeff Smith, CIO da IBM

31

Page 32: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Difere

nciação

O que aconteceu?

DescritivoPor que aconteceu?

Diagnóstico

O que irá acontecer?

Preditivo Como podemos fazer acontecer?

PrescritivoVa

lor

Complexidade

Page 33: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Valo

r

Complexidade

Difere

nciação

O que aconteceu?

DescritivoPor que aconteceu?

Diagnóstico

O que irá acontecer?

Preditivo Como podemos fazer acontecer?

Prescritivo

DATA SCIENCE

BI TRADICIONAL

Page 34: Data Lakes com Hadoop e Spark: Agile Analytics na prática

34

2012

Page 35: Data Lakes com Hadoop e Spark: Agile Analytics na prática

35

HOJE

Page 36: Data Lakes com Hadoop e Spark: Agile Analytics na prática

DATA LAKES E AGILE ANALYTICS

36

Page 37: Data Lakes com Hadoop e Spark: Agile Analytics na prática

37

Fonte: http://martin.kleppmann.com/2015/05/27/logs-for-data-infrastructure.html

Page 38: Data Lakes com Hadoop e Spark: Agile Analytics na prática

38

Fonte: http://martin.kleppmann.com/2015/05/27/logs-for-data-infrastructure.html

Page 39: Data Lakes com Hadoop e Spark: Agile Analytics na prática

39

Fonte: http://martin.kleppmann.com/2015/05/27/logs-for-data-infrastructure.html

Page 40: Data Lakes com Hadoop e Spark: Agile Analytics na prática

40

Fonte: http://martin.kleppmann.com/2015/05/27/logs-for-data-infrastructure.html

Page 41: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ARQUITETURA LAMBDA

41

Page 42: Data Lakes com Hadoop e Spark: Agile Analytics na prática

42

ARQUITETURA LAMBDA

Page 43: Data Lakes com Hadoop e Spark: Agile Analytics na prática

43

ARQUITETURA LAMBDA

Page 44: Data Lakes com Hadoop e Spark: Agile Analytics na prática

44

ARQUITETURA LAMBDA

Page 45: Data Lakes com Hadoop e Spark: Agile Analytics na prática

45

PIPELINE DE DADOS ADAPTATIVO

Page 46: Data Lakes com Hadoop e Spark: Agile Analytics na prática

QUAL O NOSSO DESAFIO?

Dados contidos em múltiplos sistemas

Que são frequentemente armazenados em diferentes formatos

E idealmente ter uma fonte da verdade, de onde derivar os dados

46

Page 47: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Pense em um datamart como uma loja de garrafas

de água: limpa, embalada e organizada para fácil

consumo; o lago de dados é um grande corpo de

água em um estado mais natural.

O conteúdo do lago de dados flui de uma fonte para preencher o lago, e vários usuários podem

vir examinar, mergulhar ou pegar amostras.

James Dixon, CTO of Pentaho

47

Page 48: Data Lakes com Hadoop e Spark: Agile Analytics na prática

An Enterprise Data Lake is an immutable data store of largely un-processed “raw” data, acting as a source for other

processing streams but also made directly available to a

significant number of internal, technical consumers using some

efficient processing engine. Examples include HDFS or HBase within a Hadoop, Spark or Storm processing framework. We

can contrast this with a typical system that collects raw data

into some highly restricted space that is only made available to

these consumers as the end result of a highly controlled ETL

process.

ThoughtWorks Tech Radar

48

Page 49: Data Lakes com Hadoop e Spark: Agile Analytics na prática

PROPRIEDADES DE DATA LAKES

A ingestão dos dados deve ser "push based", ou seja, os dados devem ser "empurrados" para o sistema ao invés de serem ingeridos periodicamente através de processamentos em lote

Os dados ingeridos devem ser armazenados na sua forma mais pura

A solução deve ser escalável horizontalmente, em termos de capacidade de armazenamento e processamento

Não serve ao usuário final, mas sim a usuários técnicos49

Page 50: Data Lakes com Hadoop e Spark: Agile Analytics na prática

OBJETIVOS DO DATA LAKE

Reduzir o custo da ingestão de novos tipos de dados

Diminuir o tempo que leva para que atualizações nos sistemas operacionais cheguem até os sistemas analíticos

Permitir o processamento de volumes de dados bem maiores que os sistemas de DW tradicionais

50

Page 51: Data Lakes com Hadoop e Spark: Agile Analytics na prática

OBJETIVOS DO DATA LAKE

Eliminar gargalos devido à falta de desenvolvedores especializados em ETL ou à excessivo up front design do modelo de dados

Empoderar desenvolvedores a criarem seus próprios pipelines de processamento de dados de uma maneira ágil — quando for preciso e da forma que for preciso — dentro de limites razoáveis

51

Page 53: Data Lakes com Hadoop e Spark: Agile Analytics na prática

53

Page 54: Data Lakes com Hadoop e Spark: Agile Analytics na prática

54

AGILE ANALYTICS

Page 55: Data Lakes com Hadoop e Spark: Agile Analytics na prática

55

O S E M N

Page 56: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Data Scientist Data Engineer Delivery Team

DESCOBRIR ENTREGAREXPERIMENTAR

HIPÓTESE

PROTÓTIPO

PESQUISA

Ideias

Coletar feedack

CONSUMERS

AGILE ANALYTICS

56

Page 57: Data Lakes com Hadoop e Spark: Agile Analytics na prática

57

Conhecimento acionável

Data Science

Data Engineering

Entrega Contínua

Aprendizado Lean

Insights acionáveis=

Page 58: Data Lakes com Hadoop e Spark: Agile Analytics na prática

MÉTODOS TRADICIONAIS E AGILE ANALYTICS

58

Page 59: Data Lakes com Hadoop e Spark: Agile Analytics na prática

PARALELISMO

59

Page 60: Data Lakes com Hadoop e Spark: Agile Analytics na prática

PARALELISMO: DUAS ABORDAGENS

Task Parallel programming

Data parallel programming

60

Page 61: Data Lakes com Hadoop e Spark: Agile Analytics na prática

||-ISMO DE DADOS

Foco em distribuir os dados através de diferentes nós de computação paralela

Cada processador executa a mesma tarefa em diferentes fatias de dados distribuídos

Enfatiza a natureza distribuída dos dados, em oposição ao processamento

61

Page 62: Data Lakes com Hadoop e Spark: Agile Analytics na prática

EXEMPLO

define foo(array d)

if CPU = "a"

lower_limit := 1

upper_limit := round(d.length/2)

else if CPU = "b"

lower_limit := round(d.length/2) + 1

upper_limit := d.length

for i from lower_limit to upper_limit by 1

do_something_with(d[i])

end

62

Page 63: Data Lakes com Hadoop e Spark: Agile Analytics na prática

EXEMPLO

define foo(array d)

if CPU = "a"

lower_limit := 1

upper_limit := round(d.length/2)

else if CPU = "b"

lower_limit := round(d.length/2) + 1

upper_limit := d.length

for i from lower_limit to upper_limit by 1

do_something_with(d[i])

end

63

Acoplamento do código ao número de CPUs da máquina

Você precisa se preocupar em como dividir os dados através dos diferentes nós de computação

Você precisa se preocupar explicitamente em como acumular e consolidar a saída final a partir das

computações em paralelo

Page 64: Data Lakes com Hadoop e Spark: Agile Analytics na prática

COMO UM DESENVOLVEDOR…

Eu quero escrever meu código de tal maneira que ele possa ser executado em paralelo

Eu não quero escrever código baseado em quantas CPUs/máquinas tenho disponíveis no data center

Eu não quero me preocupar em como os dados de entrada devem ser divididos para a execução em paralelo

Eu não quero me preocupar em como a saída final deve ser acumulada e consolidada a partir das unidades rodando em paralelo

64

Page 65: Data Lakes com Hadoop e Spark: Agile Analytics na prática

65

Objetivo Tornar disponível online seu arquivo de 11 milhões de artigos, desde 1851

Tarefa Converter 4TB de imagens TIFF para PDFs

Page 66: Data Lakes com Hadoop e Spark: Agile Analytics na prática

66

Solução Amazon Elastic Compute Cloud (EC2) e Simple Storage System (S3)

Tempo ? Custo ?

Page 67: Data Lakes com Hadoop e Spark: Agile Analytics na prática

67

Solução Amazon Elastic Compute Cloud (EC2) e Simple Storage System (S3)

Em menos de 24h por cerca de $240

Page 68: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HADOOP

68

Page 69: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HADOOP

Framework para armazenamento e computação distribuída para processamento de dados em larga escala

Não impõe restrição aos formatos dos dados sendo processados

Projeto da Apache Software Foundation

Implementado em Java, suportado em todas as plataformas *nix, Windows

Objetivo: computação/armazenamento linearmente escalável usando hardware comum

69

Page 70: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HADOOP

70Fonte: http://hortonworks.com/blog/apache-hadoop-2-is-ga/

Page 71: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HDFS

Sistema de arquivos distribuído Cada arquivo pode estar espalhado por múltiplos nós Clientes podem acessar arquivos de qualquer nó, como se fosse local

Tolerância a falhas e alta disponibilidade

APIs Java/Scala Shell HDFS suporta vários comandos Interface web para navegar pelo sistema de arquivos

71

Page 72: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HDFS: PRINCIPAIS CONCEITOS

Sistema de arquivos hierárquico - similar a Unix/Linux

Metadados de arquivos e diretórios

nome, owner, group owner, permissões, status

Arquivos divididos em blocos, que são distribuídos

72

Page 73: Data Lakes com Hadoop e Spark: Agile Analytics na prática

REPLICAÇÃO DE BLOCOS

73

name:/users/wendell/arquivo.data, copies:2, blocks:{1,3} name:/users/jpaulo/dados.gzip, copies:3, blocks:{2,4,5}

NAMENODE (MASTER)

DATANODES (SLAVES)

1 12

2 24 5

33 4 4

55

Page 74: Data Lakes com Hadoop e Spark: Agile Analytics na prática

PARA QUE CENÁRIOS HDFS NÃO É TÃO BOM ASSIM?

Aplicações de baixa latência

Muitos arquivos pequenos

Acesso aleatório

Updates de dados

Algoritmos iterativos

74

Page 75: Data Lakes com Hadoop e Spark: Agile Analytics na prática

MAP REDUCE

75

MAP SORT / SHUFFLE REDUCE

Fonte: https://mm-tom.s3.amazonaws.com/blog/MapReduce.png

Page 76: Data Lakes com Hadoop e Spark: Agile Analytics na prática

MAP REDUCE: EXEMPLO

76Fonte: https://www.ibm.com/developerworks/community/blogs/bigdata-br/entry/infosphere_biginsights_notas_sobre_hadoop_mapreduce?lang=en

Page 77: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HANDS ON

77

Page 78: Data Lakes com Hadoop e Spark: Agile Analytics na prática

https://goo.gl/quFE6K

78

Page 79: Data Lakes com Hadoop e Spark: Agile Analytics na prática

79

SPARK

Page 80: Data Lakes com Hadoop e Spark: Agile Analytics na prática

PONTOS DE DOR COM MAPREDUCE

Latência

Limitado a fases de Map e Reduce

Não é trivial testar…

Pode resultar em fluxos complexos

Reuso de dados requer escrita no HDFS

80

Page 81: Data Lakes com Hadoop e Spark: Agile Analytics na prática

O QUE É APACHE SPARK?

Cluster Computing Engine

Abstrai o armazenamento e gerenciamento do cluster

Interface de dados unificada

Modelo de programação fácil

API em Scala, Python, Java, R

81

Page 82: Data Lakes com Hadoop e Spark: Agile Analytics na prática

82

Page 83: Data Lakes com Hadoop e Spark: Agile Analytics na prática

ONDE SPARK SE ENCAIXA NO ECOSSISTEMA HADOOP?

83

Page 84: Data Lakes com Hadoop e Spark: Agile Analytics na prática

SPARK E MODOS DE GERENCIAMENTO DO CLUSTER

Standalone

Apache Mesos

Hadoop YARN

84

Page 85: Data Lakes com Hadoop e Spark: Agile Analytics na prática

SPARK E ARMAZENAMENTO

HDFS

HBase

Cassandra

JDBC data sources

* Qualquer fonte de dados que ofereça um InputFormat Hadoop…

85

Page 86: Data Lakes com Hadoop e Spark: Agile Analytics na prática

EXEMPLO DE CONTADOR DE PALAVRAS

val file = sparkContext.textFile("input path")

val counts = file.flatMap(line => line.split(" "))

.map(word => (word, 1))

.reduceByKey((a, b) => a + b)

counts.saveAsTextFile("destination path")

86

Page 87: Data Lakes com Hadoop e Spark: Agile Analytics na prática

COMPARANDO COM MAPREDUCE…

87

Page 88: Data Lakes com Hadoop e Spark: Agile Analytics na prática

RDD: RESILIENT DISTRIBUTED DATASET

Coleção de objetos somente leitura

Particionados através de um conjunto de máquinas

Podem ser reconstruídos caso uma das partições seja perdida

Pode ser reutilizado

Pode ser cacheado em memória

88

Page 89: Data Lakes com Hadoop e Spark: Agile Analytics na prática

RDD: RESILIENT DISTRIBUTED DATASET

Lazily evaluated

Proporciona um reuso de dados eficiente

Várias operações para processamento de dados

89

Page 90: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Conjunto de partições (“splits”) +

Lista de dependências de outros RDDs +

Função para computar uma partição, dadas suas dependências

90

INTERFACE DOS RDDS

Page 91: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Transformações

Retorna um novo RDD com a transformação aplicada

Lazy

Podem ser encadeadas

Ações

Executam o DAG de transformações

91

OPERAÇÕES COM RDDS

Page 92: Data Lakes com Hadoop e Spark: Agile Analytics na prática

RDD: EXEMPLOS DE TRANSFORMAÇÕES

map(f : T ⇒ U) : RDD[T] ⇒ RDD[U]

filter(f : T ⇒ Bool) : RDD[T] ⇒ RDD[T]

flatMap(f : T ⇒ Seq[U]) : RDD[T] ⇒ RDD[U]

union() : (RDD[T],RDD[T]) ⇒ RDD[T]

join() : (RDD[(K, V)],RDD[(K, W)]) ⇒ RDD[(K, (V, W))]

groupByKey() : RDD[(K, V)] ⇒ RDD[(K, Seq[V])]

reduceByKey(f : (V,V) ⇒ V) : RDD[(K, V)] ⇒ RDD[(K, V)]

92

Page 93: Data Lakes com Hadoop e Spark: Agile Analytics na prática

count() : RDD[T] ⇒ Long

collect() : RDD[T] ⇒ Seq[T]

reduce(f : (T,T) ⇒ T) : RDD[T] ⇒ T

lookup(k : K) : RDD[(K, V)] ⇒ Seq[V]

93

RDD: EXEMPLOS DE AÇÕES

Page 94: Data Lakes com Hadoop e Spark: Agile Analytics na prática

TESTANDO…

94

Page 95: Data Lakes com Hadoop e Spark: Agile Analytics na prática

BENCHMARK DE ORDENAÇÃO DE PETABYTES

95

Page 96: Data Lakes com Hadoop e Spark: Agile Analytics na prática

SHUFFLE NÃO É OBRIGATÓRIO

Programas não ficam limitados a fases de map e reduce

Shuffle e sort não são mais obrigatórios entre fases

96

Page 97: Data Lakes com Hadoop e Spark: Agile Analytics na prática

IO REDUZIDO

Não é necessário IO de disco entre fases, devido ao pipeline de operações

Não há IO de rede a não ser que um shuffle seja necessário

97

Page 98: Data Lakes com Hadoop e Spark: Agile Analytics na prática

CACHEAMENTO DE DADOS EM MEMÓRIA

Cache opcional em memória

Engine do DAG pode aplicar otimizações, já que quando uma ação é chamada ele sabe todas as transformações a aplicar

98

Page 99: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HANDS ON

99

Page 100: Data Lakes com Hadoop e Spark: Agile Analytics na prática

IMPALA

100

Page 101: Data Lakes com Hadoop e Spark: Agile Analytics na prática

CLOUDERA IMPALA

101

Page 102: Data Lakes com Hadoop e Spark: Agile Analytics na prática

HANDS ON

102

Page 103: Data Lakes com Hadoop e Spark: Agile Analytics na prática

AVANÇANDO…

103

Page 104: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Zoo keeper

YARN / Mesos

Sqoop

Map Reduce Hive Impala

Hue

Cloudera

TABELA PERIÓDICA DO HADOOP

HDFS

Spark

Page 105: Data Lakes com Hadoop e Spark: Agile Analytics na prática

Zoo keeper

YARN / Mesos

Drill Spark SQL Tez

Oozie SqoopMahout Oryx

Map Reduce Hive Impala

H2O Lens Kylin

File Formats Avro,

Parquet, ORC

HBase

PIG

Cloudera Manager Hue Ambari

Cloudera Hortonworks MapR

TABELA PERIÓDICA DO HADOOP

HDFS

Presto

Falcon GiraphSinga Flume Storm Spark Streaming Samza Kafka Hama

Pivotal

Spark

REEF SamoaData Fu Crunch Book keeper Sentry Aurora Myriad Cascading

Phoenix

Page 106: Data Lakes com Hadoop e Spark: Agile Analytics na prática

NETFLIX ANALYTICS PIPELINE

106

Page 107: Data Lakes com Hadoop e Spark: Agile Analytics na prática

NETFLIX VISION

107

Page 108: Data Lakes com Hadoop e Spark: Agile Analytics na prática

LINKEDIN

108

Page 109: Data Lakes com Hadoop e Spark: Agile Analytics na prática

E MAIS UM EXEMPLO…

109

Page 110: Data Lakes com Hadoop e Spark: Agile Analytics na prática

CONCLUSÃO

110

Page 111: Data Lakes com Hadoop e Spark: Agile Analytics na prática

111

PENSE GRANDECOMECE PEQUENO