본문 바로가기

데이터/Spark4

Spark 병렬처리 성능 테스트 사례 실제 대용량의 데이터를 가지고 Spark를 테스트해볼 수 있는 환경이 아니라이전에 정리했던 내용을 직접 실습하기에는 어려운 점이 있어서 아쉬웠다.그런데 AWS 환경에서 병렬 성능 테스트를 한 글을 찾아서 해당 글을 토대로 내용을 정리해볼 예정이다.이번 글을 정리하며 만약에 실제로 대용량의 데이터를 이관할 경우 Spark의 병렬성을 어떻게 올릴 수 있는지 전략을 배우는 것이 목표이다. 참조한 글https://medium.com/@kane.jo/aws-glue-jdbc-%EB%B3%91%EB%A0%AC-%EC%B2%98%EB%A6%AC-%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8-aa2cbaf9ca9f AWS Glue JDBC 병렬 처리 성능 테스트⇒ 컬럼 중 OL_D.. 2024. 7. 14.
Spark Partition 최적화 spark의 병렬처리는 task 단위로 처리가 된다.각 task는 spark의 parition단위와 일치하므로 partition 설정을 어떻게 하느냐에 따라 병렬처리의 효율성이 달라지게 된다. Spark에서 task란Spark Application이 제출되면 job → Stage → Task 순으로 쪼개지게 되며 실질적으로 처리되는 최소 연산 단위는 Task따라서 각 처리 단위는 1 Task = 1 Core = 1 Partition 이 된다.따라서 각 코어 당 얼마만큼의 메모리가 할당될 수 있느냐에 따라 Partition의 크기를 정할 수 있다.Partition 이란?RDDs나 Dataset을 구성하고 있는 최소 단위 객체각 Partition은 서로 다른 노드에서 분산처리된다.하나의 Task에서 하나의 .. 2024. 6. 23.
RDD vs. Dataframe (In Python) RDD 란?Resilient : RDD lineage 그래프를 통한 fault-tolerant가 빠졌거나, node의 실피로 인한 손상된 파티션을 다시 실행시킨다Distributed : 클러스터의 여러 노드에 데이터가 분산되어 저장Dataset : 원천 데이터값 혹은 값의 값들로 이루어진 파티션된 collection 데이터                 (튜플 혹은 다른 레코드로써 사용될 수 있는 데이터 객체들)필요한 상황고수준 API에서 제공하지 않는 기능이 필요한 경우(JAVA, Scala에만 해당, Python은 성능손실이 크다)-> 클러스터의 물리적 데이터 배치를 아주 세밀하게 제어해야 함-> map, filter, reduce와 같은 하위수준의 변환의 경우RDD를 사용해 개발된 기존 코드를 유지해.. 2024. 6. 16.
Spark Cluster 구조 및 작동원리 Spark Cluster Architecture작동구조Spark DriverSpark Application을 제출 시 가장 먼저 제출되는 위치spark application의 실행을 조정하는 프로그램/프로세스기본기능을 실행하고 cluster manager에 연결되는 SparkContext/SparkSession을 생성 SparkContext/SparkSession Spark의 기능(Function)을 사용할 수 있는 진입점Spark 환경구성에 해당하는 SparkConf를 포함하고 있다.Spark 2 이상부터는 SQLContext, HiveContext, StreamingContext가 모두 결합된 SparkSession 사용을 권장 Cluster ManagerWorker Node에 리소스 및 task 할.. 2024. 6. 9.