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) (๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์˜ฌ๋ฆด ์ด์œ ๋Š” ์—†๋‹ค)

        py_list = [1, 2, 3, 4]
        rdd = sc.parallelize(py_list)
        print(rdd.collect())
    • 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?