Apache Spark
date
Mar 12, 2024
slug
apache-spark
status
Published
tags
Tool
PL & Compiler
summary
type
Post
ํจ์ํ ์ธ์ด ์ฐ์ฑ
- p217 ~ 227
์ํ์น ์คํํฌ(Apache Spark)๋ ํ๋ก ๋งต๋ฆฌ๋์ค๊ฐ ๋์คํฌ ๊ธฐ๋ฐ์ผ๋ก ์์ง์ธ๋ค๋ ๊ตฌ์กฐ์ ๋จ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๊ทน๋ณตํ๋ฉด์ ํ๋ก ์ํ๊ณ์ ์ค์ฌ์ ์๋ฆฌ์ก๊ฒ ๋ ์คํ์์ค ๋ถ์ฐ ๋ณ๋ ฌ ํ๋ ์์ํฌ์ด๋ค.
์คํํฌ๋ RDD(Resilient Distributed Dataset)๋ผ๋ ๋ถ์ฐ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, RDD๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ(Immutable)ํ ๋ฆฌ์คํธ์ ๋ํด ๊ณ ์ฐจ ํจ์๋ฅผ ์ ์ฉํ๋ค๋ ํจ์ํ ์ธ์ด์ ๊ธฐ๋ณธ์ ์ธ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ฐ๋ฅธ๋ค.
โ ๋ถ์ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ์ ์๋ ๋ณ๊ฒฝ ๋ถ๊ฐํ ๋ฆฌ์คํธ, ๊ณ ์ฐจ ํจ์์ ๋๋ค์์ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ ๊ธฐ์ ๊ฐ๋ฅ
๋ํ Hadoop์ ์ฌ์ฉํ ๋ Java๋ฅผ ์ฌ์ฉํ๋๋ฐ ํด๋น ์ธ์ด์ ํน์ฑ์ผ๋ก ์ธํด ๊ฐ๋จํ ๋งต๋ฆฌ๋์ค ์์
์๋ ์ฌ๋ฌ ๊ฐ์ ํ์ผ, ํด๋์ค๋ฅผ ์์ฑํด์ผ ํ์ผ๋, Spark๋ Scala๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์
์ ํจ์ฌ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ค.
โ ๋น
๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ์ํ ์ธ์ด์ ๋ง๋จ์ด ๊ฐ์ ธ๋ค์ฃผ๋ ํํ
์คํํฌ์ ๋์ ๊ณผ์
๋๋ผ์ด๋ฒ(Driver)์ ์ต์คํํฐ(Executor) ํ๋ก๊ทธ๋จ์ด ํ๋ํ์ฌ ์ผ์ ์ฒ๋ฆฌํ๋ค.
๋๋ผ์ด๋ฒ๋ main์ด ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ, ์ต์คํํฐ์๊ฒ ์ ์ ํ ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ๋ช
๋ นํ๋ฉด ์ต์คํํฐ๋ ๊ทธ ๋ช
๋ น์ ๋ฐ๋ผ ์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
์ ์ฝ๋๋ฅผ spark-shell ํ๊ฒฝ์์ ์คํํ๋ค๋ฉด spark-shell์ด ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ด ๋๋ค. ๋๋ผ์ด๋ฒ๋ ์ฝ๋์ ๋ด์ฉ์ ํด์ํด์ ์ต์คํํฐ์๊ฒ ํ์ํ ์ผ์ ์ํค๊ณ , ํ์ํ ๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค๋ฐ๋๋ค.
์ฆ ์ฝ๋๋ spark-shell์์ ์
๋ ฅํ์ง๋ง, ์ค์ ์ผ์ ๋ค๋ฅธ ๋จธ์ ์์ ์ผ์ด๋๋ ๊ฒ์ด๋ค.
๋ํ ํธ๋์คํฌ๋ฉ์ด์
(Transformation)๊ณผ ์ก์
(Action)์ผ๋ก ๋๋๋ค๋ ๊ฐ๋
์ด ์กด์ฌํ๋๋ฐ,
map
, filter
, flatMap
, distinct
์ ๊ฐ์ ํธ๋์คํฌ๋ฉ์ด์
์ฐ์ฐ์ lazyํ๊ฒ ๋์ํ์ฌ reduce
, collect
, foreach
, count
์ ๊ฐ์ ์ก์
์ฐ์ฐ์ด ๋ฐ์ํ ๋๊น์ง ๊ณ์ฐ์ ๋ฏธ๋ฃฌ๋ค.๋ง์ฝ ๋ฐ์ดํฐ๊ฐ ์ปค์ ํ๋์ ์ฐ์ฐ์ ๋ช ๋ถ์ฉ ๊ฑธ๋ฆฌ๋ ์ํฉ์์ lazyํ ํ๊ฐ ๋ฐฉ์์ด ์์๋ค๋ฉด, ํ ์ค์ ์ฝ๋๋ฅผ ์
๋ ฅํ ๋๋ง๋ค ๊ธด ์๊ฐ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
์คํ ๊ฒฐ๊ณผ
๋ง์คํฐ(Master)์ ์ฌ๋ ์ด๋ธ(Slave)๋ฅผ ๊ธฐ๋ํ์๊ณ , ์ฌ๋ ์ด๋ธ๋ ๋ง์คํฐ์ ์ฐ๊ฒฐ๋์ด ์๋ค.
์ ์ฝ๋๋ฅผ ์คํํ ํ๊ฒฝ์ 1๊ฐ์ Worker์ 8๊ฐ์ Core๊ฐ ์ค๋น๋์ด ์๋ ์ํ์ด๋ฉฐ, ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก
split
ํ์ ๋ 8๊ฐ์ ๋ฐ์ดํฐ๊ฐ RDD์ ์กด์ฌํ๊ณ ์๋ค. 8๊ฐ์ ์ต์คํํฐ๊ฐ ์คํ๋์ด ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๋ถ์ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Hadoop๊ณผ์ ๋น๊ต
Java๋ก Hadoop์ ์ฌ์ฉํ์ ๋ Mapper, Reducer ํด๋์ค๋ฅผ ์์ฑํ ๋ ๋ง์ ์ฝ๋๊ฐ ํ์ํ์ง๋ง, Spark๋ RDD์ ๊ณ ์ฐจ ํจ์์ธ
flatMap
, map
, reduceByKey
๋ฅผ ์ฌ์ฉํ์ฌ ์ต์คํํฐ์ ์ํด ์ฐ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋๋ผ์ด๋ฒ์์ collectํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์๋ค.โ ์ค์ ์ฐ์ฐ ์ํ์ ๋๋ผ์ด๋ฒ๊ฐ ์๋ ์ต์คํํฐ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ collect๋ฅผ ์ฌ์ฉํ์ง ์๊ณ println๋ง ์ํํ๋ฉด ์๋ฌด๋ฐ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ง ์๋๋ค.
โ collect๋ฅผ ํตํด ๋ถ์ฐ๋์ด ์๋ RDD์ ๋ด์ฉ์ ๋๋ผ์ด๋ฒ๊ฐ ์์งํ๋ฉฐ, ์ด์ ์ ์์ ์ผ๋ก ์ถ๋ ฅํ ์ ์๋ค.