안녕하세요. 위기의코딩맨 입니다.
요즘 데이터의 중요성이 많이 오르고 있습니다!
빅데이터는 이제 많은 사업에도 사용되고 있습니다.
그래서 오늘은 이러한 빅데이터를 처리하기위한 Apache Spark에 대해 알아보도록 하겠습니다.
대학생때 Apache Hadoop 에 관해 조금 공부한 적이 있지만,
Apache Spark는 처음 접하는 부분이라 천천히 알아가보도록 하겠습니다.
[ Apache Spark ]
먼저, 간단하게 말하면 빠른 속도로 작업을 수행하며,
범용적으로 설계가 가능한 클러스터용 연산 플랫폼입니다.
범용적이란 무엇인가?
여러 분야, 용도로 널리 쓰이는 것이라는 의미를 갖고있습니다.
[ 속도 측면 ]
★ 맵리듀스 모델을 대화형 명령어, 쿼리, 스트리밍 처리등 가능하도록 확장
★ 연산 작업을 메모리에 직접 수행하여 작업 속도를 높임
★ 메모리가 아닌 디스크로 작업을 진행해도 기존 하둡보다 속도가 높음 ( 하둡은 디스크에 작업을 할당 )
[ 범용적 측면 ]
☆ 기존에 분리된 분산 시스템에서 실행되던 반복 알고리즘, 배치 애플리케이션, 스트리밍, 대화형 쿼리와 같은 작업을 동시에 커버할 수있도록 설계 되었음
☆ 서로 다른 형태의 작업을 쉽고 저비용으로 연계 가능, 유지보수 비용 감소
Spark는 밀접하게 연동된 여러 개의 컴포넌트로 구성되어있다. 컴포넌트는 간단하게 재사용이 가능한 각각의 독립된 모듈을 뜻으로 해석하면 됩니다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif)
아무튼, 여기서 Spark는 다수의 작업이나, 클러스터 위에서 돌아가는 연산 작업을 분배하고 스케줄링, 감시하는 역할을 합니다. 또한, 서로 다른 데이터 처리 모델을 하나로 합쳐서 깔끔하게 하나의 애플리케이션을 만들 수 있다는 장점이 잇습니다.
Spark의 기본 구성을 정말 간단하게 설명해 보겠습니다!
[ Spark Sql ]
◆ 정형 데이터를 처리하기 위한 Spark의 패키지입니다. 여기서 정형 데이터란 데이터베이스에서 정해진 룰에 맞도록 저장되어 사용되는 데이터로 생각하시면 됩니다.
[ Spark Streaming ]
◆ 실시간 데이터 스트림을 처리 가능하도록 해주는 스파크의 컴포넌트 입니다. 여기서 데이터 스트림이란 순차적으로 들어오는 데이터 흐름을 의미합니다.
[ MLlib ]
◆ Spark는 일반적인 머신러닝 기능을 갖고 있는 라이브러리를 함께 배포한다고 합니다. 그 라이브러리를 의미합니다.
[ Graph X ]
◆ Spark에서 그래프를 다루기 위한 라이브러리를 의미하며, 병렬 연산을 수행합니다.
[ Spark Core ]
◆ 작업 스케줄링, 장애 복구, 메모리 관리 등 기본적인 기능을 구성하고 있으며, 탄력적인 분산 데이터 셋(RDD)을 정의하는 API 기반이 된다. 여기서 RDD는 Spark의 아주 중요한 역할을 하는 부분이라 다음에 자세히 알아보도록 하겠습니다.
[ Cluster Manager ]
◆ Spark는 하나의 노드에서 수 많은 노드까지 최대한 효과적으로 성능을 확장 가능하도록 만들어졌습니다. 유연성을 극대화하며, 이를 달성하기 위해 하둠의 Yarn, Apach Mesos, Standalone Scheduler 등 다양한 클러스터 매니저 위에서 동작합니다.
오늘은 Apach Spark에 대해 간단하게 알아보았습니다.
나름 재미 있을 것 같기도하고..?
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif)
'Spark' 카테고리의 다른 글
[We-Co] groupBy(), groupByKey(), cogroup() - Spark (0) | 2021.08.24 |
---|---|
[We-Co] RDD 생성 (0) | 2021.08.11 |
[We-Co] SparkContext (0) | 2021.08.11 |
[We-Co] Word Count - Spark 예제 (2) | 2021.08.06 |
[We-Co] Spark RDD (0) | 2021.07.23 |