2 Tue
TIL
[AI ์ค์ฟจ 1๊ธฐ] 9์ฃผ์ฐจ DAY 2
Big Data : Spark ์๊ฐ I
๋น ๋ฐ์ดํฐ์ ์ ์
์๋ฒ ํ๋๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ท๋ชจ์ ๋ฐ์ดํฐ
์๋ง์กด์ DATA SCIENTIST ์กด๋ผ์ฐ์ ๊ฐ ๋ด๋ฆฐ ์ ์
๋ถ์ฐ ํ๊ฒฝ์ด ํ์ํ๋๋์ ํฌ์ปค์ค
๊ธฐ์กด์ ์ํํธ์จ์ด๋ก๋ ์ฒ๋ฆฌํ ์ ์๋ ๊ท๋ชจ์ ๋ฐ์ดํฐ
๊ธฐ์กด ์ํํธ์จ์ด๋ ์ค๋ผํด์ด๋ MySQL ๋ฑ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์๋ฒ์ ์ฌ์์ ๋์ด์ง ์๋ ์ด์ ์ฒ๋ฆฌ ๋ถ๊ฐ (Scale-up)
์๋ฒ์ ์๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒ์ Scale-out ์ด๋ผ๊ณ ํจ
4V
Volume : ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ๋์ฉ๋
Velocity : ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ์๋๊ฐ ์ค์
Variety : ๊ตฌ์กฐํ/๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ
Veracity : ๋ฐ์ดํฐ์ ํ์ง
๋น ๋ฐ์ดํฐ์ ์ - ์น ํ์ด์ง
์์ญ์กฐ๊ฐ ์ด์์ ์น ํ์ด์ง ์กด์ฌ ex) ๊ตฌ๊ธ
์ด๋ฅผ ํฌ๋กคํ์ฌ ์ค์ํ ํ์ด์ง๋ฅผ ์ฐพ์๋ด๊ณ ์ธ๋ฑ์ฑํ๋ ๊ฒ์ ์์ฒญ๋ ํฌ๊ธฐ์ ๋ฐ์ดํฐ ์์ง๊ณผ ๊ณ์ฐ์ ํ์๋ก ํ๋ค
์ฌ์ฉ์ ๊ฒ์์ด์ ํด๋ฆญ ์ ๋ณด ์์ฒด๋ ๋์ฉ๋
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์ ๊ตฌ๊ธ์ด ๋น ๋ฐ์ดํฐ ๊ธฐ์ ์ ๋ฐ์ ์ ์ง๋ํ ๊ณตํ์ ํ๊ฒ ๋จ
๋์ฉ๋ ์ฒ๋ฆฌ ๊ธฐ์
๋ถ์ฐ ํ๊ฒฝ ๊ธฐ๋ฐ : 2๋ ์ด์์ ์๋ฒ๋ก ๊ตฌ์ฑ
๋ถ์ฐ ์ปดํจํ ๊ณผ ๋ถ์ฐ ํ์ผ ์์คํ ์ด ํ์
๋ชจ๋ ์๋ฒ๋ค์ด ๊ฐ์ง ๋์คํฌ๋ฅผ ๋ชจ๋ ํฉ์ณ์ ๊ฐ์๋์คํฌ๋ก ์ฌ์ฉ
Fault Tolerance : ์์์ ์๋ฒ๊ฐ ๊ณ ์ฅ๋๋ ๋์ํด์ผํจ
Sacle Out : ํ์ฅ์ด ์ฉ์ดํด์ผํจ
ํ๋ก์ ๋ฑ์ฅ
Doug Cutting์ด ๊ตฌ๊ธ๋ฉ ๋ฐํ ๋ ผ๋ฌธ๋ค์ ๊ธฐ๋ฐํด ๋ง๋ ์คํ์์ค ํ๋ก์ ํธ
Doug Cutting์ ์๋ค์ ์ฝ๋ผ๋ฆฌ ์ธํ ์ด๋ฆ์ด ํ๋ก
์ฒ์ ์์์ Nutch๋ผ๋ ์คํ์์ค ๊ฒ์์์ง์ ํ๋ถ ํ๋ก์ ํธ
ํฌ๊ฒ ๋ ๊ฐ์ ์๋ธ ์์คํ ์ผ๋ก ๊ตฌํ๋จ
๋ถ์ฐ ํ์ผ ์์คํ ์ธ HDFS
๋ถ์ฐ ์ปดํจํ ์์คํ ์ธ MapReduce
์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ์จ์ ๊ทน๋ํ
์์ ์ ๋ฐ๋ผ์๋ ํ๋ก๊ทธ๋๋ฐ์ด ๋๋ฌด ๋ณต์กํ๋ค => ์ฑ๋ฅ์ ์ด์ ์ ๋ง์ถค
๊ฒฐ๊ตญ Hive ์ฒ๋ผ MapReduce๋ก ๊ตฌํ๋ SQL ์ธ์ด๋ค์ด ๋ค์ ๊ฐ๊ด์ ๋ฐ๊ฒ ๋จ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์น ์์ ์ ์ต์ ํ ๋์ด ์์ด์ realtime์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ๋ ์ด๋ ต๋ค
ํ๋ก์ ๋ฐ์
ํ๋ก 1.0์ HDFS์์ MapReduce๋ผ๋ ๋ถ์ฐ์ปดํจํ ์์คํ์ด ๋๋ ๊ตฌ์กฐ
๋ค๋ฅธ ๋ถ์ฐ์ปดํจํ ์์คํ ์ ์ง์ํ์ง ๋ชปํจ
ํ๋ก 2.0์ ์ํคํ ์ฒ๊ฐ ํฌ๊ฒ ๋ณ๊ฒฝ๋จ
ํ๋ก์ ๊ธฐ๋ฐ ๋ถ์ฐ์ฒ๋ฆฌ ์์คํ ์ด ๋๊ณ ๊ทธ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ตฌ์กฐ
Spark๋ ํ๋ก 2.0์์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์ด๋ก ์คํ๋จ
HDFS - ๋ถ์ฐ ํ์ผ ์์คํ
๋ฐ์ดํฐ๋ฅผ ๋ธ๋ก ๋จ์๋ก ์ ์ฅ
๋ธ๋ก์ ํฌ๊ธฐ๋ 128MB
๋ธ๋ก ๋ณต์ ๋ฐฉ์
๊ฐ ๋ธ๋ก์ 3๊ตฐ๋ฐ์ ์ค๋ณต ์ ์ฅ๋จ => Fault tolerance๋ฅผ ๋ณด์ฅ
์ด๊ฒ์ด ์๋ฏธ๊ฐ ์์ผ๋ ค๋ฉด ์๋ฒ๊ฐ 3๋๋ ์์ด์ผ ๋จ
๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ๋ ธ๋์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ ์ด ์์น๋ ๋ค์ ๋ ธ๋์ ์ ์ฅ๋์ด ์์
๋ฐ์ดํฐ ๋ ธ๋๋ ๊ณ ์ฅ๋๋ฉด ๋ค๋ฅธ ๋ฐฑ์ ๋ ธ๋๋ฅผ ์ฐธ์กฐํ๋ฉด ๋๋ค
ํ๋ก 1.0์์๋ ๋ค์ ๋ ธ๋๊ฐ ๊ณ ์ฅ๋๋ฉด ์น๋ช ์
ํ๋ก 2.0์์๋ 2nd ๋ค์ ๋ ธ๋๋ฅผ ์ถ๊ฐ
๋ถ์ฐ ์ปดํจํ ์์คํ
ํ๋ก 1.0
ํ๋์ ์ก ํธ๋์ปค์ ๋ค์์ ํ์คํฌ ํธ๋์ปค๋ก ๊ตฌ์ฑ
์ก ํธ๋์ปค๊ฐ ์ผ์ ๋๋ ์ ๋ค์์ ํ์คํฌ ํธ๋์ปค์๊ฒ ๋ถ๋ฐฐ
ํ๋ก 2.0
ํด๋ผ์ด์ธํธ, ๋ฆฌ์์ค ๋งค๋์ , ๋ ธ๋ ๋งค๋์ , ์ปจํ ์ด๋๋ก ์ญํ ์ธ๋ถํ
ํ๋ก์ ์ด์ฉํ ๋ฐ์ดํฐ ์์คํ ๊ตฌ์ฑ
ํ๋ก์ ํํ ์ด์ผ๊ธฐํ๋ Data Warehouse
์ํ๋ก์ฐ(์ฌ๋ฌ ๊ณณ์ผ๋ก ๋ฐ์ดํฐ ํธ์) ๊ด๋ฆฌ๋ก๋ Airflow๊ฐ ๋์ธ
ํ๋ก 1.0 vs ํ๋ก 2.0
ํ๋ก 2.0์ YARN ์ด๋ผ๊ณ ๋ถ๋ฆ
YARN์ด๋ผ๋ ํ๋ ์ ์ํฌ ์์์ ๋ ์์ ์ธ ๋ถ์ฐ ์ปดํจํ ์์คํ ์ด ์๋๋ ์ ์๋๋ก ํจ
Big Data : Spark ์๊ฐ II
Spark์ ๋ฑ์ฅ
๋ฒํด๋ฆฌ ๋ํ์ AMPLab์์ ์ํ์น ์คํ์์ค ํ๋ก์ ํธ๋ก 2013๋ ์์
ํ๋ก์ ๋ค๋ฅผ ์๋ 2์ธ๋ ๋น ๋ฐ์ดํฐ ๊ธฐ์
์์ฒด ๋ถ์ฐํฉ๊ฒฝ๋ ์ง์ํ์ง๋ง ์ฃผ๋ก ํ๋ก 2.0 ์์์ ๋ถ์ฐํ๊ฒฝ์ผ๋ก ์ฌ์ฉ
์ค์นผ๋ผ๋ก ์์ฑ๋จ
MapReduce์ ๋จ์ ์ ๋ํญ์ ์ผ๋ก ๊ฐ์
Pandas์ ๊ต์ฅํ ํก์ฌ
ํ์ฌ ๋ฒ์ ์ Spark3
Scala, Java, Python3์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅ
๋จธ์ ๋ฌ๋ ๊ด๋ จํด์ ๋ง์ ๊ฐ์ ์ด ์์ ex) GPU ํ๊ฒฝ
Spark vs MapReduce
MR์ ๋์คํฌ ๊ธฐ๋ฐ, S๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ
MR์ ํ๋ก ์์์๋ง ๋์, S๋ ํ๋ก ์ด์ธ์ ํ๊ฒฝ ์ง์
MR์ ํค์ ๋ฐธ๋ฅ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ, S๋ ํ๋ค์ค์ ํก์ฌ
S๋ ๋ค์ํ ๋ฐฉ์์ ์ปดํจํ ์ ์ง์
๋ฐฐ์น, ์คํธ๋ฆฌ๋ฐ, SQL, ๋จธ์ ๋ฌ๋ ๋ฑ
Spark์ ๊ตฌ์กฐ
๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ ์กด์ฌ
Spark๋ ํ๋ก 2.0 (ํน์ ํ๋ก 3.0) ์์ ์ฌ๋ผ๊ฐ๋ ์ ํ๋ฆฌ์ผ์ด์
Spark ํ๋ก๊ทธ๋๋ฐ
RDD
๋ก์ฐ๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ API => ์ธ๋ฐํ ์ ์ด ๊ฐ๋ฅ
์ฝ๋ฉ์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค๋ ๋จ์
DataFrame & Dataset
์ค์นผ๋ผ๋ ์๋ฐ๋ ๋ฐ์ดํฐ์
ํ์ด์ฌ์ ๋ฐ์ดํฐํ๋ ์์ ์ฌ์ฉ(ํ์ด์ฌ์ ์ปดํ์ผ์ด ํ์ ์๊ธฐ ๋๋ฌธ)
ํ์ด๋ ๋ฒจ ํ๋ก๊ทธ๋๋ฐ API๋ก ์ ์ ๋ง์ด ์ฌ์ฉ๋๋ ์ถ์ธ
SparkSQL์ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ์ฐ๊ฒ ๋๋ค
ํ๋ค์ค
ํ์ด์ฌ์ผ๋ก ๋ฐ์ดํฐ ๋ถ์์ ํ๋๋ฐ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๋ชจ๋ ์ค์ ํ๋
์์ ์์ ํ๋ ์ผ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํ์ด์ฌ ๋ชจ๋
MATPLOTLIB(์๊ฐํ)- SCIKIT-LEARN(๋จธ์ ๋ฌ๋)๊ณผ ๊ฐ์ ๋ชจ๋๊ณผ ๊ฐ์ด ์ฌ์ฉ๋จ
์๊ท๋ชจ์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ต์
ํ ๋์ ์๋ฒ์์ ๋ค๋ฃฐ ์ ์๋ ๋ฐ์ดํฐ๋ก ํฌ๊ธฐ๊ฐ ์ ์ฝ๋จ
๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ์ง ์์
์ ๋๊ฐ์ง์ ํน์ง์ด ๋ณ๋ ฌ์ฒ๋ฆฌ์์ ํ๋ค์ค๋ฅผ ์ฐ์ง ์๋ ์ด์
ํ ์ ์๋ ์ผ
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฅ
๋ค์ํ ํต๊ณ ์งํ ๋์ถ
๋ฐ์ดํฐ ์ฒญ์ ์์ => ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
์๊ฐํ
ํ๋ค์ฌ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
์์ ์ ์ํธ์ ํด๋นํ๋ ๊ฒ์ด Dataframe
์์ ์ํธ์ ์ปฌ๋ผ์ ํด๋นํ๋ ๊ฒ์ด Series
Spark ์ธ์
์คํํฌ ํ๋ก๊ทธ๋จ์ ์์์ Spark ์ธ์ ์ ๋ง๋ค์ด์ผ ํ๋ค
์คํํฌ ์ธ์ ์ ํตํด ์คํํฌ๊ฐ ์ ๊ณตํด์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉ
์คํํฌ 2.0 ์ด์ ์๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ปจํ ์คํธ๋ฅผ ์์ฑํด์ผ ํ์
Spark ๋ฐ์ดํฐ ๊ตฌ์กฐ
ํฌ๊ฒ 3๊ฐ์ง์ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์กด์ฌ
RDD
๊ฑฐ์ ๋๋ถ๋ถ์ ์คํํฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ
์๋ฒ์ ์ ์ฅ๋ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฅผ ์ง์นญ
๋ก์ฐ๋ ๋ฒจ ๋ฐ์ดํฐ ์ด๋ค
๊ตฌ์กฐํ/๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ง์
RDD๋ ๋ค์์ ํํฐ์ ์ผ๋ก ๊ตฌ์ฑ๋๊ณ ์คํํฌ ํด๋ฌ์คํฐ๋ด ์๋ฒ๋ค์ ๋๋ ์ ์ฅ๋๋ค
์ด ๋ RDD๋ ๋ฐ๋ก ํด๋ฌ์คํฐ์ ์ ์ฅ๋์ง๋ง ์ผ๋ฐ ํ์ด์ฌ ๋ฐ์ดํฐ๋ parallelize ํจ์๋ฅผ ํตํด RDD๋ก ๋ณํ๋ ๋ค ์ ์ฅ๋๋ค
ex) (๋ฌผ๋ก ์ด๋ ๊ฒ ์์ ๋ฐ์ดํฐ๋ฅผ ํด๋ฌ์คํฐ์ ์ฌ๋ฆด ์ด์ ๋ ์๋ค)
Dataframe & Dataset
RDD๋ ์ปฌ๋ผ์ด ์๋๋ฐ์ ๋นํด ๋ฐ์ดํฐ ํ๋ ์๊ณผ ๋ฐ์ดํฐ ์ ์ ์ปฌ๋ผ์ด ์กด์ฌ => ๊ฐ๋ฐ์๊ฐ ์ ์ฉ
๋ฐ์ดํฐํ๋ ์์ ํ์ ์ด ์๊ณ ๋ฐ์ดํฐ์ ์ ํ์ ์ด ์๋ค
ํ์ ์ด ์๋ ํ์ด์ฌ์์๋ ๋ฐ์ดํฐ ํ๋ ์ ์ฌ์ฉ
ํ์ ์ด ์๋ ์๋ฐ๋ ์ค์นผ๋ผ๋ ๋ฐ์ดํฐ์ ์ฌ์ฉ
๋ ์์ธํ๋ ์ปดํ์ผ ํ๊ธฐ์ ์ ํ์ ์ ๋ฏธ๋ฆฌ ์๊ณ ์์ด์ผ ํ๋์ง ์๋์ง์ ๋ํ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์๋ค
parallelize : data => rdd
collect : rdd => data
์ด ๋ ์ฃผ์ํด์ผ ํ ์ ์ collectํ ๋ฐ์ดํฐ๊ฐ ์์์ผ ํ๋ค. ๊ต์ฅํ ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ ์ค๋ฅ๊ฐ ๋ ์ ์์
Big Data : Spark์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
์คํํฌ ์ธ์
์ค์นดํ๋ฅผ ์คํํ ๋๋ ์คํํฌ ์ธ์ ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋จผ์ ์์ฑํด์ผํจ
๋ฐ์ดํฐ์ ๋ํ ์์ ์ ๋ชจ๋ ์คํํฌ ํด๋ฌ์คํฐ ์์์ ์๋ํ๋ฉฐ ํ์ด์ฌ์ด๋ ์๋ฐ ์ฝ๋๋ ์ด ๋ฐ์ดํฐ์ ๋ํ ์กฐ์์ ๋ช ๋ น๋ง ํ ๋ฟ์ด๋ค. ์ค์ ๋ก๋ ์ํธ๋ฆฌ ํฌ์ธํธ๊ฐ ์์ด์ผ ํ๋๋ฐ ์ด๊ฒ์ด ์คํํฌ ์ธ์
spark = SparkSession()
appName
config : ๋ค์ํ ํํ์ ํค์ ๋ฐธ๋ฅ๋ค์ ์คํํฌ ํด๋ฌ์คํฐ์๊ฒ ์ ๋ฌ ๊ฐ๋ฅ
getOrCreate() : ์คํํฌ๋ฅผ ์์ฑ
sc = spark.Context
sc => RDD ์กฐ์
spark = ๋ฐ์ดํฐ ํ๋ ์ ์กฐ์
Spark ๋ฐ์ดํฐ ๊ตฌ์กฐ - ๋ฐ์ดํฐ ํ๋ ์ ์์ฑ ๋ฐฉ๋ฒ
RDD๋ฅผ ๋ณํํด์ ์์ฑ : RDD์ toDF ํจ์ ์ฌ์ฉ
SQL ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ
์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ์ฌ ์์ฑ EX) .csv / .jdbc
Spark ๊ฐ๋ฐ ํ๊ฒฝ
๊ฐ์ธ์ปดํจํฐ์ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๊ฐํธํ๊ธฐ๋ ํ์ง๋ง ๋ ธํธ๋ถ๋ฑ์ ์ค์นํด์ผํจ
์๋๋ฉด spark-submit๋ฅผ ์ด์ฉํด ์คํ
๊ฐ์ข ๋ฌด๋ฃ ๋ ธํธ๋ถ ์ฌ์ฉ
๊ตฌ๊ธ colab
๋ฐ์ดํฐ๋ธ๋ฆญ์ ์ปค๋ฎค๋ํฐ ๋ ธํธ๋ถ(์๋๊ฐ ์ฝ๋ฉ๋ณด๋ค ์ข ๋๋ฆฐ ๋ฏ)
์ ํ๋ฆฐ์ ๋ฌด๋ฃ ๋ ธํธ๋ถ : ํ ๊ฐ์ง ์ธ์ด๊ฐ ์๋๋ผ ์ฌ๋ฌ ์ธ์ด๋ก ํ ์ ์์(์๋๊ฐ ์ฝ๋ฉ๋ณด๋ค ์ข ๋๋ฆฐ ๋ฏ)
์ค์ ํ์
AWS์ EMR ํด๋ฌ์คํฐ ์ฌ์ฉ
Last updated
Was this helpful?