스파크 클러스터, 런타임 아키텍처에 대한 이해
Spark cluster ?
- spark application을 구동하기 위한 분산 클러스터.
- spark cluster 설정 예시
- 10개의 worker node.
- 각 worker node당 사양.
- cluster의 사양.
- 80 CPU cores.
- 320 GB RAM.
런타임 아키텍처
- Worker node의 spec ≥ Yarn RM이 할당한 spec (크거나 같아야 함)

런타임 아키텍처 - Application Master(AM) container
- AM (Application Master) Container 내에 main() 존재.
- PySpark 사용 시, Python wrapper는 Py4J 라는 라이브러리를 사용해, JVM 내의 Java wrapper를 호출.
(Py4J : Python application이 Java application 호출할 수 있게 함.)
- 그 후 JVM 내의 Scala application이 실행됨.
- Application Driver는 실제 데이터를 분산 처리 하지 않음. (실제 데이터는 Executor Node에서 처리됨.)

런타임 아키텍처 - AM Container + Yarn RM + Executor Container

Deploy mode - cluster, client mode
Deploy mode
- 크게 cluster, client 두 가지 모드가 존재.
- Cluster mode
- 명령어 :
spark-submit --master yarn **--deploy-mode cluster**