All about Apache Spark
2020/10/04 - Apache Spark Review ① 소개
2020/10/04 - Apache Spark Review ② 주요 개념 : RDD
2020/10/04 - Apache Spark Review ③ 주요 개념 : Pair RDD
2020/10/04 - Apache Spark Review ④ 주요 개념 : DataFrame
최근 단시간에 대용량 데이터를 처리해야하는 업무가 많아지고 있어 이 분야에서 핫하게 사용 중인 Spark에 대해 정리합니다. Spark을 사용하지 않았을 땐 대용량 데이터를 Chunk 단위로 불러와서 일부를 처리하여 다시 저장한 후에 다시 Merge 하는 불합리하고 비효율적인 방법을 사용했는데 Spark으로 매우 획기적으로 시간을 단축 할 수 있었습니다.
Spark Cluster를 구성하고 Pipeline을 구축하는 것은 추후에 리뷰하는 것으로 하고 이번에는 Spark 소개 및 사용법에 대해서 리뷰해보도록 하겠습니다.
Apache Spark 소개
2009년 UC버클리 대학교에서 Spark : Cluster Computing with Working Sets 내용으로 시작된 프로젝트로 2013년 스파크 1.0 , 2014년 스파크 2.0, 2019년 2.3.3 Release 되었고 현재 빅데이터 처리 분야에서 표준이 되어가고 있습니다.
Spark을 한 문장으로 요약하지면 "In-memory 기반의 대용량 데이터 처리 엔진" 이라고 할 수 있는데, 주목해야할 점이 In-memory 라는 점과 데이터 처리 엔진이라는 점입니다. In-memory라는 특징은 기존의 맵리듀스 API의 단점인 속도 문제를 개선하는 포인트가 되었고 데이터 처리 엔진이라는 점이 HDFS, 칸사드라, Kafka, S3 등 다양한 스토리지와의 연계를 지원하여 스토지리 역할은 수행하지 않고 데이터 연산에만 집중한다는 특징이 되었습니다.
※ 맵리듀스 API는 필요한 데이터를 디스크에서 매번 가져와야했그 때문에 속도가 느림
스파크를 구성하는 컴포넌트는 총 5개가 있습니다.
① Spark Core ② Spark SQL ③ Spark Streaming ④ Spark GraphX ⑤ Spark MLlib
Spark Core 에서 가장 중요한 개념은 RDD(Resilient Distributed Dataset) 입니다. RDD는 분산 데이터 컬렉션을 추상화한 객체로 데이터셋에 적용할 수 있는 연산 및 변환 메서드를 함께 제공합니다.
Spark SQL은 Spark과 HiveQL이 지원하는 SQL을 사용해 대규모 분산 정형 데이터를 다룰 수 있는 기능을 제공하는데 DataFrame 과 DataSet 형태로 데이터를 받아 처리합니다. 이 특징으로 인해 Spark 에서 가장 중요한 컴포넌트가 되었습니다.
Spark Streaming은 실시간 스트리밍 데이터를 처리하는 프레임워크로 DStream 방식으로 스트리밍 데이터를 표현합니다.
스파크 내부 Architecture는 아래와 같습니다.
Cluster Manager로 기존에는 YARN을 사용했지만, Spark에서는 자체 클러스터 매니저가 있어서 편리하게 사용이 가능합니다. 물론 YARN을 활용한 매니징도 가능 합니다. Cluster Manager의 역할은 실행에 필요한 자원을 할당하는 겁니다.
실행은 Spark Application에서 수행됩니다. Spark Application은 Driver 프로세스와 다수의 Executor 프로세스로 구성되게 되는데 Driver는 Executer에 작업을 배포, 스케줄링하는 역할을 수행하고 실제 연산은 Executor에서 수행하게 됩니다.
다음 포스팅에서 Spark 기초에 대해 다루겠습니다.
참고
- https://medium.zenika.com/a-comparison-between-rdd-dataframe-and-dataset-in-spark-from-a-developers-point-of-view-a539b5acf734
- https://databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html
- https://stackoverflow.com/questions/31508083/difference-between-dataframe-dataset-and-rdd-in-spark
'데이터엔지니어링' 카테고리의 다른 글
Apache Spark Review ② 주요 개념 : RDD (0) | 2020.10.04 |
---|
댓글