embulk
Last updated
Last updated
μΌλ°μ μΈ λ°μ΄ν° μ²λ¦¬ μν¬νλ‘μ°
μμ§(Ingest/Collect) - μ ν리μΌμ΄μ λ‘κ·Έ, μ μ μμ± μ 보, κ΄κ³ μ μΈμ, μλνμΉμΏ ν€
μ μ²λ¦¬(Enrich) - λ΄μ μ‘μΈμ€ λ‘κ·Έ μ μΈ. IP μ£Όμλ‘ μμΉ μ 보 μΆκ°, user-agentμ ꡬ쑰ν, λ§μ€ν° λ°μ΄ν°λ₯Ό μ¬μ©ν΄μ λ‘κ·Έμ μ μ μμ± μΆκ°
λΆλ₯, μ§κ³, λΆμ(Model) - λ°μ΄ν°λ² μ΄μ€μ μΆκ°, λΆμ μ²λ¦¬ μμ€ν μΌλ‘ μ μ‘, μμΆν΄μ μ€ν 리μ§μ μ μ₯(μμΉ΄μ΄λΈ), ν΅κ³ λ°μ΄ν°λ‘ κΈ°λ‘
νμ©(Utilize) - μΆμ² μμ§ APIμ μ°Έμ‘° λ°μ΄ν°, μ€μκ° κ±°λ, BI μ ν리μΌμ΄μ μ μ¬μ©ν μκ°ν
Fluentdλ μ€μ€μκ°μ λ‘κ·Έ νμ©μ ν λ 첫 μ₯μ λ¬ΌμΈ λ‘κ·Έ μμ§μ κ³Όμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ°λ°λμμ΅λλ€. κ°μ’ λ°μ΄ν°μ μ λ ₯κ³Ό μμ§μ Input νλ¬κ·ΈμΈμΌλ‘ μ§μνκ³ , λ°μ΄ν° κ°κ³΅μ Filter νλ¬κ·ΈμΈμΌλ‘ μ²λ¦¬νλ©°, Output νλ¬κ·ΈμΈμΌλ‘ μ¬λ¬ κ°μ§ λ―Έλ€μ¨μ΄λ μ€ν 리μ§λ‘ μ μ₯ν μ μμ΅λλ€.
2κ°μ§ κ³Όμ
Fluentdμ μ€μ νμΌμ κ±°λνμ κ°λ μΌμ΄λλ μ¬μ μ μΈ μ¬μ λ³κ²½μ λ°λΌ μ€μ νμΌμ λΌμΈμκ° μ¦κ°νμ¬ μ μ§λ³΄μκ° νλ€κ² λμμ΅λλ€.
μ€νΈλ¦¬λ° μ²λ¦¬μ νΉνλ Fluentdλ μ κΈ°μ μΌλ‘ λ²ν¬λ‘λλ₯Ό νμ¬ λ°μ΄ν° μ²λ¦¬ μν¬νλ‘μ°λ₯Ό λ§λ€κΈ°μλ μ ν©νμ§ μμ΅λλ€.
λ°μ΄ν° μν¬νλ‘μ°λ₯Ό μ§μνλ λꡬ
μ€νΈλ¦¬λ° λ°μ΄ν° 컬λ ν° - fluentd - μ‘μΈμ€ λ‘κ·Έ / μ±λ‘κ·Έ / μλ²λ‘κ·Έ
λ²ν¬ λ°μ΄ν° λ‘λ - embulk - csvνμΌ/ S3 / MySQL / PostgreWQL λ±
μν¬νλ‘μ° κ΄λ¦¬ - digdag - ETL μ²λ¦¬μ μλν
Embulk
Embulkλ Fluentdμ κ°μ΄ Input/Filter/Output νλ¬κ·ΈμΈμ μ‘°ν©ν΄μ μ€μ νμΌμ μ μν©λλ€. λ³λ ¬ λΆμ° μ²λ¦¬μ λμν μ±λ₯κ³Ό μ¬μλ μ μ΄ λ±μ μμ μ±μ΄ μ°μν λ°μ΄ν° μ μ‘ νμ΄νλΌμΈμ λ§λ€ μ μμ΅λλ€.
λ€λμ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ½μ΄μ CPU μ½μ΄λ₯Ό μ΅λν μ¬μ©ν΄μ λ°°μΉ μ²λ¦¬νλ λ° νΉνλμ΄ μμ΅λλ€.
λ°μ΄ν°λ² μ΄μ€μ μ€ν 리μ§μμ λ°μ΄ν°λ₯Ό μ½μ΄μ, μμμ μ²λ¦¬λ₯Ό ν λ€μ λ€λ₯Έ λ³΄κ΄ μ₯μλ‘ λ³΄λ΄λ λ°μ΄ν°μ λμ©λμ²λ¦¬μ νΉνλ ETL μ²λ¦¬ λꡬ
Fluentdμ λ€λ₯Έ νΉμ§μΌλ‘ κ³ μμ±κ³Ό νΈλμμ μ μ΄, μ€ν€λ§λ₯Ό μ¬μ©ν λ°μ΄ν°μ κ²μ¬ κΈ°λ₯μ΄ μμ΅λλ€.
λμ©λμ λ°μ΄ν°λ₯Ό λ§μ΄ν¬λ‘ λ°°μΉμ²λ¦¬λ‘ Redshift, BigQuery, Elasticsearchλ‘ μ μ₯νλ κ²½μ°λΌλ©΄ Fluentd 보λ€λ λ³λ ¬μ²λ¦¬, μ²λ¦¬λ, μ μ₯νμ΄λ°μ μμ λ‘κ² μ»¨νΈλ‘€ν μ μλ Embulkλ‘ μ μ₯νλ νΈμ΄ νμ€ν μμ μ μ λλ€.
Digdagλ μν¬νλ‘μ°μ μ μλ₯Ό μ€μ νμΌλ‘ νκ³ μμ΅λλ€. Embulkμ μμμ μ Έμ€ν¬λ¦½νΈμ μμμ λ³μλ₯Ό λ£μ΄κ°λ©°, μμ‘΄ κ΄κ³μμΌλ‘ μ§λ ¬ λ° λ³λ ¬ μ²λ¦¬λ‘ Jobμ μ€νν μ μμ΅λλ€.
μν¬νλ‘μ°κ΄λ¦¬ λꡬλ‘μ ETL μ²λ¦¬μ μλνμ λμμ΄ λ©λλ€.
μ¬λ¬ λ¨κ³μμμ μ²λ¦¬μ μμ‘΄κ΄κ³μ μμ, λ³λ ¬μ€ν λ±μ νλ‘κ·Έλ¨ κ°λ₯ν YAML μ€μ νμΌμ ν΅ν΄ μ μ΄ν μ μλ μν€ν μ²
μ¬λ¬ κ°μ λ°μ΄ν°μμ€λ‘λΆν° λ³λ ¬ λλ μ§λ ¬λ‘ λ°μ΄ν°λ₯Ό μ½κ³ , λ μ§λ³λ‘ ν μ΄λΈμ λ§λ€κ³ μ μ₯νλ©° μ§μμ μΈ 1μ°¨ μ§κ³λ₯Ό ν λ€μ κ·Έ κ²°κ³Όλ₯Ό μ μ₯νλ μ²λ¦¬λ₯Ό μ§κ΄μ μΌλ‘ μ€μ νμΌμ μ€μ ν μ μμ΅λλ€.
κΈ°λ³ΈκΈ°λ₯
μμ μ μμ‘΄κ΄κ³μμΌλ‘ μ€ν
κ³Όκ±°λΆμ μΌκ΄μ€ν(backfill)
μ κΈ° μ€ν
μκ° λ±μ λ³μλ₯Ό ν¬ν¨ν΄μ μ€ν
νμΌμ΄ μμ±λλ©΄ μ€ν
μλ¬μ²λ¦¬
μ€ν¨νλ©΄ ν΅μ§
μ€ν¨ν μμΉμμ μ¬μμ
μν κ°μ
μ€ν μκ°μ΄ μΌμ μ΄μμ΄λ©΄ ν΅μ§
μμ μ μ€νμκ°μ μκ°ν
μ€ν λ‘κ·Έμ μμ§κ³Ό μ μ₯
κ³ μν
μμ μ λ³λ ¬λ‘ μ€ν
λμ μ€ν μμ κ°μμ μ μ΄
κ°λ°μ§μ
μν¬νλ‘μ°μ λ²μ κ΄λ¦¬
GUIλ‘ μν¬νλ‘μ° κ°λ°
μ κΈ°μ²λ¦¬λ₯Ό κ°λ¨νκ² μ€νν μ μλ λΌμ΄λΈλ¬λ¦¬
Docker μ΄λ―Έμ§λ₯Ό μ¬μ©ν΄μ μμ μ€ν
Digdagμλ μ€μΌμ€λ¬λ₯Ό λ΄μ₯νκ³ μμ΄μ λ°λͺ¬μΌλ‘ λμνλ μλ² λͺ¨λμ 컀맨λλΌμΈμμ μμλ‘ μ€ννλ λ‘컬 λͺ¨λμ 2κ°μ§κ° μμ΅λλ€. μλ² λͺ¨λμμλ κΈ°λ° μ 보μ ν΄λ¦¬μ νμΌμ 컀맨λλΌμΈμΌλ‘ λ±λ‘ν©λλ€.
Digdagμ μ€ννλ 컀맨λ
digdag run stage1_load_assets.dig
λ³λ ¬ μ€ν μμ μνμ μ€μ νμ¬ Digdagμ μν¬νλ‘μ°λ₯Ό μ€νν©λλ€.
digdag run example.dig --max-task-threads 4
νΈλ¦¬ν μ€νΌλ μ΄ν°
νμΌμ΄ λνλ λκΉμ§ κ³μνλ s3_wait>:μ gcs_wait>:λΌλ μ€νΌλ μ΄ν°
AWS S3μ νμΌμ΄ μμ±λ λκΉμ§ κΈ°λ€λ Έλ€κ° μκΈ°λ©΄ λ€μ νμ€ν¬λ‘ κ°μ Redshiftμμ κ°μ Έμ€λ Digdagμ μ€μ . BigQueryμμ κ°μ Έμ€λ κ²λ bq_load>: μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ λ§λ€ μ μμ΅λλ€.
rb>: μ€νΌλ μ΄ν°μ py>: μ€νΌλ μ΄νΈλ₯΄ μ¬μ©νλ©΄ λ°μ΄ν°λ₯Ό μ½λ κ² μΈμλ λ°μ΄ν°μ κ°κ³΅λ ν μ μμ΅λλ€.
http://www.yes24.com/Product/Goods/64464997
https://github.com/treasure-data/embulk
https://github.com/treasure-data/digdag