[스터디] 스파크 완벽 가이드 1일차

Kristopher·2022년 1월 6일
0

Spark 스터디

목록 보기
1/16

이 글은 "OREILLY의 스파크 완벽 가이드" 책을 공부하며 정리를 위해 남기는 글이다. 이 글은 전문적인 글이 아니다. 데이터 엔지니어를 목표로하며 나아가는 발자취를 남기는 것이며 내가 이해한 것을 풀어서 설명하고 어디까지 이해해야 이해했다고 말할 수 있는 것인지에 대한 지표로 삼기위해 해당 글을 남긴다.

Chapter 1 아파치 스파크란

책의 정의에 따르면 '아파치 스파크는 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합'이다. 이 문장을 통합 컴퓨팅 엔진, 클러스터 환경, 데이터의 병렬 처리라는 핵심 단어로 나눌 수 있는데 하나하나의 의미가 무엇인지 알아보자.

통합

먼저 '통합'이라는 단어는 무엇을 의미할까? 스파크는 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하는 것을 핵심 가치로 삼고 있다. 그렇기에 통합이라는 단어는 애플리케이션 개발이 필요한 모든 기능을 제공한다는 뜻일 것이다. 스파크 등장 이전에는 통합 엔진을 제공하는 제공하는 병렬 데이터 처리용 오픈소스가 없었기에, 사용자가 필요에 따라 다양한 API와 시스템을 조합하여 애플리케이션을 작성해야 했다. 데이터 사이언티스트는 파이썬이나 R의 라이브러리를, 웹 개발자는 Node.js나 장고같은 프레임워크가 지원하는 기능을 사용하였다. 하지만 스파크에서는 이러한 과정을 한번에 처리할 수 있도록 통합엔진을 제공한다.

컴퓨팅 엔진

스파크는 통합을 중시하며 기능의 범위를 컴퓨팅 엔진에 제한해왔다. 그렇기에 데이터의 연산을 수행할 뿐 데이터의 저장소 역할을 수행하지 않는다. 하지만 다른 저장소(S3, Hadoop, Kafka 등)를 지원한다. 스파크는 저장위치에 상관없이 처리에 집중하도록 설계되었기에 저장 위치를 신경쓰지 않아도 된다. 스파크가 연산 기능에만 초점을 맞추었기 때문에 기존의 Hadoop과 차별점을 가지고 있다. Hadoop은 HDFS와 MapReduce 기능을 가지고 있으며 두 시스템이 밀접하게 연관되어 있기 때문에 둘 중 하나만 단독으로 사용하기는 어렵다. 그렇기에 공개형 클라우드 환경이나 스트리밍 애플리케이션이 필요한 환경 등에서는 Hadoop을 사용하기 어려워 스파크를 선호하게 된다.

라이브러리

스파크는 표준 라이브러리와 외부 라이브러리를 지원한다. 분석을 위한 스파크 SQL, 머신러닝을 위한 MLlib, 그래프 분석을 위한 GraphX 라이브러리 등을 지원하는데, 이는 여러 오픈소스 라이브러리의 집합체라고 볼 수 있다.

스파크의 등장 배경

지난 역사에서 컴퓨터는 프로세서가 향상되며 매년 속도가 빨라졌다. 그렇기에 애플리케이션 내부의 코드를 수정하지 않아도 속도가 빨라졌다. 그렇기에 대용량 데이터 처리에서도 프로세서의 성능에 의존할 수 밖에 없었고 하드웨어의 성능이 한계에 부딪힌 시점에 새로운 대책이 필요했다. 이에 대한 대책으로 제안된 것이 병렬처리에 대한 방향성이며, 이는 같은 속도로 동작하는 병렬 CPU 코어를 추가하여 성능을 향상시키자는 것이었다. 병렬처리에 대한 필요성은 스파크와 같은 프로그래밍 모델이 주목받을 것을 암시했다.

Reference

스파크 완벽 가이드
아파치 스파크

profile
개발자 지망생입니다.

1개의 댓글

comment-user-thumbnail
2022년 1월 8일

이런것도 있구나,,, 덕분에 새로운것 알아가요!

답글 달기