๋ชฉ๋ก์ ์ฒด ๊ธ (59)
๐ฅ
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b5c8dS/btsJ0frfrjV/oH2XFWIoCKlusqSziFK7rk/img.png)
Spark on KubernetesSpark์์๋ cluster manager๋ก kubernetes๋ฅผ ์ง์ํ๋ค(2.3 ๋ฒ์ ๋ถํฐ). kubernetes๊ฐ ๊ด๋ฆฌํ๋ ํด๋ฌ์คํฐ์์ spark๊ฐ ์คํ๋๊ณ , ๋ค์ดํฐ๋ธ kubernetes ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ค. ์ฅ์ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ํฌ๋ก๋์ฟ ๋ฒ๋คํฐ์ค์ HPA๋ฅผ ์ฌ์ฉํด executor ์๋ฅผ ์๋ฉ์ผ๋ก ์กฐ์ ํ ์ ์๋ค.์์ ๋ฐ ๋ฐฐํฌ ๊ด๋ฆฌ ์ ํ์ฑ๋จ์ ์ด๊ธฐ ์ค์ ๋ณต์ก์ฑkubernetes ์ค์ผ์ค๋ง ๋ฌธ์ : third party scheduler๋ฅผ ์ฌ์ฉํด์ผ ํจkubernetes ํด๋ฌ์คํฐ์ ์ํ์ spark ์ฑ๋ฅ ๋ฐ ๊ฐ์ฉ์ฑ์ ์ํฅ์ ๋ฐ์๋ณต์กํ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น - spark ์์ฒด ๋ก๊ทธ, pod ๋ก๊ทธ, ์์คํ ๋ก๊ทธ, ์ด๋ฒคํธ ๋ก๊ทธ ๋ฑ...data locality - kubernetes์์๋ s..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OmjZP/btsJXUCAy9l/jcqGYVjgNQNC0Hq5VaqY41/img.png)
์ค์ ์ง์ค์ ๋ก๊น ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐํ๊ฒฝ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ด์ํ๋ฉด ๊ฐ ์๋น์ค์์ ๋ฐ์ํ ๋ก๊ทธ ํ์ผ๋ค์ ํํธํ๋์ด ๊ฐ๊ฐ ์ ์ฅ๋๋ค.์๋ก ๋ค๋ฅธ ๊ฐ๋ณ ์๋น์ค์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ฅผ ์ฐ๊ฒฐ์ง์ด ์ฒ์๋ถํฐ ๋๊น์ง ์์๋๋ก ์ถ์ ํ๋ ๊ฒ์ ์ด๋ ต๋ค.๋ฐ๋ผ์ ๋ก๊ทธ์ ์ถ์ฒ์ ์๊ด์์ด ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์ ์ผ๋ก ์ ์ฅ, ๋ถ์ํด์ผ ํ๋ฉฐ, ์๋น์ค ์คํ ํ๊ฒฝ์์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ๋์ด์ผ ํ๋ค. ์ฅ์ ์ฌ๋ฌ ์๋ฒ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ํ ๊ณณ์ ์์งํ๊ธฐ ๋๋ฌธ์ ๋ค์ํ ์์คํ ์ ์ํ๋ฅผ ํ ๋ฒ์ ํ์ ํ ์ ์๋ค.๋ชจ๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ์ ์ฅํ๋ฏ๋ก ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋ค. (๋ณดํต ์ฉ๋์ด ํฌ๊ณ ํ์ฅ ๊ฐ๋ฅํ DB๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง์ฌ์ฉ)์ค์์์ ๋ก๊ทธ๋ฅผ ํ ๋ฒ์ ๊ฒ์ํ๊ณ ๋ถ์ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๊ธฐ๊ฐ ์ฌ์์ง๊ณ , ๋ฌธ์ ํด๊ฒฐ ์๊ฐ์ด ๋จ์ถ๋๋ค.๋จ์ ๋จ์ผ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cTxL7H/btsIAZDDjWl/ZHT2YTMVAo5a2SiuowqGiK/img.png)
1. Mysql ์ฐ๊ฒฐ jdbc ๋ค์ด๋ก๋https://dev.mysql.com/downloads/connector/j/ํํ์ด์ง์์ ํ๊ฒฝ์ ๋ง๋ jdbc๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ ์์ถํ์ผ ๋ด์ ์๋ .jar ํ์ผ์ Nifi ์คํ ์๋ฒ์ ์์น์ํจ๋ค.์ฌ๋ฌ ๋ ธ๋๋ก ํด๋ฌ์คํฐ๋ง๋์ด ์๋ค๋ฉด ๋ชจ๋ ๋์ผ ์์น์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค. 2. DBCPConnectionPool ์์ฑNifi > ์ฐํด๋ฆญ > Configure > Controller Services์์ DBCPConnectionPool ์ถ๊ฐ ํ ์ค์ ์์ ์๋์ ํญ๋ชฉ์ ์ฑ์์ฃผ๋ฉด ๋๋ค.Database Connection URL: jdbc:mysql://์ฃผ์:port/db๋ช Database Driver Class Name: com.mysql.jdbc.DriverDatabase Driv..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MEYxm/btsHzpQyeqi/EafP0u017v8Nwp1Gg8ubH0/img.webp)
https://www.youtube.com/watch?v=7y9gNwqLNtU์ ๋์์ ์ ๋ฆฌํจ hive -> iceberg๋ก ๋ณ๊ฒฝํ ์ฌ๋ก Line ๋ฐ์ดํฐ ํ๋ซํผ์ ๊ธฐ์กด ๋ฐฉ์๋ฐ์ดํฐ ํ๋ซํผ์ ํน์ง๋ฐ์ดํฐ์ ํฌ๊ธฐ/์ข ๋ฅ/ํ์ฉ ๊ท๋ชจ๊ฐ ํฌ๋ค๋จธ์ ์: 5000 ๋+๋ฐ์ดํฐ ํฌ๊ธฐ: 290 PB+ํ์ด๋ธ ํ ์ด๋ธ ์: 4๋ง๊ฐ (๋ชจ๋ external table)log ingestion rate: ์ด๋น 17.5M+ํ๋ฃจ์ ๊ตฌ๋๋๋ job ์: 15๋ง+ํ๋ซํผ ์ฌ์ฉ์ ์: 700+ Query ProcessingSQL ๊ธฐ๋ฐ, spark, hive, trino, flink๋ฅผ ๋ถ์ฐ sql ์ฟผ๋ฆฌ ์์ง์ผ๋ก ์ฌ์ฉ๋ฐ์ดํฐํ์ผ์ด ์ด๋์ ์๋์ง, ์ด๋ป๊ฒ ์ฝ๊ณ ์ธ์์๋์ง์ ๋ํ ์ ๋ณด ํ์์ฟผ๋ฆฌ์ ๋ํ ํ ์ด๋ธ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง๋ ํ ์ด๋ธ ํฌ๋งท์ ์ํด ์ ์๋จ *..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2X0nK/btsGNqXXc2m/4uHJgpxRXrq1XXL1Xvj0z1/img.png)
์คํธ๋ฆฌ๋ฐ ์ฟผ๋ฆฌ์์์ ์ง๊ณ๋ ๋ณดํต ํ์ฌ์๊ฐ๋ถํฐ T์๊ฐ ์ ๊น์ง ์ง๊ณ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฅผ๋ค์ด ์ง๋ 15์ด ๋์์ ์ง๊ณ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋ฉด 15์ด์ ์๊ฐ์ ์ธ์ ๋ถํฐ ์ธ์ ๊น์ง์ธ์ง ์๋ฌธ์ด ์๊ธธ ์ ์๋ค. ์คํธ๋ฆผ ์ฒ๋ฆฌ์์ ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ ๋ค์ํ ๊ธฐ์ค์ด ์๋ค. ์คํธ๋ฆผ ์ฒ๋ฆฌ์์์ ์๊ฐ ๊ด์ ์ด๋ฒคํธ ์๊ฐ (event time) ๋ฐ์ดํฐ ์์กด์ ์ธ ํ์์คํ ํ๋ก, ๋ฐ์ดํฐ ๋ด์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ๋ฐ์ ์๊ฐ์ด๋ค. ๋ฐ์ดํฐ ์์กด์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ ํ ๊ฐ์ ํ์์คํฌํ๋ก ๋ฃ์ ๊ฒ์ธ์ง๋ ๋ค๋ฅด๊ฒ ์ง๋ง ์ฃผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๊ฐ์ ๋ง์ด ์ฌ์ฉํ๋ค. windowing ์ ์ฌ์ฉํ ์ ์๋ ์์ฃผ ์ ์ ํ ์๊ฐ ์ค ํ๋์ด๋ค. ์์ง ์๊ฐ (ingestion time) ์คํธ๋ฆผ ์ฒ๋ฆฌ ์์ง์ ๋ฐ์ดํฐ๊ฐ ์ฒ์์ผ๋ก ์์ง๋, ์ฆ ๋ค์ด์จ ์๊ฐ์ ๋ํ๋ธ๋ค. ์ฒ๋ฆฌ ์๊ฐ..