Pro Yearly is on sale from $80 to $50! »

Trilha DataEng - pt. II

B2519015997dff04abe2568ebb2cf729?s=47 opensanca
November 18, 2019

Trilha DataEng - pt. II

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

B2519015997dff04abe2568ebb2cf729?s=128

opensanca

November 18, 2019
Tweet

Transcript

  1. Data Engineering

  2. 2▸ ▹ ▸ Introdução ▸ Roadmap

  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
  4. Cloud Function 4

  5. YOU CAN ALSO SPLIT YOUR CONTENT 5 ▸ Serverless ▸

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

    Fácil deploy ▹ Escalável ▸ Cons: ▹ Barato Function as a Service: prática
  7. 7 Demo

  8. Beam 8

  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
  10. 10 ▸ ▹ Dataflow model ▸ Dataflow model ▹Propõe um

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

    ▹Streaming -> Unbounded ▹Batch -> Bounded ▹Unbounded: processado em batch systems ▹Streaming systems: capazes de processar batches
  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
  14. 14 ▸ ▹ Windows ▸ Windows

  15. 15 ▸ ▹ Watermark ▸ Watermark ▹Limite inferior de todos

    os event times processados pelo pipeline
  16. 16 ▸ ▹ Primitivas ▸ Primitivas ▹ParDo ▹GroupByKey

  17. 17 ▸ ▹ Primitivas ▸ AssignWindows ▸ MergeWindows ▸ GroupByKeyAndWindow

  18. 18 ▸ ▹ Primitivas

  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)
  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
  21. 21 ▸ ▹ Triggers ▸ APIs ▹Java ▹Scala (Scio) ▹Python

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

  23. 23 ▸ ▹ Triggers ▸ Google Dataflow ▹Um dos runners

    do beam ▹Gerenciado ▹Escalável ▹Templates
  24. 24 Demo

  25. Kafka 25

  26. 26 ▸ ▹ Comunicaçã o entre sistemas

  27. 27 ▸ ▹ Comunicaçã o entre sistemas

  28. 28 ▸ ▹ Comunicaçã o entre sistemas

  29. 29 ▸ ▹ Comunicaçã o entre sistemas

  30. 30 ▸ ▹ Ecossistema de Big Data

  31. 31 ▸ ▹ Por que Kafka? ▸ Por que Kafka?

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

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

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

    Local state
  40. 40 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming:

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

    Multiphase processing
  42. 42 ▸ ▹ Streaming: diferentes modelos ▸ Modelos de streaming:

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

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

    Stream-table Join
  45. Elasticsearch 45

  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
  47. YOU CAN ALSO SPLIT YOUR CONTENT 47 ▸ Rápido ▸

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

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

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

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

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

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

    vida ▹ Ingestão ▹ Indexação ▹ Busca ▹ Visualização Elasticsearch
  55. BigTable 55

  56. YOU CAN ALSO SPLIT YOUR CONTENT 56 ▸ NoSQL ▸

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

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

    de armazenamento
  59. 59 That’s all folks