Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trilha DataEng - pt. II

Avatar for Opensanca Opensanca
November 18, 2019

Trilha DataEng - pt. II

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

Avatar for Opensanca

Opensanca

November 18, 2019
Tweet

More Decks by Opensanca

Other Decks in Technology

Transcript

  1. 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
  2. YOU CAN ALSO SPLIT YOUR CONTENT 5 ▸ Serverless ▸

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

    Fácil deploy ▹ Escalável ▸ Cons: ▹ Barato Function as a Service: prática
  4. 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
  5. 10 ▸ ▹ Dataflow model ▸ Dataflow model ▹Propõe um

    modelo de programação simples para processamento de dados Event time Processing time
  6. 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?
  7. 12 ▸ ▹ Streaming vs Batch ▸ Streaming vs Batch

    ▹Streaming -> Unbounded ▹Batch -> Bounded ▹Unbounded: processado em batch systems ▹Streaming systems: capazes de processar batches
  8. 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
  9. 15 ▸ ▹ Watermark ▸ Watermark ▹Limite inferior de todos

    os event times processados pelo pipeline
  10. 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)
  11. 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
  12. 23 ▸ ▹ Triggers ▸ Google Dataflow ▹Um dos runners

    do beam ▹Gerenciado ▹Escalável ▹Templates
  13. 31 ▸ ▹ Por que Kafka? ▸ Por que Kafka?

    ▹Retenção ▹Escalabilidade ▹Ordem
  14. 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
  15. 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
  16. 34 ▸ ▹ Plataforma distribuída de streaming ▸ Plataforma distribuída

    de streaming ▹O que é streaming? Unbounded == infinite ▹Streams Ordenados Imutáveis Repetíveis (replayable)
  17. 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
  18. 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
  19. 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
  20. 40 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming:

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

    Stream-table Join ▸ Problemas: ▹ Latência ▹ Escalabilidade
  22. 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
  23. YOU CAN ALSO SPLIT YOUR CONTENT 47 ▸ Rápido ▸

    Distribuído ▸ Ecossistema rico ▸ Simples Motor de busca
  24. YOU CAN ALSO SPLIT YOUR CONTENT 48 ▸ Elastic Stack:

    ▹ Logstash / Beats ▹ Elasticsearch ▹ Kibana ELK
  25. YOU CAN ALSO SPLIT YOUR CONTENT 49 ▸ Near Realtime

    ▹ Indexação -> Busca: ~1sec Elasticsearch - conceitos
  26. YOU CAN ALSO SPLIT YOUR CONTENT 50 ▸ Índices ▹

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

    Máquina pertence a um cluster Elasticsearch - conceitos
  28. YOU CAN ALSO SPLIT YOUR CONTENT 52 ▸ Documentos ▹

    Unidade básica ▹ JSON Elasticsearch - conceitos
  29. 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
  30. YOU CAN ALSO SPLIT YOUR CONTENT 54 ▸ Ciclo de

    vida ▹ Ingestão ▹ Indexação ▹ Busca ▹ Visualização Elasticsearch
  31. YOU CAN ALSO SPLIT YOUR CONTENT 56 ▸ NoSQL ▸

    Baixa latência ▸ Escalável NoSQL Gerenciado
  32. YOU CAN ALSO SPLIT YOUR CONTENT 57 ▸ Tabela ▹

    Conjunto chave-valor ▹ Linhas e colunas ▹ Versões Modelo de armazenamento