728x90
SMALL
Spark 소개 및 특징
-
What is Spark?
- 인메모리 기반의 대용량 데이터 고속 처리 엔진
- Apache Spark 는 오픈 소스 범용 분산 클러스터 컴퓨팅 프레임워크
- 범용적이면서도 빠른 속도로 작업을 수행할 수 있도록 설계한 클로스터용 연산 플랫폼이자 스트림 처리를 효과적으로 수행하는 인-메모리 방식의 분산 처리 시스템
- 최초 데이터 로드와 최종 결과 저장시에만 디스크 사용
- 메모리에 분산 저장하고,병렬 처리 구조
-
Hadoop vs Spark
- 디스크 입출력 방식을 인-메모리 데이터 처리 방식으로 전환
- 기존 맵리듀스 디스크 입출력 방식보다 평균 10~100배 정도의 속도 향상
-
기존 디스크 입출력에 대한 지연 시간 개선
-
메모리를 사용하여 반복적인 작업이나 스트리밍 데이터를 효율적으로 처리
-
빅데이터 애플리케이션에 필요한 대부분의 기능을 지원 (단일 프레임워크로 만듬)
- 맵리듀스와 유사한 일괄 처리 기능
- 실시간 데이터 처리 기능 (Spark Streaming)
- SQL과 유사한 정형 데이터 처리 기능 (Sprk SQL)
- 그래프 알고리즘 (Spark GraphX)
- 머신 러닝 알고리즘 (Spark MLlib)
- 통계 플랫폼 (Spark R)
- Spark 특징
- Speed
- In-Memory 기반의 빠른 처리
- Ease of Use
- 다양한 언어 지원(Java, Scala, Python, R, SQL)을 통한 사용의 편이성
- Generality
- SQL, Streaming, 머신러닝, 그래프 연산 등 다양한 컴포넌트 제공
- Run Everywhere
- YARN, Mesos, Kubernetes 등 다양한 클러스터에서 동작 가능
- HDFS, Cassandra, HBase 등 다양한 파일 포맷 지원 (No SQL 등)
- Speed
Spark 지원언어
- Spark 프로그래밍
- 스파크 애플리케이션은 스칼라, 자바, 파이썬, R로 구현
- 각 언어로 스파크 SQL을 실행
- 스칼라 → 스파크에서 가장 많이 쓰임
- 객체 지향 언어의 특징과 함수형 언어의 특징을 함께 가지는 다중 패러다임 프로그래밍 언어
- 스칼라는 JVM에서 동작하는 JVML언어
- JVML(Java Virtual Machune Language)언어는 자바 가상머신 위에서 동작하는 언어들로 Scala, kotlin, Groovy 등
- 파이썬, Java, R
- 파이썬 - 머신러닝
- R - 통계플랫폼
- Java → java기반설계인 스파크
- 스파크 쉘 - 데이터를 대화식으로 분석하는 강력한 도구인 대화형 쉘을 제공
- PySpark
Spark 유사 플랫폼 비교
- 스파크와 하둡의 비교
-
스파크의 메모리 내 (인 메모리 기반) 데이터 고속 처리 엔진은 특정 상황, 스테이지 간 다중 스테이지 작업과 비교 시 맵리듀스에 비해 최대 100배 더 빠르다.
-
아파치 스파크 API는 맵리듀스와 다른 아파치 하둡 구성 요소에 비해 개발자 친화적 API를 제공하여 분산 처리 엔진의 복잡성 대부분을 간단한 메서드로 처리하도록 한다.
- 머신러닝도 간단한 함수로 제공됨
-
아파치 스파크의 중심은 컴퓨팅 클러스터로 분할 가능한 불변적 객체 컬렉션을 나타내는 프로그래밍 추상화, 즉 탄력적 분산 데이터 집합(Resilient Distributed Dataset, RDD) 개념이다.
- 객체화
- RDD - 데이터 추상화
- RDD 는 여러 분산 노드에 걸쳐서 저장되는 변경이 불가능한 데이타(객체)의 집합으로 각각의 RDD는 여러개의 파티션으로 분리가 된다. (서로 다른 노드에서 분리되서 실행되는).
- 쉽게 말해서 스파크 내에 저장된 데이타를 RDD라고 하고, 변경이 불가능하다. 변경을 하려면 새로운 데이타 셋을 생성해야 한다.
-
스파크 SQL은 구조적 데이터 처리에 초점을 두며, R과 파이썬(pandas) 에서 차용한 데이터 프레임을 사용.
-
스파크 SQL은 표준 SQL 지원 외에 기본적으로 지원되는 JSON, HDFS, 아파치 Hive, JDBC, 아파치 ORC, 아파치 Parquet 를 포함한 다른 데이터 저장소에서의 읽기와 쓰기를 위한 표준 인터페이스 제공
- 하둡과 파케이의 파일 형식을 알아야 한다.
-
- Summary
- 아파치 스파크는 인메모리 기반의 대용량 데이터 고속 처리 엔진으로 오픈 소스 범용 분산 클러스터 컴퓨팅 프레임 워크를 의미
- 스파크 애플리케이션은 스칼라, 자바, 파이썬, R 로 구현
- 아파치 스파크의 중심은 컴퓨팅 클러스터로 분할 가능한 불변적 객체 컬렉션을 나타내는 프로그래밍 추상화, 즉 탄력적 분산 데이터 집합(Resilient Distributed Dataset, RDD) 개념이다.
LIST
'Big Data > Spark' 카테고리의 다른 글
(Apache Spark) 인메모리 방식이란? (0) | 2020.11.09 |
---|