Open seoyeong200 opened 5 months ago
A
/B
로 구분해두는게 필요한가?bitnami/spark
image - most popular, docker hub dockerfiledelta lake
- the environment connected to delta lake is set up already, can read data from delta. docker hub, dockerfileA. 흐음 설명해주신대로 우리 실습할 때나 로컬 환경에서 사용하는 용도로는 A로 충분할 것으로 생각. 만약에 A환경으로 불가능한 작업이 있다고하면 Databricks에서 작업하는 걸로 가이드하는 걸로 진행합시다!! (물론, 우리가 진행하는 프로젝트 정도로 불가능한 작업은 없을 것으로 생각함!!)
다만, B도 시간 있으면 만들어두는 것도 괜찮을 듯함!! 서영님의 프로젝트 경험으로 Spark의 모든 환경을 다 구축해보고 각 구축 목적을 이해하는 느낌으로!! 만들어 놓으면 나중에 spark-sumit 테스트 용도로도 사용할 수 있을 것 같습니다!!
결론, 일단 우선은 A만!!! 시간 잇으면 B도 진행
A. 이거는 처음 고민해본 내용이라 좀 더 리서치가 필요할거 같은데, 지금 생각으로는 필요없지 않을까로 좀 더 기울고 있음!! Spark history 필요성 검색하면 아래와 같이 나오는데, 현재 느끼기에는 디버깅 및 최적화정도 말고는 꼭 필요한지는 의문이 있음!! 사람마다 생각은 다 다르겠지만 나는 보통 인프라 구축할 때, 내가 해당 인프라를 구축할 필요성이 명확하게 없으면 안하는게 맞다라고 생각하는 주의라 history server의 역할이 없다면 필요없다고 생각합니다!!
[history server 필요성 검색 결과] 1/ 애플리케이션 실행 기록: Spark History Server는 모든 Spark 애플리케이션 실행의 메타데이터와 로그를 저장하여 나중에 분석할 수 있게 합니다. 2/ 디버깅 및 최적화: 애플리케이션의 성능 문제를 디버깅하고 최적화하는 데 도움이 됩니다. 실행된 작업의 상세한 정보와 실행 계획을 시각적으로 확인할 수 있습니다. 3/ 리소스 사용 모니터링: 클러스터에서 각 애플리케이션이 사용한 리소스를 추적하여 자원 할당을 최적화할 수 있습니다. 4/ 이력 관리: 과거 실행 이력을 저장하고 필요할 때 언제든지 접근할 수 있어, 반복적인 작업이나 주기적인 분석에 유용합니다.
A. 이거 개인적인 의견으로는 서영님이 직접 jvm 이미지에 구축해보는걸 추천!! 직접 구축하면서 리서치해보고 새롭게 알게된 내용 정리하는 것 자체가 중요한 경험이라고 생각하기 때문에 직접 해보면 좋을 듯 합니다!! 또, 직접 구축하면 어떤 원인인지 파악하기 그래도 용이한데 이미 만들어진 이미지 쓰면 원인 파악이 어려울 수도 있음!!
물론, 시간이 부족하면 이미 만들어진 이미지에 사용해도 무관합니다!!
@seoyeong200
요건 파악
Local Spark 활용을 위한 Docker 구축
: local 환경에서 개인이 spark를 사용해 데이터를 다뤄볼 수 있도록 docker desktop 사용하여 docker container로 패키징된 spark application, jupyter notebook, aws등 인프라에 연결 가능한 환경 개발
정리
A. (Local mode) Notebook에서 스파크를 이용한 데이터 처리 코드를 interactive하게 실행하고 실습하기 위한 환경
B. (Cluster mode - standalone) spark-submit으로 스크립트 제출하여 spark job을 실행시키는 환경
환경 분리 context
기존 컴포즈 파일 의 경우
master
,worker
spark-cluster와jupyter
컨테이너를 띄워서 주피터 상에서 spark-cluster 내의 스파크 엔진을standalone cluster mode
로 사용하게끔 설정이 되어있습니다.하지만 jupyterlab 컨테이너 자체에도 spark 가 설치되어있기 때문에, 노트북으로 실습하는 용도로 환경을 구성하는데에 spark-master, spark-worker도 함께 빌드하는게 불필요하다고 판단했습니다. 따라서 단순 pyspark 코드가 실행되는지 실습할때에는 (A)jupyterlab 컨테이너만 띄워 local mode(no cluster manager) 로 학습 및 개발이 진행되고, (B)클러스터의 경우 별도로(docker-compose_prod_test.yml) 띄울 수 있게끔 분리해두면 작업이 더 가벼워질 것이라 생각했습니다.
추가적으로 해당 컴포즈 파일이 실제 작업에 사용하는 pc의 사양에서 사용하기에 메모리 점유가 높아 작업이 실패한다는 케이스가 있었습니다. jupyter 작업 환경을 최대한 가볍게 가져간다면 해당 문제 또한 해결될 것이라 기대합니다.
🔗 관련 링크
📌 진행상황