Trino์—์„œ connector๋Š” iceberg์™€ hive๊ฐ€ ์กด์žฌํ•œ๋‹ค.
hive์™€ iceberg๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
 
Hive ์ปค๋„ฅํ„ฐ์˜ ๊ฒฝ์šฐ ํด๋” ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ day=20240101 ํด๋” ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์ด ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ž˜์„œ UPDATE/DELETE๊ฐ€ ์–ด๋ ต๊ธฐ์— ํ•œ๋ฒˆ ์Œ“์ด๋ฉด ์•ˆ ๋ณ€ํ•˜๋Š” ๋กœ๊ทธ๋‚˜ ๋ฐฑ์—… ํ…Œ์ด๋ธ”์„ ์ฃผ๋กœ appendํ•œ๋‹ค. hive๋Š” ๋ฉ”ํƒ€์Šคํ† ์–ด์— ๊ฐ€์„œ ์ง์ ‘ ์ฝ๋Š”๋‹ค. ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด์„œ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ์†”๋ฃจ์…˜ (์˜ˆ: Spark, Python, ํ˜น์€ ๋‹ค๋ฅธ DB)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธธ ๋•Œ ํ›จ์”ฌ ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค.
 
iceberg connector์˜ ๊ฒฝ์šฐ, ์Šค๋ƒ…์ƒท ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ์— UPDATE/DELETE๊ฐ€ ์ž์œ ๋กญ๊ณ  Time Travel ๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. iceberg๋Š” iceberg ์ „์šฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ฐพ์•„์„œ ํŒŒ์ผ์— ์ ํžŒ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•ด์„œ ์ฝ๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด๋ฉด ๋ณต๊ตฌ๊ฐ€ ๋ณต์žกํ•˜๋‹ค.
 
Trino๋Š” ๋ฐ์ดํ„ฐ๋ฅผ 3๊ณ„์ธต์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
 

  • Catalog (์นดํƒˆ๋กœ๊ทธ): ๋„ค ์„ค์ • ํŒŒ์ผ ์ด๋ฆ„ (hive, iceberg)
  • Schema (์Šคํ‚ค๋งˆ): ํ”ํžˆ ๋งํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ์ด๋ฆ„
  • Table (ํ…Œ์ด๋ธ”): ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด ํ‘œ

 
iceberg -> hive (โŒ)
์šฐ์„  ๋จผ์ € iceberg connector๋กœ ๋งŒ๋“ค์–ด์ง„ ํ…Œ์ด๋ธ”์€ hive connector๋กœ ์ ‘์† ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
์•„๋ž˜์ฒ˜๋Ÿผ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค. hive connector๋Š” iceberg์˜ ๋ณต์žกํ•œ ์Šค๋ƒ…์ƒท ๊ตฌ์กฐ๋ฅผ ํ•ด์„ํ•  ๋Šฅ๋ ฅ์ด ์—†๋‹ค.

SQL Error [133001]: Query failed (#20260401_074953_00144_wv8fq): Cannot query Iceberg table 'dw.tablename'

 
 
hive -> iceberg (โญ•) 
configmap์— ์•„๋ž˜ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด iceberg ์ปค๋„ฅํ„ฐ๊ฐ€ ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด hive ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋ผ์„œ iceberg ์นดํƒˆ๋กœ๊ทธ ๊ฒฝ๋กœ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋„ ์‹ค์ œ๋กœ๋Š” hive ์นดํƒˆ๋กœ๊ทธ์— ์ •์˜๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋Œ์–ด์™€์„œ ๋ณด์—ฌ์ค€๋‹ค. iceberg ์ปค๋„ฅํ„ฐ๋กœ ์กฐํšŒ๋Š” ๋˜์ง€๋งŒ, ๋‹จ์ˆœ select๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. hive catalog๋ฅผ iceberg ์ชฝ์— ๋ธŒ๋ฆฟ์ง€ํ•ด๋‘” ๊ฒฝ์šฐ์ด๋‹ค. catalog๋ฅผ ๋ฐ”๊พธ์ง€์•Š์•„๋„ ํŽธํ•˜๊ฒŒ ๋ฐฑ์—… ๋ฐ ๊ฐœ๋ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„ค์ •ํ•ด๋‘” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

iceberg.hive-catalog-name=hive

 
 
์™œ Hive connector๋Š” Update๋‚˜ Delete๊ฐ€ ์ œํ•œ์ ์ผ๊นŒ??
ํŒŒ์ผ์‹œ์Šคํ…œ์œผ๋กœ์จ Hive๋Š” S3 ๊ฐ™์€ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์— Parquet๋‚˜ ORC ๊ฐ™์€ ํŒŒ์ผ์„ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ „์ฒด ํŒŒ์ผ์„ ์ƒˆ๋กœ ์“ฐ๊ฑฐ๋‚˜ ๋ฎ์–ด๋ฒ„๋ ค์•ผํ•œ๋‹ค. Hive ACID ํ…Œ์ด๋ธ”์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์„ค์ •์ด ๊นŒ๋‹ค๋กญ๊ณ  ์„ฑ๋Šฅ์ด ๋‚˜๋น ์„œ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
 
iceberg๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๊ธฐ์กด ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ , ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •/์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ๊ธฐ๋กํ•˜๋Š” ์ž‘์€ ํŒŒ์ผ(Delete Delta)์„ ๋”ฐ๋กœ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜์ค‘์— ์กฐํšŒํ• ๋•Œ ์ด ํŒŒ์ผ์„ ํ•ฉ์ณ์„œ ๋ณด์—ฌ์ฃผ๊ธฐ์— S3 ํŒŒ์ผ์„ ํ†ต์งธ๋กœ ๋‹ค์‹œ ์“ธ ํ•„์š”์—†์ด Update์™€ Delete๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Hive connector๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋ฉด ํ•˜์ด๋ธŒ ๋ฉ”ํƒ€์Šคํ† ์–ด์— Owner(์†Œ์œ ์ž) ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋˜๊ณ , Owner๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Admin ๊ณ„์ •์ด์—ฌ๋„ ํ…Œ์ด๋ธ” ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ์†Œ์œ ๊ถŒ์„ ๊ฐ•์ œ๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ Drop์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-- 1. ์†Œ์œ ๊ถŒ์„ admin์œผ๋กœ ๊ฐ•์ œ ๋ณ€๊ฒฝ
ALTER TABLE hive.dw.table_name SET AUTHORIZATION admin;

-- 2. ์ด์ œ ์‚ญ์ œ ๊ฐ€๋Šฅ
DROP TABLE hive.dw.table_name;


 

'Dataops > Airflow์™€ Trino' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Airflow์™€ Trino ๊ด€๊ณ„ ๋ณด๊ธฐ  (0) 2026.03.01

1. Airflow: "๋˜‘๋˜‘ํ•œ ์ž‘์—… ๋ฐ˜์žฅ" (Workflow Orchestrator)

Airflow๋Š” ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์ž‘์—…์ด ์–ธ์ œ, ์–ด๋–ค ์ˆœ์„œ๋กœ ์‹คํ–‰๋ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ

  • ์—ญํ• : "A ๊ณ„์—ด์‚ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๋’ค -> B ๊ณ„์—ด์‚ฌ ๋ฐ์ดํ„ฐ๋ž‘ ํ•ฉ์น˜๊ณ  -> ๋งˆ์ง€๋ง‰์œผ๋กœ ๋Œ€์‹œ๋ณด๋“œ์šฉ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด๋ผ" ๊ฐ™์€ ์ˆœ์„œ๋ฅผ ์ง (DAG) ๋’ค, ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ์‹คํ–‰

2. Trino: "์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์š”๋ฆฌ์‚ฌ" (Distributed SQL Query Engine)

Trino๋Š” ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ SQL ํ•œ ๋ฒˆ์œผ๋กœ ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•ด ์ฃผ๋Š” ์—”์ง„

  • ์—ญํ• : ๋ฐ์ดํ„ฐ๋Š” S3๋‚˜ HDFS์— ๊ฐ€๋งŒํžˆ ์žˆ๊ณ , Trino๋Š” ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋Œ์–ด์˜ฌ๋ ค์„œ ์ˆœ์‹๊ฐ„์— ๊ณ„์‚ฐํ•ด. Redshift์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  '๊ณ„์‚ฐ'๋งŒ ์ „๋‹ดํ•˜๋Š” ๊ฒŒ ์ฐจ์ด์ 

3. ๋‘˜์˜ ๊ด€๊ณ„: "์ฃผ๋ฌธ์ž์™€ ์š”๋ฆฌ์‚ฌ"

๋ถ„์„๊ฐ€๋“ค์ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ด ๋‘˜์€ ์‹ค๊ณผ ๋ฐ”๋Š˜์ฒ˜๋Ÿผ ์›€์ง์—ฌ.

  1. Airflow(์ฃผ๋ฌธ์ž): "์ž, ์ด์ œ ๋ถ„์„ํ•  ์‹œ๊ฐ„์ด์•ผ! ์ด ์ฟผ๋ฆฌ ์ข€ ์‹คํ–‰ํ•ด ์ค˜."๋ผ๊ณ  Trino(์š”๋ฆฌ์‚ฌ)์—๊ฒŒ ์ฃผ๋ฌธ์„œ๋ฅผ ๋˜์ ธ.
  2. Trino(์š”๋ฆฌ์‚ฌ): S3์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์Šฅ์Šฅ ๊ธ์–ด๋ชจ์•„ ์š”๋ฆฌ(๊ณ„์‚ฐ)ํ•œ ๋’ค, ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ Airflow์— ์•Œ๋ ค์ค˜.
  3. K8s(์‹๋‹น ๊ฑด๋ฌผ): ๋„ˆ๋Š” ์ด ๋‘˜์ด ์‹ธ์šฐ์ง€ ์•Š๊ณ  ์ž์›์„ ์ž˜ ๋‚˜๋ˆ  ์“ฐ๋„๋ก ์‹๋‹น ๊ฑด๋ฌผ์„ ๊ด€๋ฆฌ(Config, Resource Limit)ํ•˜๋Š” ์ฃผ์ธ์žฅ์ธ ์…ˆ์ด์ง€.

 

'Dataops > Airflow์™€ Trino' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Trino iceberg์™€ hive connector ๋น„๊ตํ•˜๊ธฐ  (0) 2026.03.01

๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ž˜ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์™œ ์ค‘์š”ํ• ๊นŒ?

๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋Š”๋ฐ ๋” ์ ์€ ๋…ธ๋ ฅ์„ ๋“ค์ผ์ˆ˜๋ก ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์นดํ”„์นด์—์„œ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ๋ฉ”์‹œ์ง€์ด๋ฉฐ, ๋ฐ”์ดํŠธ์˜ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ์ €์žฅํ•˜๊ณ  ๋ฐฐ์น˜๋Š” ๋ฉ”์‹œ์ง€๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. ๋ฐฐ์น˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์“ธ ๋•Œ๋งˆ๋‹ค ๋„คํฌ์›Œํฌ ํ†ต์‹ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ์ง€์—ฐ๋Ÿ‰๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰ ์‚ฌ์ด์— ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์•„ํŒŒ์น˜ ์—์ด๋ธŒ๋กœ๋กœ ๋ฉ”์‹œ์ง€ ๋ณธ์ฒด์™€ ์Šคํ‚ค๋งˆ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์ฝ”๋“œ ์ˆ˜์ •์€ ํ•„์š”์—†๋‹ค.

 

ํ† ํ”ฝ๊ณผ ํŒŒํ‹ฐ์…˜

๋ฉ”์‹œ์ง€๋Š” ํ† ํ”ฝ ๋‹จ์œ„๋กœ ๋ถ„๋ฅ˜๋˜๋ฉฐ ํ† ํ”ฝ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๊ฐ–๋Š”๋‹ค. ํ•˜๋‚˜์˜ํŒŒํ‹ฐ์…˜์—์„œ๋Š” ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€๋งŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ํ† ํ”ฝ ์•ˆ์˜ ์ „์ฒด ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ํŒŒํ‹ฐ์…˜์€ ์นดํ”„์นด๊ฐ€ ๋ฐ์ดํ„ฐ ์ค‘๋ณต๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•˜๋‹ค. ๊ฐ ํŒŒํ‹ฐ์…˜์ด ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๊ธฐ์— ํ•˜๋‚˜์˜ ํ† ํ”ฝ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๋กœ ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ณ  ํŒŒํ‹ฐ์…˜ ๋ณต์ œ๋„ ๊ฐ€๋Šฅํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์˜ ๋ณต์ œ๋ณธ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๋ถ„์‚ฐ ํ”Œ๋žซํผ์ธ ์ด์œ ์ด๊ธฐ๋„ ํ•˜๋‹ค.

 

ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ

ํ”„๋กœ๋“€์…”๋Š” ๋ฐœํ–‰์ž, ์ž‘์„ฑ์ž๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ๋ฉ”์‹œ์ง€ ํ‚ค์™€ ํ‚ค๊ฐ’์˜ ํ•ด์‹œ๋ฅผ ํŠน์ • ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋Œ€์‘์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์€ ํŒŒํ‹ฐ์…”๋„ˆ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค. ์ปค์ŠคํŠฌ ํŒŒํ‹ฐ์…”๋„ˆ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ปจ์Šˆ๋จธ๋Š” ๊ตฌ๋…์ž, ๋…์ž๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ์ผ์›์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋Œ€๋Ÿ‰์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ์ปจ์Šˆ๋จธ๋ฅผ ์ˆ˜ํ‰ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์ปจ์Šˆ๋จธ ์ค‘ ํ•˜๋‚˜์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๊ทธ๋ฃน ์•ˆ์˜ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ๊ฐ€ ์žฌํ• ๋‹น๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๋ธŒ๋กœ์ปค์™€ ํด๋Ÿฌ์Šคํ„ฐ

์นดํ”„์นด ์„œ๋ฒ„๋ฅผ ๋ธŒ๋กœ์ปค๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ธŒ๋กœ์ปค๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋กœ์ปค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€์ด๋‹ค. ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ธŒ๋กœ์ปค๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•˜๋‚˜์˜ ๋ธŒ๋กœ์ปค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์—ญํ• ์ด๋ž€ ํŒŒํ‹ฐ์…˜์„ ๋ธŒ๋กœ์ปค์— ํ• ๋‹นํ•ด์ฃผ๊ฑฐ๋‚˜ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ธŒ๋กœ์ปค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋“ฑ์˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๋ธŒ๋กœ์ปค๋Š” ๋ฆฌ๋”์™€ ํŒ”๋กœ์›Œ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๋ณต์ œ ๊ธฐ๋Šฅ์€ ๋ฆฌ๋” ๋ธŒ๋กœ์ปค์— ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํŒ”๋กœ์›Œ๊ฐ€ ๋ฆฌ๋” ์—ญํ• ์„ ์ด์–ด๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ๋“€์„œ๋Š” ๋ฆฌ๋” ๋ธŒ๋กœ์ปค์— ๋ฉ”์‹œ์ฆˆ๋ฅผ ๋ฐœํ–‰ํ•ด์•ผํ•˜๊ณ  ์ปจ์Šˆ๋จธ๋Š” ํŒ”๋กœ์›Œ๋‚˜ ๋ฆฌ๋” ์ค‘ ํ•˜๋‚˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์ค‘ ํด๋Ÿฌ์Šคํ„ฐ

๋ฏธ๋Ÿฌ๋ฉ”์ด์ปค ํˆด์„ ์‚ฌ์šฉํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ผ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ๋ณต์ œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ๋งŒ ๋ฐ์ดํ„ฐ ๋ณต์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

๋Ÿฌ๋‹ ์ŠคํŒŒํฌ chapter 3์žฅ๊นŒ์ง€ ์ฝ์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

HDFS์™€ ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์—๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋ฐฐ์น˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ MR ํƒœ์Šคํฌ์˜ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋“ค์„ ๋กœ์ปฌ ๋””์Šคํฌ์— ์จ์•ผํ–ˆ๋‹จ ์ ์ด๋‹ค. ์ด๊ฒƒ์€ ์žฆ์€ ๋””์Šคํฌ I/O ์ˆ˜ํ–‰์„ ์ผ์œผํ‚ค๋ฉฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋งค์šฐ ๋А๋ ค์ง„๋‹ค.

 

๊ทธ๋ž˜์„œ ์•„ํŒŒ์น˜ ์ŠคํŒŒํฌ๊ฐ€ ํƒ„์ƒํ•˜์˜€๋‹ค. ์•„ํŒŒ์น˜ ์ŠคํŒŒํฌ๋Š” ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ์„ค๊ณ„๋œ ํ†ตํ•ฉํ˜• ์—”์ง„์ด๋‹ค.

์ŠคํŒŒํฌ๋Š” ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋ฉฐ ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜์—ˆ๊ณ  4๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋‹ค.

 

์ฒซ๋ฒˆ์งธ, ์†๋„

์ŠคํŒŒํฌ๋Š” ์งˆ์˜ ์—ฐ์‚ฐ์„ ๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(DAG)๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ์›Œํฌ ๋…ธ๋“œ ์œ„์—์„œ ๋ณ‘๋ ฌ ์ˆ˜ํ–‰๋œ๋‹ค. ์ŠคํŒŒํฌ SQL ์—”์ง„ ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ ํ……์Šคํ…(Tungsten)์€ ์ „์ฒด ์ฟผ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ํ•ฉ์ณ ๊ฐ€์ƒ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด๋‚˜ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ CPU ์‚ฌ์šฉ์„ ์—†์•ค๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ํฌ๊ด„ ์ฝ”๋“œ ์ƒ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ํšจ์œจ์„ ๋†’์ธ๋‹ค. ํ•˜๋‘ก ๋งต๋ฆฌ๋“€์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“  ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ ๋””์Šคํฌ I/O ์‚ฌ์šฉ์„ ์ค„์ธ๋‹ค.

 

๋‘๋ฒˆ์งธ, ์‚ฌ์šฉํŽธ๋ฆฌ์„ฑ

๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„, ๋ฐ์ดํ„ฐ์„ธํŠธ, RDD API๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์„ธ๋ฒˆ์งธ, ๋ชจ๋“ˆ์„ฑ

4๊ฐ€์ง€ ์ปดํฌ๋„ŒํŠธ(์ŠคํŒŒํฌSQL, ์ŠคํŒŒํฌ ์ •ํ˜•ํ™” ์ŠคํŠธ๋ฆฌ๋ฐ, MLlib, GraphX)๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ํ•˜๋‚˜์˜ ์—”์ง„ ์•ˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ณ„๋„์˜ ์—”์ง„์„ ๋Œ๋ฆด ํ•„์š”๋„ ์—†๊ณ  ๋ณ„๋„์˜ API๋ฅผ ๋ฐฐ์šธ ํ•„์š”๋„ ์—†๋‹ค.

 

๋„ค๋ฒˆ์งธ, ํ™•์žฅ์„ฑ

์ŠคํŒŒํฌ๋Š” ๋น ๋ฅธ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๊ธฐ์— ์ €์žฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€์˜ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ํ•˜๋‘ก์€ ์ €์žฅ๊ณผ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

 

์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ŠคํŒŒํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

- API๋ฅผ ์จ์„œ ์ŠคํŒŒํฌ ์œ„์—์„œ ๋Œ์•„๊ฐ€๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ. ๋“œ๋ผ์ด๋ฒ„์™€ ํด๋Ÿฌ์Šคํ„ฐ ์‹คํ–‰๊ธฐ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

SparkSession

- ์ŠคํŒŒํฌ ์ฝ”์–ด ๊ธฐ๋Šฅ๋“ค๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง„์ž…์ ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด์ด๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ SparkSession ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

Job

- ์ŠคํŒŒํฌ ์•ก์…˜์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ

 

Stage

- Job์€ ์Šคํ…Œ์ด์ง€๋ผ ๋ถˆ๋ฆฌ๋Š” ์„œ๋กœ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๋Š” ๋‹ค์ˆ˜์˜ ํƒœ์Šคํฌ ๋ชจ์Œ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

 

Task- ์ŠคํŒŒํฌ ์ด๊ทธ์ œํํ„ฐ๋กœ ๋ณด๋‚ด์ง€๋Š” ์ž‘์—… ์‹คํ–‰์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„

 

์ŠคํŒŒํฌ ์—ฐ์‚ฐ์€ Transformation๊ณผ Action์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ, Action์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ์ŠคํŒŒํฌ๋Š” ์•„์˜ˆ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

Transformation์€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ์ŠคํŒŒํฌ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

๋ชจ๋“  Transformation์€ ๊ฒฐ๊ณผ๊ฐ’์ด ์ฆ‰์‹œ ๊ณ„์‚ฐ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ lineage๋ผ ํ•˜๋ฉฐ, ๊ธฐ๋ก๋œ ๋ฆฌ๋‹ˆ์ง€๋Š” ์ŠคํŒŒํฌ๊ฐ€ ํŠธ๋ Œ์Šคํฌ๋ฉ”์ด์…˜๋“ค๋ผ๋ฆฌ ํ•ฉ์น˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์—ดํ•˜๊ฑฐ๋‚˜ ํ•ด์„œ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™” ํ•œ๋‹ค. ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์„ ๋ฆฌ๋‹ˆ์ง€์— ๊ธฐ๋ก๋งŒ ํ•ด๋‘๊ณ  ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ง€์—ฐ ํ‰๊ฐ€๋ผ๊ณ  ํ•œ๋‹ค. ์ฝ”๋“œ์—์„œ ์•ก์…˜์„ ๋งŒ๋‚ฌ์„ ๋•Œ ๋ชจ๋“  ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์˜ ์ง€์—ฐ ์—ฐ์‚ฐ์ด ๋ฐœ๋™๋˜๋ฉฐ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์—…ํ•œ๋‹ค.

 

=> ์ง€์—ฐ ํ‰๊ฐ€๋Š” ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ๋ฆฌ๋‹ˆ์ง€์™€ ๋ฐ์ดํ„ฐ ๋ถˆ๋ณ€์„ฑ์€ ์žฅ์• ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋‚ด๊ตฌ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ข์€/๋„“์€ ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜

ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข์€ ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์œผ๋กœ filter()๋‚˜ contains()๊ฐ€ ํฌํ•จ๋œ๋‹ค. ๋ฐ˜๋ฉด์— ํŒŒํ‹ฐ์…˜๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ๋ฐœ์ƒํ•˜๊ณ  ๋””์Šคํฌ ์ž‘์—… ๋“ฑ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋„“์€ ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์œผ๋กœ groupby()๋‚˜ orderby()๊ฐ€ ํฌํ•จ๋œ๋‹ค.

ํ•˜๋‘ก ์ƒํƒœ๊ณ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘/์ €์žฅ/์ฒ˜๋ฆฌ/์ ์žฌ
๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ - Kafka - ์‹ค์‹œ๊ฐ„ ๋ถ„์‚ฐํ™˜๊ฒฝ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ์†”๋ฃจ์…˜
๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ - HDFS - ๋ฐ์ดํ„ฐ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์— ๋ถ„์‚ฐ ์ €์žฅํ•˜๋Š” ์†”๋ฃจ์…˜์œผ๋กœ Namenode(๋ฆฌ๋”๋…ธ๋“œ)์™€ Datanode(์ปดํ“จํŒ…๋…ธ๋“œ)๋กœ ๊ด€๋ฆฌ
๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ - YARN - ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์œผ๋กœ Resourse Manager๊ฐ€ Node Manager๋ฅผ ๊ด€๋ฆฌ
๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜์ฒ˜๋ฆฌ - Hadoop MapReduce - Map๊ณผ Reduce์˜ 2์ƒ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•˜๋‘ก ๊ธฐ๋ฐ˜์˜ ๋ฐฐ์น˜ ์ž‘์—… ํ”Œ๋žซํผ
์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ - Apache Spark - ์ธ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ์œผ๋กœ ๋ฐฐ์น˜์ฒ˜๋ฆฌ, ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, SQL ์งˆ์˜์™€ Graph ์ฒ˜๋ฆฌ, ๋จธ์‹ ๋Ÿฌ๋‹ ๊ฐ™์€ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉ
๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค ์—ฐ๋™ - Hive - ํ•˜๋‘ก ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ์‹œ์Šคํ…œ

๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•: ElasticSearch
Restful ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ˜•, ๋น„์ •ํ˜•, ๋ฐ์ดํ„ฐ ์œ„์น˜์ •๋ณด, ๋ฉ”ํŠธ๋ฆญ ๋“ฑ ์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰

ํ•˜๋‘ก ์ƒํƒœ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
1. ํ•˜๋‘ก์˜ HDFS๋Š” ๋™์ผํ•œ ์ €๊ฐ€ ๋ฆฌ๋ˆ…์Šค๋ฅผ ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์‚ฌ์šฉํ•˜์—ฌ scale out์„ ์‚ฌ์šฉ -> ์ €์žฅ์†Œ์˜ ๋น„์šฉ์ด ์ €๋ ดํ•จ
2. ์ •ํ˜• ๋ฐ์ดํ„ฐ ์™ธ์—๋„ ๋ฐ˜์ •ํ˜•, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๋‹ค๋ฃธ
3. YARN์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ, CPU, ๋””์Šคํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €๋ ดํ•˜๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ -> ์šด์˜ํ• ๋•Œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ํฌ์ธํŠธ์—์„œ ์ข€ ์ž์œ ๋กœ์›€
4. ๋”ฅ๋Ÿฌ๋‹, ์ธ๊ณต์ง€๋Šฅ์—์„œ ํ•„์š”ํ•œ INPUT ๋ฐ์ดํ„ฐ ์ œ๊ณต ๊ฐ€๋Šฅ -> ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ์˜ ์ธ์‚ฌ์ดํŠธ ์ถ”์ถœ ๊ฐ€๋Šฅ
5. Schema on Read -> ๋ฐ์ดํ„ฐ๋ฅผ read ํ•˜๋Š” ์‹œ์ ์— ์Šคํ‚ค๋งˆ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ถ”์ถœ -> ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์Šคํ‚ค๋งˆ์˜ ์œ„์น˜๊ฐ€ ๋ชจ๋‘ ๋‹ฌ๋ผ์„œ ์‹œ๊ฐ„ ์ ˆ์•ฝ ๊ฐ€๋Šฅ

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
์ •์˜: ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…<br>
๊ธฐ๋ฒ•: ๋ฐ์ดํ„ฐ ์ •์ œ, ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ, ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜, ๋ฐ์ดํ„ฐ ์ •๋ฆฌ

 

ETL ํ”„๋กœ์„ธ์Šค(Extract/Transformation/Loading)
๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•œ ํ›„ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์†Œ๋กœ ์ ์žฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ

ELT ํ”„๋กœ์„ธ์Šค(Extract&Load/Transformation)
์ผ๋‹จ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ญ ์ ์žฌํ•˜๊ณ  ์ดํ›„ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ -> ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ด ์ •ํ•ด์ง€์ง€ ์•Š์•˜์–ด๋„ ๋ฐ์ดํ„ฐ ์ ์žฌ ๊ฐ€๋Šฅ

ํ•˜๋‘กํŒŒ์ผ์‹œ์Šคํ…œ
- ๊ตฌ์„ฑ: ๋งˆ์Šคํ„ฐ ์—ญํ• ์˜ NameNode์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜๋Š” ๋‹ค์ˆ˜์˜ ์Šฌ๋ ˆ์ด๋ธŒ Datanode
- ๊ตฌ์กฐ: ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ๊ตฌ์กฐ(ํ•˜๋‚˜์˜ ๋งˆ์Šคํ„ฐ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šฌ๋ ˆ์ด๋ธŒ ๊ตฌ์กฐ)
- ๋™์ž‘์›๋ฆฌ
  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ HDFS์— ์ €์žฅ
  2. HDFS Client๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํŒŒ์ผ๋ช…, ํด๋”๊ตฌ์กฐ ๋“ฑ)๋ฅผ NameNode์— ์ €์žฅ
  3. NameNode๋Š” Datanode์—๊ฒŒ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋ช…๋ น ์ง€์‹œ,  Datanode๋Š” ์ž์‹ ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ NameNode์—๊ฒŒ ์†ก์‹ 
  4. Datanode์•ˆ์˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋ˆ ์ ธ ์‹ค๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์ œ ์ €์žฅ๋จ
  5. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๊ฒฝ์šฐ, HDFS Client๋Š” NameNode๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์ˆ˜์‹ 
  6. HDFS Client๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” Datanode์˜ ํŒŒ์ผ ๋ธ”๋ก์„ ์ฐพ์•„์„œ ํŒŒ์ผ์„ ์ฝ์–ด์˜ด.
  7. NameNode์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ, Secondary Namenode์˜ Edits ํŒŒ์ผ์— ๋กœ๊ทธ ์ €์žฅ
 
Yarn์˜ ๊ตฌ์กฐ
|๋ฐ๋ชฌ|๊ธฐ๋Šฅ|
|------|---|
|Resource Manager|Yarn์˜ ๋งˆ์Šคํ„ฐ ์—ญํ•  ์ˆ˜ํ–‰(์ด๊ด„ ๊ด€๋ฆฌ์ž)|
|Scheduler|Resource Manager ๋‚ด์˜ ๋ฐ๋ชฌ์œผ๋กœ Node Manager์™€ ํ†ต์‹ ํ•˜๋ฉฐ, Application Master์— ์ž์› ํ• ๋‹น|
|Application Manager|Resource Manager ๋‚ด์˜ ๋ฐ๋ชฌ์œผ๋กœ Application Master ์‹คํ–‰ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ|
|Node Manager|๊ฐ ๋…ธ๋“œ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜์—ฌ Resource Manager์—๊ฒŒ ์ œ๊ณต|
|Application Master|๊ฐ๊ฐ์˜ Application์„ ๊ด€๋ฆฌํ•˜๋Š” ๋งˆ์Šคํ„ฐ์˜ ์—ญํ• |
|Container|Application Master๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํƒœ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰, Node Manager์— ์˜ํ•ด ์ƒ์„ฑ|

ํ•˜๋‘กํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์žฅ์ 
- ์Šค์ผ€์ผ ์•„์›ƒ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ(๋ณ‘๋ ฌ๋กœ ์Šค์ผ€์ผ ์•„์›ƒ๋จ์œผ๋กœ ๋ฐ์ดํ„ฐ ์–‘์— ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ํ•„์š”)
- ์žฅ์• ๋ณต๊ตฌ(๋งˆ์Šคํ„ฐ ์„œ๋ฒ„๊ฐ€ ์Šฌ๋ ˆ์ด๋ธŒ ์„œ๋ฒ„์˜ ์žฅ์• ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ์„œ๋น„์Šค ์šฐํšŒ OR ๋‹ค๋ฅธ ๋…ธ๋“œ์— ๋ณต์ œ๋œ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ)
- ๋Œ€์šฉ๋Ÿ‰๋ฐ์ดํ„ฐ(ํ•œ๋ฒˆ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” only read = ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ X)

'Dataops > Hadoop' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

fredapi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜ค๋ฅ˜  (0) 2024.03.03

FRED ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ fredapi๋ฅผ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์•„๋‚˜์ฝ˜๋‹ค ๊ฐ€์ƒํ™˜๊ฒฝ ๋ชจ๋“ˆ์—์„œ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ Python 3.9 ์ด์ƒ์—์„œ๋Š” fredapi์— ์ €๋Ÿฐ ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ์ฆ‰ ํŒŒ์ด์ฌ ๋ฒ„์ „๊ณผ fredapi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถฉ๋Œ์ด๋‹ค. ๊ทธ๋ž˜์„œ fredapi๋ฅผ ์žฌ์„ค์น˜๋ฅผ ํ•ด์ค˜์•ผํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋จผ์ € ์•„๋‚˜์ฝ˜๋‹ค์— ์„ค์น˜๋˜์–ด ์žˆ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•ด์คฌ๋‹ค.

conda uninstall fredapi

 

๋ฌธ์ œ๋Š” conda install fredapi๋ฅผ ํ•˜๋ฉด PackagesNotFoundError๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์„œ ์„ค์น˜๊ฐ€ ์•ˆ๋œ๋‹ค.

๊ทธ๋ž˜์„œ pip์„ ์‚ฌ์šฉํ•ด์„œ ์„ค์น˜ํ•ด์คฌ๋”๋‹ˆ,,, ์ด๋ฒˆ์—” pandas์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ pandas๋„ ์žฌ์„ค์น˜ํ•ด์คฌ๋‹ค.

pip install fredapi

 

๋‹ค์‹œ ํ•œ๋ฒˆ ๋А๋ผ์ง€๋งŒ ํŒŒ์ด์ฌ์€ ๋ฒ„์ „์— ๋„ˆ๋ฌด ๋ฏผ๊ฐํ•ด์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒŒ ํ•ญ์ƒ ๋ฌธ์ œ์ธ ๊ฑฐ ๊ฐ™๋‹ค.

'Dataops > Hadoop' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ•˜๋‘ก ๊ธฐ๋ณธ์ •๋ณด  (0) 2024.03.03

+ Recent posts