Spark Speculative Execution
Databricks Certification ์ทจ๋์ ๋ชฉํ๋ก Apache Spark๋ฅผ โ์ ๋๋กโ ๊ณต๋ถํด๋ณด๊ณ ์์ต๋๋ค. ํ์ฌ์์ Databricks Unity Catalog๋ฅผ ๋์ ํ๋ ค๊ณ ๋ถํฌํ๊ณ ์๋๋ฐ์. Spark์ ์ข ์นํด์ง ์ ์์๊น์? ๐ ์ ์ฒด ํฌ์คํธ๋ Development - Spark์์ ํ์ธํด์ค ์ ์์ต๋๋ค.
Spark Speculative Execution์ด๋
๋ณธ์ธ ํ์ฌ๋ 2018๋
๋ถํฐ Databricks๋ฅผ ๋์
ํด Spark๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค. ์ฌ์ฉํ์ง ์ค๋ ๋์ด์ ๊ทธ๋ฐ์ง Databricks Job๋ค์ ์ ๋ง ๋ค์ํ Spark Config๋ค์ด ์ธํ
๋์ด ์์๋ค. ์์ฆ ํ์ฌ์์ ์ฌ์ฉํ๋ Spark Config๋ฅผ ์ ๋ฆฌํด์ ๋ฐํ๋ฅผ ์ค๋นํ๊ณ ์๋๋ฐ, spark.speculation
๋ผ๋ config๊ฐ ๋ด ๋๊ธธ์ ๋๊ฒ ๋์๊ณ , ๊ทธ๋ ๊ฒ ์ค๋์ ์ฃผ์ ์ธ Speculative Execution์ ๋ํด ์ดํด๋ณด๊ฒ ๋์๋ค.
Speculative Execution ๊ธฐ๋ฅ์ Spark 0.6.0
๋ถํฐ ๋์
๋ ์ ์ ๊น์ ๊ธฐ๋ฅ์ด๋ค. spark.speculation
๋ผ๋ Config๋ก ์ ์ดํ๋๋ฐ, ์ค๋ช
์ ์๋์ ๊ฐ๋ค.
If set to โtrueโ, performs speculative execution of tasks. This means if one or more tasks are running slowly in a stage, they will be re-launched.
์ด ๊ธฐ๋ฅ์ Spark์์ ์คํํ๋ ์ผ๋ถ Task๊ฐ ๋น์ ์์ ์ผ๋ก ๋๋ฆฌ๊ฒ ์คํ๋๊ณ ์์ ๋, ๊ทธ๊ฒ์ ์ธ์ํ๊ณ ํด๋น Task๋ฅผ ๋ค๋ฅธ Worker ๋ ธ๋์์ ์ถ๊ฐ๋ก ์คํํด๋ณด๋ ๊ธฐ๋ฒ์ด๋ค. speculative๋ผ๊ณ ์ด๋ฆ ๋ถ์ ์ด์ ๋ Task๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ ์ถ์ (speculate)ํด ๋๋นํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค.
๋ง์ฝ ๋ค๋ฅธ ๋ ธ๋์ ๋ณต์ ๋ ์์ ์ด ๋๋ฆฌ๊ฒ ์คํ๋๋ ๊ธฐ์กด ์์ ๋ณด๋ค ๋จผ์ ๋๋๊ฒ ๋๋ค๋ฉด, ๊ทธ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๊ณ ๊ธฐ์กด ์์ ์ ์ทจ์(kill) ์ํจ๋ค.
Spark Configuration
์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ์๊ณ , ๊ธฐ๋ฅ์ ์ผ๊ณ ์ถ๋ค๋ฉด spark.speculation = true
๋ก ์ค์ ํ๋ฉด ๋๋ค.
Speculation์์ ์์
์ ๋ณต์ ํ ์ง ๋ง์ง ์ฌ๋ถ ํ๋จ์ spark.speculation.interval
์ ๋ช
์ํ ์ฃผ๊ธฐ๋ก ์ผ์ด๋๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ 100ms
๋ก ๋์ด ์๋ค. ์ด๋, spark.speculation.minTaskRuntime
๊ฐ(default: 100ms)๋ณด๋ค ์ค๋ ์คํ๋๋ ์์
์ด Speculation ๋์์ด ๋๋ค. ๋, spark.speculation.quantile
๊ฐ(default: 0.75)์ ์ํด ํด๋น Task๊ฐ ์คํ๋๋ Stage์ Task๋ค์ด ์ผ์ ๋น์จ ์ด์ ์คํ ์๋ฃ ๋์ด์ผ Speculation ์์
์ด ํธ๋ฆฌ๊ฑฐ ๋๊ธฐ ์์ํ๋ค.
Speculation ๊ฒ์ฌ๊ฐ ์คํ๋๋๋ผ๋, ์์
์ด ์ถฉ๋ถํ ๋๋ ค์ผ Speculative Execution์ด ํธ๋ฆฌ๊ฑฐ ๋๋ค. ๊ทธ ๊ฐ์ spark.speculation.multiplier
๋ก ํ๋จํ๋ฉฐ, ํด๋น Task๊ฐ ์คํ๋๋ Stage์์ ํจ๊ป ์คํ๋๋ ์์
๋ค์ ํ๊ท ์์
์๋ฃ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ช ๋ฐฐ(default: 1.5) ์ด์ ๊ฑธ๋ฆฌ๋ฉด ๋๋ฆฐ ์์
์ด๋ผ๊ณ ํ๋จํ๊ณ , ์์
์ ๋ณต์ ํ๋ค.
๋งบ์๋ง
์ ๊ธฐ๋ฅ์ ๋ณธ๋ Hadoop์์ ์ ๋ํ ๊ธฐ๋ฅ์ด๋ค. ํ๋ก์์๋ ๊ฐ์ ์ด๋ฆ์ธ โSpeculative Executionโ๋ผ๊ณ ๋ถ๋ ๋ค. ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์์ ์์ ์ด ์ง์ฐ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ค์ํ ๊ธฐ๋ฒ์ด๋ผ๊ณ ํ๋ค.
๋ค๋ง, Spark์์ ์ ๊ณตํ๋ Default Config์ ๊ฐ์ด ์ค์ ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ์๋ ๊ดด๋ฆฌ๊ฐ ์์ด์ Linkedin์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๊ฐ์ ์ปค์คํ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ๋ค.