spark_cluster_manager

Spark ν΄λŸ¬μŠ€ν„°

  • image

    • https://learn.microsoft.com/ko-kr/azure/hdinsight/spark/apache-spark-settings

  • μŠ€νŒŒν¬λŠ” λ§ˆμŠ€ν„°/슬레이브 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λ©°, 쀑앙 μ‘°μ •μžμΈ λ“œλΌμ΄λ²„μ™€ μ—¬λŸ¬ λΆ„μ‚° μž‘μ—… λ…Έλ“œμΈ μ΅μŠ€νν„°λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. λ“œλΌμ΄λ²„λŠ” μžλ°” ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ™μž‘ν•˜λ©°, SparkContextλ₯Ό μƒμ„±ν•˜κ³ , RDDλ₯Ό λ§Œλ“€λ©°, μ‚¬μš©μž μ½”λ“œμ˜ νŠΈλžœμŠ€ν¬λ©”μ΄μ…˜κ³Ό μ•‘μ…˜μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

  • μ΅μŠ€νν„°λŠ” 슀파크 μž‘μ—…μ˜ κ°œλ³„ νƒœμŠ€ν¬λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. μ΅μŠ€νν„°λŠ” 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 λ•Œ ν•œλ²ˆ μƒμ„±λ˜κ³ , μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ 계속 λ™μž‘ν•©λ‹ˆλ‹€. μ΅μŠ€νν„°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μž‘μ—…μ„ μ‹€ν–‰ν•˜κ³ , κ²°κ³Όλ₯Ό λ“œλΌμ΄λ²„μ—κ²Œ λ°˜ν™˜ν•˜λŠ” 역할을 ν•˜λ©°, 블둝 λ§€λ‹ˆμ €λ₯Ό 톡해 μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ—μ„œ μΊμ‹œν•˜λŠ” RDDλ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜λŠ” 역할도 ν•©λ‹ˆλ‹€. RDDκ°€ μ΅μŠ€νν„° 내뢀에 μΊμ‹œλ˜κΈ° λ•Œλ¬Έμ—, μž‘μ—…μ˜ 싀행이 μš©μ΄ν•΄μ§‘λ‹ˆλ‹€.

  • μŠ€νŒŒν¬μ—μ„œ λΆ„μ‚° 처리λ₯Ό ν•  λ•ŒλŠ”, RDD 생성 및 λ³€ν™˜μœΌλ‘œ κ΅¬μ„±λœ 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν΄λŸ¬μŠ€ν„°μ— λ°°ν¬ν•©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 μ‹œ 싀행에 ν•„μš”ν•œ executor의 μŠ€νŽ™μ„ μ§€μ •ν•©λ‹ˆλ‹€. ExecutorλŠ” μ›Œμ»€ λ…Έλ“œμ—μ„œ μ‹€ν–‰λ˜μ–΄ 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΆ„μ‚° μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ‘œ 이 μŠ€νŽ™μ—λŠ” CPU μ½”μ–΄ 수, λ©”λͺ¨λ¦¬ ν• λ‹ΉλŸ‰, 그리고 ν΄λŸ¬μŠ€ν„° λ‚΄μ—μ„œ 싀행될 executor의 수 등이 ν¬ν•¨λ©λ‹ˆλ‹€.

spark ν΄λŸ¬μŠ€ν„° λ§€λ‹ˆμ €

  • image

  • ν΄λΌμš°λ“œμ—μ„œ standalone cluster mode, ν•˜λ‘‘μ—μ„œ YARN, Apache Mesos, Kubernetesμ—μ„œ 슀파크λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • https://medium.com/@rachit1arora/why-run-spark-on-kubernetes-51c0ccb39c9b

  • μŠ€νŒŒν¬λŠ” ν΄λŸ¬μŠ€ν„° ν™˜κ²½μ—μ„œ RDDλ₯Ό μ²˜λ¦¬ν•˜λŠ” λΆ„μ‚°μ²˜λ¦¬ ν”Œλž«νΌμž…λ‹ˆλ‹€. μŠ€νŒŒν¬λŠ” ν΄λŸ¬μŠ€ν„° λ¦¬μ†ŒμŠ€ 관리λ₯Ό μœ„ν•΄ YARN, Mesos λ˜λŠ” Spark Standalone λ“±μ˜ ν΄λŸ¬μŠ€ν„° 관리 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

  • YARN은 ν•˜λ‘‘μ˜ ν΄λŸ¬μŠ€ν„° 관리 μ‹œμŠ€ν…œμ΄λ©°, HDFS와 ν•¨κ»˜ μ‚¬μš©λ  λ•Œ 데이터 지역성을 ν™œμš©ν•΄ 효율적인 I/O 처리λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

  • MesosλŠ” 동적인 CPU μ½”μ–΄ ν• λ‹Ή λ³€κ²½ λ“± 세뢀적인 μ œμ–΄λ₯Ό ν—ˆμš©ν•˜λŠ” λ²”μš© ν΄λŸ¬μŠ€ν„° 관리 μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

  • Standalone은 μŠ€νŒŒν¬μ— ν¬ν•¨λœ μ „μš© ν΄λŸ¬μŠ€ν„° 관리 μ‹œμŠ€ν…œμœΌλ‘œ, λ³„λ„μ˜ μ‹œμŠ€ν…œ 없이도 μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. ν΄λŸ¬μŠ€ν„° ν™˜κ²½μ—μ„œ 각 머신은 λ§ˆμŠ€ν„° λ…Έλ“œ(λ¦¬μ†ŒμŠ€λ₯Ό 관리) λ˜λŠ” μ›Œμ»€ λ…Έλ“œ(처리λ₯Ό μ‹€ν–‰)둜 λ™μž‘ν•©λ‹ˆλ‹€.

Standalone

  • image

    • https://www.researchgate.net/figure/Spark-Standalone-clustering-system_fig2_336020411

  • μ•„νŒŒμΉ˜ 슀파크 μ›Œν¬λ‘œλ“œμš©μœΌλ‘œ νŠΉλ³„νžˆ μ œμž‘λœ κ²½λŸ‰ν™” ν”Œλž«νΌμœΌλ‘œ ν•˜λ‚˜μ˜ ν΄λŸ¬μŠ€ν„°μ—μ„œ λ‹€μˆ˜μ˜ 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 싀행을 μœ„ν•œ κ°„λ‹¨ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λ©° λŒ€ν˜• 슀파크 μ›Œν¬λ‘œλ“œλ‘œ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ§Œ μ‹€ν–‰ν•  수 μžˆλ‹€λŠ” 큰 단점, ν΄λŸ¬μŠ€ν„° ν™˜κ²½μ„ λΉ λ₯΄κ²Œ ꡬ좕해 슀파크 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•΄μ•Ό ν•˜κ±°λ‚˜ YARNμ΄λ‚˜ λ©”μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•΄λ³Έ κ²½ν—˜μ΄ μ—†λ‹€λ©΄ κ°€μž₯ 쒋은 μ„ νƒμ§€μž…λ‹ˆλ‹€.

YARN

  • image

    • https://medium.com/@goyalsaurabh66/running-spark-jobs-on-yarn-809163fc57e2

  • ν•˜λ‘‘ YARN은 작 μŠ€μΌ€μ€„λ§κ³Ό ν΄λŸ¬μŠ€ν„° μžμ› κ΄€λ¦¬μš© ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€.

  • μŠ€νŒŒν¬λŠ” 기본적으둜 ν•˜λ‘‘ YARN ν΄λŸ¬μŠ€ν„° λ§€λ‹ˆμ €λ₯Ό μ§€μ›ν•˜μ§€λ§Œ ν•˜λ‘‘ μžμ²΄κ°€ ν•„μš”ν•œ 것은 μ•„λ‹™λ‹ˆλ‹€.

  • ν•˜λ‘‘ YARN은 λ‹€μ–‘ν•œ μ‹€ν–‰ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ§€μ›ν•˜λŠ” 톡합 μŠ€μΌ€μ€„λŸ¬μž…λ‹ˆλ‹€.

  • cluster λͺ¨λ“œλŠ” YARN ν΄λŸ¬μŠ€ν„°μ—μ„œ 슀파크 λ“œλΌμ΄λ²„ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜λ©° ν΄λΌμ΄μ–ΈνŠΈλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•œ λ‹€μŒ μ¦‰μ‹œ μ’…λ£Œλ©λ‹ˆλ‹€. client λͺ¨λ“œλŠ” λ“œλΌμ΄λ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

  • ν•˜λ‘‘ μ„€μ •

    • 슀파크λ₯Ό μ΄μš©ν•΄ HDFS의 νŒŒμΌμ„ 읽고 μ“°λ €λ©΄ 슀파크 ν΄λž˜μŠ€νŒ¨μŠ€μ— 두 개의 ν•˜λ‘‘ μ„€μ • νŒŒμΌμ„ ν¬ν•¨μ‹œμΌœμ•Όν•©λ‹ˆλ‹€.

    • HDFS ν΄λΌμ΄μ–ΈνŠΈμ˜ λ™μž‘ 방식을 κ²°μ •ν•˜λŠ” hdfs-site.xml 파일, κΈ°λ³Έ 파일 μ‹œμŠ€ν…œμ˜ 이름을 μ„€μ •ν•˜λŠ” core-site.xml

    • /etc/hadoop/conf ν•˜μœ„μ— μ„€μ • 파일이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

Mesos

  • image

    • https://datastrophic.io/spark-jobserver-from-spark-standalone-to-mesos-marathon-and-docker-part-i/

  • μ•„νŒŒμΉ˜ λ©”μ†ŒμŠ€λŠ” CPU, λ©”λͺ¨λ¦¬, μ €μž₯μ†Œ 그리고 λ‹€λ₯Έ μ—°μ‚° μžμ›μ„ λ¨Έμ‹ μ—μ„œ μΆ”μƒν™”ν•©λ‹ˆλ‹€.

  • λ‚΄κ³ μž₯μ„±(fault-tolerant) 및 탄λ ₯적 λΆ„μ‚° μ‹œμŠ€ν…œ(elastic distributed system)을 μ‰½κ²Œ κ΅¬μ„±ν•˜κ³  효과적으둜 μ‹€ν–‰ν•©λ‹ˆλ‹€.

  • λ©”μ†ŒμŠ€λŠ” 슀파크처럼 짧게 μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ λ‹€λ₯Έ μžμ› μΈν„°νŽ˜μ΄μŠ€ λ“± 였래 μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜κΉŒμ§€ 관리할 수 μžˆλŠ” 데이터센터 규λͺ¨μ˜ ν΄λŸ¬μŠ€ν„° λ§€λ‹ˆμ €λ₯Ό μ§€ν–₯ν•©λ‹ˆλ‹€.

  • λ©”μ†ŒμŠ€λŠ” μŠ€νŒŒν¬μ—μ„œ μ§€μ›ν•˜λŠ” ν΄λŸ¬μŠ€ν„° λ§€λ‹ˆμ € 쀑 κ°€μž₯ 무겁고 λŒ€κ·œλͺ¨μ˜ λ©”μ†ŒμŠ€ 배포 ν™˜κ²½μ΄ μžˆλŠ” κ²½μš°μ—λ§Œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

Kubernetes

  • image

    • https://spark.apache.org/docs/3.3.1/running-on-kubernetes.html#cluster-mode

  • spark-submitKubernetes ν΄λŸ¬μŠ€ν„°μ— Spark μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ œμΆœν•˜λŠ” 데 직접 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 제좜 λ©”μ»€λ‹ˆμ¦˜ μž‘λ™

    • SparkλŠ” Kubernetes ν¬λ“œ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” Spark λ“œλΌμ΄λ²„λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

    • λ“œλΌμ΄λ²„λŠ” Kubernetes ν¬λ“œ λ‚΄μ—μ„œλ„ μ‹€ν–‰λ˜λŠ” μ‹€ν–‰κΈ°λ₯Ό μƒμ„±ν•˜κ³  μ—°κ²°ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ™„λ£Œλ˜λ©΄ μ‹€ν–‰κΈ° ν¬λ“œκ°€ μ’…λ£Œλ˜κ³  μ •λ¦¬λ˜μ§€λ§Œ λ“œλΌμ΄λ²„ ν¬λ“œλŠ” 둜그λ₯Ό μœ μ§€ν•˜κ³  κ²°κ΅­ κ°€λΉ„μ§€ μˆ˜μ§‘λ˜κ±°λ‚˜ μˆ˜λ™μœΌλ‘œ 정리될 λ•ŒκΉŒμ§€ Kubernetes APIμ—μ„œ "μ™„λ£Œ" μƒνƒœλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

  • μ™„λ£Œλœ μƒνƒœμ—μ„œ λ“œλΌμ΄λ²„ ν¬λ“œλŠ” 계산 λ˜λŠ” λ©”λͺ¨λ¦¬ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš© ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Reference

  • https://www.amazon.com/Spark-Definitive-Guide-Processing-Simple/dp/1491912219

  • https://www.oreilly.com/library/view/learning-spark/9781449359034/ch01.html

  • https://spark.apache.org/docs/3.3.1/running-on-kubernetes.html#cluster-mode

Last updated