๋ชฉ๋ก๋ฐ์ดํฐ/Spark (22)
๐ฅ
์คํธ๋ฆฌ๋ฐ ์ฟผ๋ฆฌ์์์ ์ง๊ณ๋ ๋ณดํต ํ์ฌ์๊ฐ๋ถํฐ T์๊ฐ ์ ๊น์ง ์ง๊ณ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฅผ๋ค์ด ์ง๋ 15์ด ๋์์ ์ง๊ณ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋ฉด 15์ด์ ์๊ฐ์ ์ธ์ ๋ถํฐ ์ธ์ ๊น์ง์ธ์ง ์๋ฌธ์ด ์๊ธธ ์ ์๋ค. ์คํธ๋ฆผ ์ฒ๋ฆฌ์์ ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ ๋ค์ํ ๊ธฐ์ค์ด ์๋ค. ์คํธ๋ฆผ ์ฒ๋ฆฌ์์์ ์๊ฐ ๊ด์ ์ด๋ฒคํธ ์๊ฐ (event time) ๋ฐ์ดํฐ ์์กด์ ์ธ ํ์์คํ ํ๋ก, ๋ฐ์ดํฐ ๋ด์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ๋ฐ์ ์๊ฐ์ด๋ค. ๋ฐ์ดํฐ ์์กด์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ ํ ๊ฐ์ ํ์์คํฌํ๋ก ๋ฃ์ ๊ฒ์ธ์ง๋ ๋ค๋ฅด๊ฒ ์ง๋ง ์ฃผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๊ฐ์ ๋ง์ด ์ฌ์ฉํ๋ค. windowing ์ ์ฌ์ฉํ ์ ์๋ ์์ฃผ ์ ์ ํ ์๊ฐ ์ค ํ๋์ด๋ค. ์์ง ์๊ฐ (ingestion time) ์คํธ๋ฆผ ์ฒ๋ฆฌ ์์ง์ ๋ฐ์ดํฐ๊ฐ ์ฒ์์ผ๋ก ์์ง๋, ์ฆ ๋ค์ด์จ ์๊ฐ์ ๋ํ๋ธ๋ค. ์ฒ๋ฆฌ ์๊ฐ..
streaming ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ filter, count ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.๊ณผ๊ฑฐ ๋ฐ์ดํฐ์ ์ ๋ณด๊ฐ ํ์์๋ stateless ์ฐ์ฐ์์, ๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ๊ฐ ํ์ํด ๋ฐ์ดํฐ ์ ์ง๊ฐ ํ์ํ statefull ์ฐ์ฐ์๋ก ๋๋ ์ ์๋ค.Stateless Trasformation๊ณผ๊ฑฐ์ ๋ฐ์ดํฐ์ ์๊ด ์์ด ํ์ฌ์ ๋ฐ์ดํฐ๋ง ์ฌ์ฉํ๋ ์ฐ์ฐ์Stateful Transfmraion์ด์ ๋ฐฐ์น์ ๋ฐ์ดํฐ์ ์ ์ง๊ฐ ํ์ํ ์ฐ์ฐ์์: aggreagion, counter, join, group, windowing ๋ฑStateless Transformation๊ฐ ๋ฐฐ์น๋ฅผ ์ด์ ๋ฐฐ์น๋ฅผ ์ฐธ์กฐํ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. -> ๋ฐฐ์น์ ์ถ๋ ฅ์ด ํด๋น ๋ฐฐ์น์ ๋ฐ์ดํฐ๋ง์ ๊ธฐ๋ฐ์ผ๋ก ํจ์ ์๋ฏธselect, filter, map, fla..
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 Streaming ์ด๋ core spark API์ ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ถ์ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ก์ธ์ฑ์ ์ง์ํ๋ค. streaming ํ์ ์ผ๋ก๋ ์๋์ ๊ฐ์ด ๋ ์ข ๋ฅ๊ฐ ์๋๋ฐ spark streaming์ RDD ๋ฒ ์ด์ค ์์ง์ผ๋ก, 2.x๋ฒ์ ๊น์ง ์ง์ํ๊ณ ์ดํ ๋์ด์ ์ ๋ฐ์ดํธ ๋์ง ์๋ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์ด๋ค. Spark Streaming ์ข ๋ฅ Spark Streaming: RDD ๊ธฐ๋ฐ์ micro-batch ์ํ Spark Structured Streaming: Dataframe ๊ธฐ๋ฐ micro-batch ์ํ, ์ ์ง์ฐ ์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ๋์ ํจ์ผ๋ก์จ ์ค์๊ฐ์ ๊ฐ๊น์ด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง. Spark Structured Streaming ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ structured streaming์์๋ ํธ๋ฆฌ๊ฑฐ ๊ฐ๊ฒฉ๋ง๋ค ์์ ..
์ฐธ๊ณ : https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables ๊ณต์ ๋ณ์ ์คํํฌ์์๋ ๋ถ์ฐํ์ฌ ๋ณ๋ ฌ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์(ํํฐ์ ๋) ์ฌ๋ฌ ๋จธ์ ์์ ๋์์ ์ฒ๋ฆฌํ๋ค. ์ด๋ ์ฌ์ฉ๋ ๋ชจ๋ ๋ณ์๋ ๋ฐฐํฌ๋ ๋ ๋ณต์ฌ๋ ๋ณต์ฌ๋ณธ์ผ๋ก ์๋ํ๋๋ฐ, ์ด๋ฌํ ๋ณ์์ ์ ๋ฐ์ดํธ๋ driver์ ๋ค์ ์ ๋ฌ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์กฐ๊ฑด(?) ์ ๊ฐ์ง๊ณ ์์ด์ผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด๋ด๋ ์ ํ๋ ์ ํ์ ๊ณต์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ ํ ์ํ๋ ๊ฐ์ ๋ฐ์ ์ ์๋ค. Broadcast Variable ๋ธ๋ก๋์บ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์์ ๋ณต์ฌ๋ณธ์ ์ ๋ฌํ๋๊ฒ ์๋, Read Only ๋ณ์๋ฅผ ๊ฐ ์์ปค ๋ ธ๋์ ์บ์๋ ์ํ๋ก..