Slide 1

Slide 1 text

Data Engineering

Slide 2

Slide 2 text

2▸ ▹ ▸ Introdução ▸ Roadmap

Slide 3

Slide 3 text

YOU CAN ALSO SPLIT YOUR CONTENT 3 ▸ Instalar git: ▹ apt install git ▸ Instalar python 3: ▹ apt install python3 ▸ Instalar gcloud: ▹ apt install curl ▹ curl https://sdk.cloud.google.com | bash ▹ exec -l $SHELL ▹ gcloud init Antes de começar

Slide 4

Slide 4 text

Cloud Function 4

Slide 5

Slide 5 text

YOU CAN ALSO SPLIT YOUR CONTENT 5 ▸ Serverless ▸ Triggers ▹ Storage ▹ PubSub ▹ HTTP ▸ Várias linguagens: ▹ JS ▹ Python ▹ Go Function as a Service

Slide 6

Slide 6 text

YOU CAN ALSO SPLIT YOUR CONTENT 6 ▸ Pros: ▹ Fácil deploy ▹ Escalável ▸ Cons: ▹ Barato Function as a Service: prática

Slide 7

Slide 7 text

7 Demo

Slide 8

Slide 8 text

Beam 8

Slide 9

Slide 9 text

9▸ ▹ Dataflow model ▸ Dataflow model ▹Akidau, 2015 ▹“Modern data processing is a complex and exciting field.” ▹Junta dois papers: FlumeJava MillWheel ▹Batchs existentes Alta latência ▹Streaming existentes Tolerância a falhas, escalabilidade, latência Complexidade de janelamento

Slide 10

Slide 10 text

10 ▸ ▹ Dataflow model ▸ Dataflow model ▹Propõe um modelo de programação simples para processamento de dados Event time Processing time

Slide 11

Slide 11 text

11 ▸ ▹ Dataflow model ▸ Dataflow model ▹ Divide pipelines em 4 dimensões Quais resultados computados? Onde serão computados? (em event time) Quando serão materializados? (em processing time) Como refinar dados recentes mais tarde?

Slide 12

Slide 12 text

12 ▸ ▹ Streaming vs Batch ▸ Streaming vs Batch ▹Streaming -> Unbounded ▹Batch -> Bounded ▹Unbounded: processado em batch systems ▹Streaming systems: capazes de processar batches

Slide 13

Slide 13 text

13 ▸ ▹ Windows ▸ Windows ▹Não é só um sistema operacional ▹Divisão do dataset para processamento ▹Aligned: se aplica a todo dataset ▹Unaligned: se aplica a um subset

Slide 14

Slide 14 text

14 ▸ ▹ Windows ▸ Windows

Slide 15

Slide 15 text

15 ▸ ▹ Watermark ▸ Watermark ▹Limite inferior de todos os event times processados pelo pipeline

Slide 16

Slide 16 text

16 ▸ ▹ Primitivas ▸ Primitivas ▹ParDo ▹GroupByKey

Slide 17

Slide 17 text

17 ▸ ▹ Primitivas ▸ AssignWindows ▸ MergeWindows ▸ GroupByKeyAndWindow

Slide 18

Slide 18 text

18 ▸ ▹ Primitivas

Slide 19

Slide 19 text

19 ▸ ▹ Triggers ▸ Triggers ▸ Determina quando um GroupByKeyAndWindow ocorre ▸ Window: determina onde os dados serão agrupados (event time) ▸ Trigger: determina quando os resultados dos agrupamentos serão emitidos (processing time)

Slide 20

Slide 20 text

20 ▸ ▹ Triggers ▸ Triggers ▹Late data: atraso no event time em relação ao processing time ▹Refinamentos: Descarte: resultados futuros não dependem de dados passados Acúmulo: resultados futuros dependem de dados passados Acúmulo + Retração: resultados futuros dependem de dados passados resultados passados dependem de dados futuros

Slide 21

Slide 21 text

21 ▸ ▹ Triggers ▸ APIs ▹Java ▹Scala (Scio) ▹Python ▹Go (experimental)

Slide 22

Slide 22 text

22 ▸ ▹ Triggers ▸ Runners ▹https://beam.apache.org/documentation/runners/capability-matrix/

Slide 23

Slide 23 text

23 ▸ ▹ Triggers ▸ Google Dataflow ▹Um dos runners do beam ▹Gerenciado ▹Escalável ▹Templates

Slide 24

Slide 24 text

24 Demo

Slide 25

Slide 25 text

Kafka 25

Slide 26

Slide 26 text

26 ▸ ▹ Comunicaçã o entre sistemas

Slide 27

Slide 27 text

27 ▸ ▹ Comunicaçã o entre sistemas

Slide 28

Slide 28 text

28 ▸ ▹ Comunicaçã o entre sistemas

Slide 29

Slide 29 text

29 ▸ ▹ Comunicaçã o entre sistemas

Slide 30

Slide 30 text

30 ▸ ▹ Ecossistema de Big Data

Slide 31

Slide 31 text

31 ▸ ▹ Por que Kafka? ▸ Por que Kafka? ▹Retenção ▹Escalabilidade ▹Ordem

Slide 32

Slide 32 text

32 ▸ ▹ Por que Kafka? ▸Por que Kafka? ▹Reliable Data Delivery Dados de várias criticidades ▹Garantias Ordem Commits Uma vez commitado, dado não será mais perdido Somente serão lidos dados commitados

Slide 33

Slide 33 text

33 ▸ ▹ Por que não Kafka? ▸ Por que não Kafka? ▹Reliable Data Delivery Acaba gerando muitas arquiteturas ruins ▹Garantias Depende de uma série de configs

Slide 34

Slide 34 text

34 ▸ ▹ Plataforma distribuída de streaming ▸ Plataforma distribuída de streaming ▹O que é streaming? Unbounded == infinite ▹Streams Ordenados Imutáveis Repetíveis (replayable)

Slide 35

Slide 35 text

35 ▸ ▹ Plataforma distribuída de streaming ▸Plataforma distribuída de streaming ▹Request-response: um sistema espera outro ▹Batch: dados processados de tempos em tempos ▹Streaming Não é necessário espera Processamento contínuo

Slide 36

Slide 36 text

36 ▸ ▹ Streaming: conceitos ▸ Streaming: conceitos ▹Tempo Event time Processing time Log append time (tempo no Kafka) ▹Estado Interno: acessado apenas por um sistema Externo: disponível para outros sistemas

Slide 37

Slide 37 text

37 ▸ ▹ Streaming: conceitos ▸ Streaming: conceitos ▹Dualidade tabela-stream Table: coleção de registros Stream: cadeias de eventos que modificam algo ▹Table != Stream ▹Tabela pode ser convertida em stream (CDC) ▹Stream pode ser convertida em tabela (materialização) ▹Diferentes tipos de redundância

Slide 38

Slide 38 text

38 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Single-event processing

Slide 39

Slide 39 text

39 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Local state

Slide 40

Slide 40 text

40 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Local state ▸ Problemas: ▹ Estado deve caber em memória ▹ Persistência ▹ Rebalanceamento

Slide 41

Slide 41 text

41 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Multiphase processing

Slide 42

Slide 42 text

42 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Stream-table Join

Slide 43

Slide 43 text

43 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Stream-table Join ▸ Problemas: ▹ Latência ▹ Escalabilidade

Slide 44

Slide 44 text

44 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming: Stream-table Join

Slide 45

Slide 45 text

Elasticsearch 45

Slide 46

Slide 46 text

YOU CAN ALSO SPLIT YOUR CONTENT 46 ▸ Motor de busca e análise distribuído ▸ Construído sobre Apache Lucene ▸ Usos: ▹ Busca ▹ Logs (ELK) Motor de busca

Slide 47

Slide 47 text

YOU CAN ALSO SPLIT YOUR CONTENT 47 ▸ Rápido ▸ Distribuído ▸ Ecossistema rico ▸ Simples Motor de busca

Slide 48

Slide 48 text

YOU CAN ALSO SPLIT YOUR CONTENT 48 ▸ Elastic Stack: ▹ Logstash / Beats ▹ Elasticsearch ▹ Kibana ELK

Slide 49

Slide 49 text

YOU CAN ALSO SPLIT YOUR CONTENT 49 ▸ Near Realtime ▹ Indexação -> Busca: ~1sec Elasticsearch - conceitos

Slide 50

Slide 50 text

YOU CAN ALSO SPLIT YOUR CONTENT 50 ▸ Índices ▹ Coleção de documentos ▹ Índice invertido Elasticsearch - conceitos

Slide 51

Slide 51 text

YOU CAN ALSO SPLIT YOUR CONTENT 51 ▸ Node ▹ Máquina pertence a um cluster Elasticsearch - conceitos

Slide 52

Slide 52 text

YOU CAN ALSO SPLIT YOUR CONTENT 52 ▸ Documentos ▹ Unidade básica ▹ JSON Elasticsearch - conceitos

Slide 53

Slide 53 text

YOU CAN ALSO SPLIT YOUR CONTENT 53 ▸ Shards ▹ Subdivisão física do índice ▹ Escalabilidade ▸ Réplicas ▹ Cópias de shards em nós ▹ Disponibilidade ▹ Escalabilidade Elasticsearch - conceitos

Slide 54

Slide 54 text

YOU CAN ALSO SPLIT YOUR CONTENT 54 ▸ Ciclo de vida ▹ Ingestão ▹ Indexação ▹ Busca ▹ Visualização Elasticsearch

Slide 55

Slide 55 text

BigTable 55

Slide 56

Slide 56 text

YOU CAN ALSO SPLIT YOUR CONTENT 56 ▸ NoSQL ▸ Baixa latência ▸ Escalável NoSQL Gerenciado

Slide 57

Slide 57 text

YOU CAN ALSO SPLIT YOUR CONTENT 57 ▸ Tabela ▹ Conjunto chave-valor ▹ Linhas e colunas ▹ Versões Modelo de armazenamento

Slide 58

Slide 58 text

YOU CAN ALSO SPLIT YOUR CONTENT 58 ▸ Arquitetura Modelo de armazenamento

Slide 59

Slide 59 text

59 That’s all folks