본문 바로가기
IT

스파크의 기본 개념 - 1

by 힁구띠 2022. 7. 25.

1. 스파크의 역사

아파치 스파크는 UC 버클리 대학에서 2009년 스파크 연구 프로젝트로 시작되었습니다. 그다음 해에는 UC버클리 대학교 AMPLab 소속인 마테이 자하리아, 모샤라프 카우 두리, 마이클 프랭클린, 스콧 쉔커, 이온 스토이카가 발표한 논문 'Spark: Cluster Computiong with Working Sets'을 통해 세상에 처음으로 알려지게 되었습니다.

하둡 맵리듀스는 수백, 수천 개의 노드로 구성된 클러스터에서 병렬로 데이터를 처리하는 최초의 오픈소스 시스템이자 클러스터 환경용 병렬 프로그래밍 엔진의 대표주자였습니다. AMPLap은 새로운 프로그래밍 모델의 장단점을 이해하기 위해 맵리듀스 사용자들과 함께 협업을 진행했습니다. 그리고 다양한 사례에서 발견한 문제점들을 정리해서 더 폭넓은 컴퓨팅 플랫폼을 개발했습니다. 자하리아는 또한 UC버클리 대학교의 하둡 사용자들과 플랫폼 요건을 연구했습니다. 그들은 데이터를 반복적으로 탐색하는 알고리즘을 활용해 대규모 머신러닝을 수행하는 팀이었습니다. 이 연구의 결과로 알게 된 사실이 두 가지 있습니다. 첫 번째로는 클러스터 컴퓨팅이 어마어마한 잠재력을 가지고 있다는 것과 맵리듀스에 경험이 있는 조직은 자체 데이터를 활용해 기존과는 다른 애플리케이션을 생성했습니다. 하지만 이런 경험이 없는 조직은 누군가가 성공하고 난 후에야 활용할 수 있었습니다. 두 번째는 맵리듀스 엔진을 사용하는 대규모 애플리케이션의 난이도와 효율성 문제였습니다. 예를 들면 전통적인 머신러닝 알고리즘은 데이터를 10~20회가량 처리합니다. 하지만 이를 맵리듀스로 처리하려면 단계별로 맵리듀스 잡을 개발 하고 클러스터에서 각각 실행해야 하므로 매번 데이터를 처음부터 읽어야 했습니다.

이 문제를 해결하기 위해서는 여러 단계로 이루어진 애플리케이션을 간결하게 개발할 수 있는 함수형 프로그래밍 기반의 API를 개발했습니다. 그리고 연산 단계 사이에서 메모리 저장된 데이터를 효율적으로 공유할 수 있는 새로운 엔진 기반의 API를 구현했습니다.

스파크의 첫 버전은 배치 애플리케이션만 지원했습니다. 그렇지만 얼마 지나지 않아 대화형 데이터 분석이나 비정형 쿼리 같은 강력한 기능을 제공했습니다. AMPLap은 스칼라 인터프리터를 단순히 스파크에 접목하는 방식으로 수백 개의 노드에서 쿼리를 실행할 수 있는 매우 유용한 대화형 시스템을 제공할 수 있었습니다. 이 아이디어를 기반으로 분석가나 데이터 사이언티스트들이 스파크에서 대화형으로 SQL을 실행할 수 있는 엔진인 샤크를 빠르게 개발하여 2011년에 공개했습니다. 스파크 팀은 최초 공개 후 새로운 라이브러리가 스파크의 가장 강력한 부가 기능이 될 수 있다는 확신을 하게 되었습니다. 따라서 현재도 '표준 라이브러리' 형태의 구현 방식을 유지하고 있습니다. 이후 AMPLap의 여러 그룹이 MLlib, 스파크 스트리밍 그리고 GraphX를 만들기 시작했습니다. 그들이 만들어낸 API의 탁월한 호환성 덕분에 처음으로 같은 젠진을 이용해 여러 처리 유형을 결합한 빅데이터 애플리케이션을 개발할 수 있었습니다.

2013년에 스파크는 30개 이상의 UC버클리 대학교 외부 조직에 100명 이상의 기여자가 있는 많은 사용자가 이용하는 프로젝트로 발전했습니다. AMPLap은 스파크가 특정 업체에 종속되는 것을 막기 위해 아파치 재단에 기부했습니다. 초기 AMPLap 팀은 프로젝트를 성장시키기 위해 데이터 브릭스를 설립했으며 여러 회사와 조직이 합류해 스파크에 이바지하고 있습니다. 이후 아파치 스파크 커뮤니티는 2014년에 스파크 1.0 버전, 2016년 스파크 2.0 버전을 공개하며 계속 새로운 버전을 출시하고 있습니다.

스파크가 제공하는 조합형 API의 핵심 아이디어 또한 계속해서 진화하고 있습니다. 1.0 이전의 스파크 초기 버전은 함수형 연산 개념에서 API를 정의했습니다. 스파크 1.0 버전부터는 구조화된 데이터를 기반으로 동작하는 신규 API인 스파크 SQL이 추가되었습니다. 스파크 SQL은 데이터 포맷과 코드를 잘 이해하는 라이브러리와 API를 통해 새롭고 강력한 최적화 기능을 제공하고 있습니다. 또한 스파크는 DataFrame, 머신러닝 파이프라인, 자동 최적화를 수행하는 구조적 스트리밍 등 더 강력한 구조체 기반의 신규 API를 추가했습니다.

 

 

2. 스파크가  창조된 이유?

데이터 분석을 위한 처리 엔진과 프로그래밍 모델이 필요한 근본적인 이유는, 컴퓨터 애플리케이션과 하드웨어의 바탕 경제적 요인의 변화 때문입니다. 컴퓨터는 프로세서의 성능 향상에 힘입어 해마다 성능이 좋아졌습니다. 그 결과 애플리케이션은 코드를 수정하지 않아도 자연스럽게 더 빠르게 작동했습니다. 대규모 애플리케이션은 이런 경향에 맞춰 만들어졌으며 대부분의 시스템은 단일 프로세서에서만 실행되도록 설계되었습니다. 더 많은 연산과 대규모 데이터 처리를 프로세서의 성능 향상에 의존하고 있었습니다. 하지만 하드웨어의 성능 향상은 2005년쯤 중지되었습니다. 물리적인 방열 한계로 인해 하드웨어 개발자들은 단일 프로세서의 성능을 향상하는 방법 대신, 모든 코어가 같은 속도로 동작하는 병력 CPU 코어를 더 많이 추가하는 방향으로 전환했던 것입니다. 이에 따라 애플리케이션의 성능 향상을 위해 병렬 처리가 필요하며 스파크와 같은 새로운 프로그래밍 모델의 시대가 시작되었습니다.

'IT' 카테고리의 다른 글

MySQL 권한 - 1  (0) 2022.09.05
스파크 데이터 구조  (0) 2022.08.26
SQL의 기본 개념 - 2  (0) 2022.07.13
SQL의 기본 개념 - 1  (0) 2022.07.12
AWS 부하 테스트 도구 - 1  (0) 2022.07.11

댓글