$30 off During Our Annual Pro Sale. View Details »

Trilha DataEng - pt. II

Opensanca
November 18, 2019

Trilha DataEng - pt. II

Apresentação na Trilha de Data Science/Engineering sobre Data Engineering por Leonardo Miguel.

Opensanca

November 18, 2019
Tweet

More Decks by Opensanca

Other Decks in Technology

Transcript

  1. Data Engineering

    View Slide

  2. 2▸

    ▸ Introdução

    Roadmap

    View Slide

  3. 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

    View Slide

  4. Cloud Function
    4

    View Slide

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

    View Slide

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

    View Slide

  7. 7
    Demo

    View Slide

  8. Beam
    8

    View Slide

  9. 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

    View Slide

  10. 10


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

    View Slide

  11. 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?

    View Slide

  12. 12


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

    View Slide

  13. 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

    View Slide

  14. 14


    Windows
    ▸ Windows

    View Slide

  15. 15


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

    View Slide

  16. 16


    Primitivas
    ▸ Primitivas
    ▹ParDo
    ▹GroupByKey

    View Slide

  17. 17


    Primitivas
    ▸ AssignWindows
    ▸ MergeWindows
    ▸ GroupByKeyAndWindow

    View Slide

  18. 18


    Primitivas

    View Slide

  19. 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)

    View Slide

  20. 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

    View Slide

  21. 21


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

    View Slide

  22. 22


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

    View Slide

  23. 23


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

    View Slide

  24. 24
    Demo

    View Slide

  25. Kafka
    25

    View Slide

  26. 26


    Comunicaçã
    o entre
    sistemas

    View Slide

  27. 27


    Comunicaçã
    o entre
    sistemas

    View Slide

  28. 28


    Comunicaçã
    o entre
    sistemas

    View Slide

  29. 29


    Comunicaçã
    o entre
    sistemas

    View Slide

  30. 30


    Ecossistema
    de Big Data

    View Slide

  31. 31


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

    View Slide

  32. 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

    View Slide

  33. 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

    View Slide

  34. 34


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

    View Slide

  35. 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

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

  38. 38


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

    View Slide

  39. 39


    Streaming:
    diferentes
    modelos
    ▸ Modelos de streaming: Local state

    View Slide

  40. 40


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

    View Slide

  41. 41


    Streaming:
    diferentes
    modelos
    ▸ Modelos de streaming: Multiphase
    processing

    View Slide

  42. 42


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

    View Slide

  43. 43


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

    View Slide

  44. 44


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

    View Slide

  45. Elasticsearch
    45

    View Slide

  46. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. 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

    View Slide

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

    View Slide

  55. BigTable
    55

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. 59
    That’s all folks

    View Slide