๐Ÿ“’ Spark(1)

Kimdongkiยท2024๋…„ 6์›” 17์ผ

Spark

๋ชฉ๋ก ๋ณด๊ธฐ
1/22

๐Ÿ“Œ Spark

  • ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์˜ AMPLab์—์„œ Apache OpenSource Project๋กœ 2013๋…„์— ์‹œ์ž‘ํ•˜์˜€๋‹ค.
  • Hadoop์˜ ๋’ค๋ฅผ ์ž‡๋Š” 2์„ธ๋Œ€ ๋น…๋ฐ์ดํ„ฐ ๊ธฐ์ˆ ์ด๋‹ค.
    • YARN๋“ฑ์„ ๋ถ„์‚ฐํ™˜๊ฒฝ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • Scala๋กœ ์ž‘์„ฑ๋œ๋‹ค.

1. Saprk 3.0์˜ ๊ตฌ์„ฑ

  • Spark Core
  • Spark SQL
  • Spark ML
  • Spark MLlib
  • Spark Streaming
  • Spark GraphX

2. Spark vs. MapReduce

  • Spark์€ ๊ธฐ๋ณธ์ ์œผ๋กœ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์ด๋‹ค.

    • ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • MapReduce๋Š” ๋””์Šคํฌ ๊ธฐ๋ฐ˜์ด๋‹ค.
  • MapReduce๋Š” Hadoop(YARN)์œ„์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค.

    • Spark์€ Hadoop(YARN)์ด์™ธ์—๋„ ๋‹ค๋ฅธ ๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ™˜๊ฒฝ๋„ ์ง€์›ํ•œ๋‹ค.(K8s, Mesos)
  • MapReduce๋Š” ํ‚ค์™€ ๋ฐธ๋ฅ˜ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋งŒ ์ง€์›ํ•œ๋‹ค.

    • Spark์€ ํŒ๋‹ค์Šค ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ๊ฐœ๋…์ ์œผ๋กœ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.
  • Spark์€ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ์ปดํ“จํŒ…์„ ์ง€์›ํ•œ๋‹ค.

    • ๋ฐฐ์น˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ, SQL, ML, Graph ๋ถ„์„

3. Spark ProgramingAPI

  • RDD (Resilient Distributed Dataset)
    • ๋กœ์šฐ๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ API๋กœ ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅ
    • ํ•˜์ง€๋งŒ ์ฝ”๋”ฉ ๋ณต์žก๋„ ์ฆ๊ฐ€
  • DataFrame & Dataset (ํŒ๋‹ค์Šค์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ํก์‚ฌ)
    • ํ•˜์ด๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ API๋กœ ์ ์  ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ถ”์„ธ
    • ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ์กฐ์ž‘์ด๋ผ๋ฉด ๋ณดํ†ต Spark SQL์„ ์‚ฌ์šฉ
    • DataFrame/Dataset์ด ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š”?
      • ML ํ”ผ์ณ ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ•˜๊ฑฐ๋‚˜ Spark ML์„ ์“ฐ๋Š” ๊ฒฝ์šฐ
      • SQL๋งŒ์œผ๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์˜ ๊ฒฝ์šฐ

4. Spark SQL

  • Spark SQL์€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ SQL๋กœ ์ฒ˜๋ฆฌ
  • ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ SQL๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์€ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ sql๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • ํŒ๋‹ค์Šค๋„ ๋™์ผ ๊ธฐ๋Šฅ ์ œ๊ณต
  • Hive ์ฟผ๋ฆฌ ๋ณด๋‹ค ์ตœ๋Œ€ 100๋ฐฐ๊นŒ์ง€ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์žฅ
    • ์‚ฌ์‹ค์€ ๊ทธ๋ ‡์ง€ ์•Š์Œ. Hive๋„ ๊ทธ ์‚ฌ์ด์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๊ฑธ๋กœ ๋ฐœ์ „
      • Hive: ๋””์Šคํฌ -> ๋ฉ”๋ชจ๋ฆฌ
      • Spark: ๋ฉ”๋ชจ๋ฆฌ -> ๋””์Šคํฌ
      • Presto: ๋ฉ”๋ชจ๋ฆฌ -> ๋””์Šคํฌ

5. Spark ML

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๊ด€๋ จ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ๊ตฌ์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Classification, Regression, Clustering, Collaborative Filtering, โ€ฆ
    • ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋Š” ๋งํฌ ์ฐธ๊ณ . ๋”ฅ๋Ÿฌ๋‹ ์ง€์›์€ ๋ฏธ์•ฝ
  • RDD ๊ธฐ๋ฐ˜๊ณผ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๊ธฐ๋ฐ˜์˜ ๋‘ ๋ฒ„์ „์ด ์กด์žฌ
    • spark.mllib vs. spark.ml
      • spark.mllib๊ฐ€ RDD ๊ธฐ๋ฐ˜์ด๊ณ  spark.ml์€ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๊ธฐ๋ฐ˜
      • spark.mllib๋Š” RDD์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์ด์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ๋จ
    • ํ•ญ์ƒ spark.ml์„ ์‚ฌ์šฉํ•  ๊ฒƒ!
      • import pyspark.ml (import pyspark.mllib)

6. Spark ML์˜ ์žฅ์ 

  • ์›์Šคํ†ฑ ML ํ”„๋ ˆ์ž„์›!
    • ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ SparkSQL๋“ฑ์„ ์ด์šฉํ•ด ์ „์ฒ˜๋ฆฌ
    • Spark ML์„ ์ด์šฉํ•ด ๋ชจ๋ธ ๋นŒ๋”ฉ
    • ML Pipeline์„ ํ†ตํ•ด ๋ชจ๋ธ ๋นŒ๋”ฉ ์ž๋™ํ™”
    • MLflow๋กœ ๋ชจ๋ธ ๊ด€๋ฆฌํ•˜๊ณ  ์„œ๋น™ (MLOps)
  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

7. Spark ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ ์‚ฌ์šฉ ์˜ˆ๋“ค

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ, ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ, ๋ชจ๋ธ ๋นŒ๋”ฉ
    • ์˜ˆ 1) ๋Œ€์šฉ๋Ÿ‰ ๋น„๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ (ETL ํ˜น์€ ELT)
    • ์˜ˆ 2) ML ๋ชจ๋ธ์— ์‚ฌ์šฉ๋˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ํ”ผ์ณ ์ฒ˜๋ฆฌ (๋ฐฐ์น˜/์ŠคํŠธ๋ฆผ)
    • ์˜ˆ 3) Spark ML์„ ์ด์šฉํ•œ ๋Œ€์šฉ๋Ÿ‰ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ํ•™์Šต

8. Spark ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ ์‚ฌ์šฉ ์˜ˆ 1

  • ๋Œ€์šฉ๋Ÿ‰ ๋น„๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ (Hive์˜ ๋Œ€์ฒด ๊ธฐ์ˆ )
    • ETL ํ˜น์€ ELT

9. Spark ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ ์‚ฌ์šฉ ์˜ˆ 2

  • ML ๋ชจ๋ธ์— ์‚ฌ์šฉ๋˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ํ”ผ์ณ ์ฒ˜๋ฆฌ

0๊ฐœ์˜ ๋Œ“๊ธ€