๋ชฉ๋ก๋ฐ์ดํ„ฐ/Spark (22)

๐Ÿฅ

[Spark] ์ŠคํŒŒํฌ ์ŠคํŠธ๋ฆฌ๋ฐ์˜ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์™€ Watermark

์ŠคํŠธ๋ฆฌ๋ฐ ์ฟผ๋ฆฌ์—์„œ์˜ ์ง‘๊ณ„๋Š” ๋ณดํ†ต ํ˜„์žฌ์‹œ๊ฐ„๋ถ€ํ„ฐ T์‹œ๊ฐ„ ์ „๊นŒ์ง€ ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์˜ˆ๋ฅผ๋“ค์–ด ์ง€๋‚œ 15์ดˆ ๋™์•ˆ์˜ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•˜๋ฉด 15์ดˆ์˜ ์‹œ๊ฐ„์€ ์–ธ์ œ๋ถ€ํ„ฐ ์–ธ์ œ๊นŒ์ง€์ธ์ง€ ์˜๋ฌธ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ์—์„œ ๋ฐ”๋ผ๋ณด๋Š” ์‹œ๊ฐ„์€ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์ด ์žˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ์—์„œ์˜ ์‹œ๊ฐ„ ๊ด€์  ์ด๋ฒคํŠธ ์‹œ๊ฐ„ (event time) ๋ฐ์ดํ„ฐ ์˜์กด์ ์ธ ํƒ€์ž„์Šคํ…œํ”„๋กœ, ๋ฐ์ดํ„ฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐœ์ƒ ์‹œ๊ฐ„์ด๋‹ค. ๋ฐ์ดํ„ฐ ์˜์กด์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ๊ฐ’์„ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ๋„ฃ์„ ๊ฒƒ์ธ์ง€๋Š” ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ์ฃผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ๊ฐ„์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. windowing ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์ ์ ˆํ•œ ์‹œ๊ฐ„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ˆ˜์ง‘ ์‹œ๊ฐ„ (ingestion time) ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ์—”์ง„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ˆ˜์ง‘๋œ, ์ฆ‰ ๋“ค์–ด์˜จ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฒ˜๋ฆฌ ์‹œ๊ฐ„..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 21. 21:30
[Spark] Structured Streaming - stateful transformation๊ณผ Window operation

streaming ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ filter, count ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๊ฐ€ ํ•„์š”์—†๋Š” stateless ์—ฐ์‚ฐ์ž์™€, ๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ด ๋ฐ์ดํ„ฐ ์œ ์ง€๊ฐ€ ํ•„์š”ํ•œ statefull ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.Stateless Trasformation๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ์™€ ์ƒ๊ด€ ์—†์ด ํ˜„์žฌ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์žStateful Transfmraion์ด์ „ ๋ฐฐ์น˜์˜ ๋ฐ์ดํ„ฐ์˜ ์œ ์ง€๊ฐ€ ํ•„์š”ํ•œ ์—ฐ์‚ฐ์ž์˜ˆ: aggreagion, counter, join, group, windowing ๋“ฑStateless Transformation๊ฐ ๋ฐฐ์น˜๋ฅผ ์ด์ „ ๋ฐฐ์น˜๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. -> ๋ฐฐ์น˜์˜ ์ถœ๋ ฅ์ด ํ•ด๋‹น ๋ฐฐ์น˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ์„ ์˜๋ฏธselect, filter, map, fla..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 16. 22:24
[Spark] Spark Structured Streaming - Fault Tolerance

Background ์‹ค์‹œ๊ฐ„ stream ์ฒ˜๋ฆฌ๋Š” ์ง€์†์ ์ธ input stream์˜ ํŠน์„ฑ ์ƒ ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  24์‹œ๊ฐ„ ์‹คํ–‰๋˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์˜ค๋ฅ˜ ์›์ธ์œผ๋กœ failure์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. input stream์ด ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ (์ž˜๋ชป๋œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ) ์‹œ์Šคํ…œ/cluster ์˜ค๋ฅ˜์˜ ๊ฒฝ์šฐ Spark Streaming์—์„œ์˜ Fault Tolerance ์ •์˜ ์ŠคํŒŒํฌ์˜ ๋ชฉํ‘œ๋Š” end-to-end Exactly Once ๋ณด์žฅ์ด๋‹ค. (์ฐธ๊ณ ) At Most Once: ๊ฐ ๋ ˆ์ฝ”๋“œ๋Š” ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋˜๊ฑฐ๋‚˜ ์•„์˜ˆ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค. At Least Once: ๊ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๋ฏ€๋กœ At Most Once๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜์ง€๋งŒ ์ค‘๋ณต์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. Exactly Once: ๊ฐ ..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 4. 00:25
[Spark] Accumulator์™€ Broadcast (๊ณต์œ ๋ณ€์ˆ˜)

์ฐธ๊ณ : https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables ๊ณต์œ ๋ณ€์ˆ˜ ์ŠคํŒŒํฌ์—์„œ๋Š” ๋ถ„์‚ฐํ•˜์—ฌ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์„œ(ํŒŒํ‹ฐ์…”๋‹) ์—ฌ๋Ÿฌ ๋จธ์‹ ์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ๋ฐฐํฌ๋  ๋•Œ ๋ณต์‚ฌ๋œ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜์˜ ์—…๋ฐ์ดํŠธ๋Š” driver์— ๋‹ค์‹œ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์กฐ๊ฑด(?) ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋Ÿด๋•Œ ์ œํ•œ๋œ ์œ ํ˜•์˜ ๊ณต์œ  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ›„ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. Broadcast Variable ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜์˜ ๋ณต์‚ฌ๋ณธ์„ ์ „๋‹ฌํ•˜๋Š”๊ฒŒ ์•„๋‹Œ, Read Only ๋ณ€์ˆ˜๋ฅผ ๊ฐ ์›Œ์ปค ๋…ธ๋“œ์— ์บ์‹œ๋œ ์ƒํƒœ๋กœ..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 1. 20:55