본문 바로가기
[SPARK] spark(pyspark)-shell 환경 변수 변경하기 이번 글에서는 spark(pyspark)-shell 환경에서 spark-shell 어플리케이션의 환경 변수(conf)를 변경하는 방법에 대해서 알아 볼 예정입니다. spark-shell 환경을 사용하다 보면, 사용 와중에 spark-context의 환경 변수(conf)를 변경해야 하는 경우가 생깁니다. 예를 들어, dynamicAllocation 설정을 추가한다 던지, executor의 instance 수를 조정하고 싶은 경우가 그런 경우입니다. 하지만 spark(pyspark)-shell 환경에서 작업을 하다보면, spark-session을 다시 설정한다고 해도 원하는대로 적용이 안되는 경우를 경험하신 분들이 많으실 겁니다. 이러한 경우, 처음에 올라온 spark-shell의 session을 다시 구성.. 2024. 1. 10.
[SPARK] java.io.FileNotFoundException: {file_name}.conf ERROR 해결 방법 이번 글에서는 spark-submit으로 Application을 제출하는 과정에서 java.io.FileNotFoundException 에러가 발생하는 경우의 해결 방법을 정리할 예정입니다. 우선, java.io.FileNotFoundException 에러가 발생한 spark-submit의 제출 코드를 확인할 필요가 있습니다. 아래는 실제 에러가 발생시켰던 spark-submit 제출 코드입니다. spark-submit \ --class com.example.MySparkApp \ --master yarn \ --deploy-mode cluster \ --driver-cores 1 --driver-memory 5G --num-executors 60 --executorcores 5 --executor-me.. 2024. 1. 8.
[SPARK] spark job과 partition의 개념 이전 글에서는 spark의 executor memory 구조와 튜닝 포인트에 대해서 살펴 보았습니다. 이번 글에서는 Spark의 배포 방식과 partition의 구조에 대해서 살펴 볼 예정입니다. Spark 배포 방식 (spark - deploy mode) Spark의 배포 방식(deploy-mode)은 spark driver를 누가 관리하냐에 따라 client-mode와 cluster-mode로 나누어 집니다. Client-mode Client mode는 Driver가 spark job을 제출한 node에서 JVM을 띄워 할당됩니다. 즉, 해당 노드에서 Driver의 리소스를 확보해야 합니다. 예를 들어, User가 spark-app들을 제출한 노드에서 spark 프로세스들을 검색해보면 여러 drive.. 2024. 1. 6.
[SPARK] Spark의 Execuotr memory 구조 이전 글에서는 spark의 세부 동작 개념인 Transformation과 Action을 살펴 보았습니다. 이번 글에서는 Spark의 Executor memory 구조에 대해서 살펴 볼 예정입니다. Executor memory 구조 Executor는 우선, 워커노드에 컨테이너 형태로 Memory를 할당 받게됩니다. 각 executor의 memory(JVM)는 크게 3가지 독립 영역으로 나뉘게 됩니다. On-heap memory (JVM) 영역 spark.executor.memory를 통해 설정할 수 있습니다.(ex 1g, 20g 등) Off-heap memory 영역 off-heap memory는 JVM(on heap memory) 영역과는 별도로 존재하며, Spark container(Executor) .. 2024. 1. 6.
[SPARK] Spark 세부 동작(Transformation, Action) 이전 글에서는 spark의 기본적인 개념과 아키텍쳐, 대략적인 동작 과정을 살펴 보았습니다. 이번 글에서는 Spark의 세부 동작 과정의 중요 개념인 Transformation, Action과 Executor memory 구조에 대해서 살펴 볼 예정입니다. Spark 동작 과정 RDD(Resilient Distributed Datasets) Spark의 Transformation, Action 과정을 설명하기 전에 Spark의 기본적인 데이터구조인, RDD(Resilient Distributed Datasets)에 대해 간단한 설명이 필요합니다. RDD는 spark에서의 데이터구조이고, 쉽게 말해 데이터들의 집합이라고 생각하면 편할 것 같습니다. RDD라는 데이터 집합은 partition이라는 논리적 분.. 2024. 1. 6.
[SPARK] Spark 개념 정리 및 Architecture 해당 글에서는 spark를 관리/운영해보면서 자세히 알지 못했던 부분, 그리고 경험적으로 알게된 내용들을 정리하고 공유하는데 목적이 있습니다. 따라서, spark의 기본적인 개념들을 보다 쉬운 언어로 설명하고, 동작 원리를 직관적으로 정리할 예정입니다. Spark 개념 및 아키텍쳐 Spark 배경 우선, spark가 왜 탄생하게 되었는지를 한마디로 설명하면, "Hadoop의 mapreduce의 한계를 극복하기 위해"입니다. hadoop의 M/R(MapReduce)는 대량의 데이터를 처리할 수 있게 한다는 것에서 큰 의미가 있지만, 실제 execute engine으로 M/R을 사용해보신 분 들은 아시겠지만 Map과 Reduce 사이의 중간 데이터를 HDFS에 Write 후에 Reduce 과정에서 다시 Re.. 2024. 1. 6.