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

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