스파크: Difference between revisions

From IT Wiki
No edit summary
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[분류:데이터 분석]]
[[분류:데이터 과학]]
 
;Spark
;Spark
;대용량 데이터를 빠르게 처리하기 위한 인-메모리 기반의 분산 데이터 처리 엔진
* UC 버클리의 AMP 랩에서 개발하였으며, 현재 아파치 재단에서 관리
* UC 버클리의 AMP 랩에서 개발하였으며, 현재 아파치 재단에서 관리
* 인-메모리 방식의 분산 처리 시스템
* 공개 소프트웨어로, 창시자가 설립한 [[데이터브릭스]]에서 주로 개발
 
==등장 배경 및 특징==
 
*[[하둡]]과 같은 분산 컴퓨팅에서 기존 디스크 입출력에 대한 시간 지연 발생
**반복적인 작업이나 실시간 처리를 위해 빠른 처리 필요
 
=== 하둡과의 비교 ===
 
* 하둡의 맵리듀스는 프로그램 처리 단계별로 중간 처리 데이터를 모두 하드디스크에 저장
** 맵리듀스 잡의 다른 맵리듀스 잡에서 사용하려면 디스트 저장 → HDFS에 저장 과정 필요
** 복잡한 단계를 가진 단계적 데이터처리에 부적합
* 스파크는 필요한 데이터를 메모리에 캐시로 저장하는 인-메모리 실행 방식 채택
** 단계별 처리 시 기존 결과를 메모리에 저장하고 메모리에서 불러옴으로써 I/O 시간 단축
 
=== 스파크의 특징 ===
 
*대량의 데이터를 메모리에 유지하는 설계로 계산 성능 대폭 강화
**스파크 프로그램은 하둡의 맵리듀스보다 약 100개 더 빠른 속도로 동작
*파이썬, 자바, 스칼라, R 등 기존 타 플랫폼 사용자를 광범위하게 포용
*일괄 처리, 실시간 처리(스트리밍), 정형데이터 [[SQL]] 처리, 그래프 알고리즘, [[머신러닝]] 등 다양한 요구사항 통합
 
== 활용성 ==


== 등장 배경 ==
* 하둡을 대체하여 빠른 속도로 성장 중이며 대용량 데이터 처리가 필요한 곳에서 범용적으로 활용
* 기존 디스크 입출력에 대한 지연 시간 개선
* 온라인 트랜잭션 처리(OLTP)보다 온라인 분석 처리(OLAP)에 더 적합
* 반복적인 작업이나 실시간 처리를 위해 빠른 처리 필요
** 분산처리를 위한 시간적 오버헤드 발생
** 아주 작은 데이터를 처리 할 때도 기본적인 준비 과정 보유 → 소규모 데이터는 일반 DBMS가 유리


== 구조 및 구성 요소 ==
==구조 및 구성 요소==
[[파일:스파크 프레임워크 구조.png]]
[[파일:스파크 프레임워크 구조.png]]
* SQL: 정형화된 SQL 지원
* Streaming: 데이터 스트림을 세그먼트로 나눈 후 각각을 스파크 엔진으로 처리
* MLlib: [[회귀]], [[SVM]], [[의사 결정 나무]], [[랜덤 포레스트]] 등 [[머신러닝]] 라이브러리 제공
* GraphX: 페이지 랭크, 레이블 전파, 삼각 계수 등 그래프 알고리즘 지원
* Core: 분산 처리, 스케줄링, API 인터페이스 지원
* 작업 처리 레이어: 스파크만으로 처리할 수도 있고, 하둡 Yarn, Mesos 등과 연계 가능


== 참조 문헌 ==
*'''SQL:''' 정형화된 SQL 지원
* [https://www.youtube.com/watch?v=O35dLfyklm0 빅데이터 051 인메모리 데이터 처리 기반 SW의 등장(구자환 교수님)]
*'''Streaming:''' 데이터 스트림을 세그먼트로 나눈 후 각각을 스파크 엔진으로 처리
*'''MLlib:''' [[회귀]], [[SVM]], [[의사 결정 나무]], [[랜덤 포레스트]] 등 [[머신러닝]] 라이브러리 제공
*'''GraphX:''' 페이지 랭크, 레이블 전파, 삼각 계수 등 그래프 알고리즘 지원
*'''Core:''' 분산 처리, 스케줄링, API 인터페이스 지원
*'''작업 처리 레이어:''' 스파크만으로 처리할 수도 있고, 하둡 Yarn, Mesos 등과 연계 가능
 
==RDD==
;Resilient Distribute Dataset
 
*스파크의 기본 추상화 객체
*'''특징'''
**불변성(immutable): 읽기 전용
**복원성(resilient): 장애 내성
**분산성(distributed): 노드 한 개 이상에 저장된 데이터셋
 
== 스파크 클러스터링 ==
대부분 [[YARN|Hadoop YARN]]을 사용하지만 다양한 클러스터 시스템과 연동 가능하다.
* Apache Hadoop YARN
* Kubernetes
* Apache Mesos
* Spark Standalone
 
==참조 문헌==
 
*[https://www.youtube.com/watch?v=O35dLfyklm0 빅데이터 051 인메모리 데이터 처리 기반 SW의 등장(구자환 교수님)]

Latest revision as of 16:13, 14 December 2020


Spark
대용량 데이터를 빠르게 처리하기 위한 인-메모리 기반의 분산 데이터 처리 엔진
  • UC 버클리의 AMP 랩에서 개발하였으며, 현재 아파치 재단에서 관리
  • 공개 소프트웨어로, 창시자가 설립한 데이터브릭스에서 주로 개발

등장 배경 및 특징[edit | edit source]

  • 하둡과 같은 분산 컴퓨팅에서 기존 디스크 입출력에 대한 시간 지연 발생
    • 반복적인 작업이나 실시간 처리를 위해 빠른 처리 필요

하둡과의 비교[edit | edit source]

  • 하둡의 맵리듀스는 프로그램 처리 단계별로 중간 처리 데이터를 모두 하드디스크에 저장
    • 맵리듀스 잡의 다른 맵리듀스 잡에서 사용하려면 디스트 저장 → HDFS에 저장 과정 필요
    • 복잡한 단계를 가진 단계적 데이터처리에 부적합
  • 스파크는 필요한 데이터를 메모리에 캐시로 저장하는 인-메모리 실행 방식 채택
    • 단계별 처리 시 기존 결과를 메모리에 저장하고 메모리에서 불러옴으로써 I/O 시간 단축

스파크의 특징[edit | edit source]

  • 대량의 데이터를 메모리에 유지하는 설계로 계산 성능 대폭 강화
    • 스파크 프로그램은 하둡의 맵리듀스보다 약 100개 더 빠른 속도로 동작
  • 파이썬, 자바, 스칼라, R 등 기존 타 플랫폼 사용자를 광범위하게 포용
  • 일괄 처리, 실시간 처리(스트리밍), 정형데이터 SQL 처리, 그래프 알고리즘, 머신러닝 등 다양한 요구사항 통합

활용성[edit | edit source]

  • 하둡을 대체하여 빠른 속도로 성장 중이며 대용량 데이터 처리가 필요한 곳에서 범용적으로 활용
  • 온라인 트랜잭션 처리(OLTP)보다 온라인 분석 처리(OLAP)에 더 적합
    • 분산처리를 위한 시간적 오버헤드 발생
    • 아주 작은 데이터를 처리 할 때도 기본적인 준비 과정 보유 → 소규모 데이터는 일반 DBMS가 유리

구조 및 구성 요소[edit | edit source]

스파크 프레임워크 구조.png

  • SQL: 정형화된 SQL 지원
  • Streaming: 데이터 스트림을 세그먼트로 나눈 후 각각을 스파크 엔진으로 처리
  • MLlib: 회귀, SVM, 의사 결정 나무, 랜덤 포레스트머신러닝 라이브러리 제공
  • GraphX: 페이지 랭크, 레이블 전파, 삼각 계수 등 그래프 알고리즘 지원
  • Core: 분산 처리, 스케줄링, API 인터페이스 지원
  • 작업 처리 레이어: 스파크만으로 처리할 수도 있고, 하둡 Yarn, Mesos 등과 연계 가능

RDD[edit | edit source]

Resilient Distribute Dataset
  • 스파크의 기본 추상화 객체
  • 특징
    • 불변성(immutable): 읽기 전용
    • 복원성(resilient): 장애 내성
    • 분산성(distributed): 노드 한 개 이상에 저장된 데이터셋

스파크 클러스터링[edit | edit source]

대부분 Hadoop YARN을 사용하지만 다양한 클러스터 시스템과 연동 가능하다.

  • Apache Hadoop YARN
  • Kubernetes
  • Apache Mesos
  • Spark Standalone

참조 문헌[edit | edit source]