SlideShare a Scribd company logo
1 of 27
Download to read offline
Apache Spark
2022.02.21
이인표
목차
■ Hadoop Framework
■ Hadoop EcoSystem
■ Hadoop 단점
■ Spark Framework
■ Spark Cluster Structure
■ Spark Data Model
■ Spark Streaming Library
■ Spark Spark Structured Streaming Library
Hadoop Framework
▪ 하둡(Hadoop)이란
▪ 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크
▪ 하둡(Hadoop)의 특징
▪ 오픈 소스 (Open Source)
▪ 선형적 확장 (Scale out)
▪ 장애 허용 시스템 (Fault-toleran)
▪ 분산 저장 (HDFS)
▪ 분산 처리 (MapReduce)
Hadoop EcoSystem
▪ Hadoop EcoSystem Module
▪ 데이터 수집 모듈 : 플럼, 스쿱, 카프카
▪ 공유 자원 유지관리 모듈 : 주키퍼
▪ 분산 파일 시스템 모듈 : HDFS
▪ 클러스터 매니저(리소스 관리 모듈) : YARN
▪ 워크플로우 스케줄러 모듈 : 우지
▪ 분산 데이터 처리 모듈 : 피그, 맵리듀스
▪ 데이터 저장 모듈 : Hbase
▪ 클러스터 관리 및 모니터링 모듈 : 암바리
Hadoop EcoSystem - HDFS
▪ HDFS 특징
▪ 대용량 데이터를 범용 서버만으로 처리 가능
▪ 용량 확장성
▪ 높은 데이터 처리량
▪ 장애 Node에 대한 데이터 손실 방지
Hadoop EcoSystem - MapReduce
▪ MapReduce 특징
▪ 단순하고 사용이 편리
▪ 유연성
▪ 저장 구조의 독립성
▪ 내고장성
Hadoop 단점
▪ DISK 기반의 분산 처리로 실시간 데이터 분석 같은 작업에는 부적합
▪ HDFS에 저장된 데이터를 변경 불가
Spark Framework
▪ IN-Memory 방식의 대용량 데이터 처리 모듈
▪ 실시간으로 들어오는 스트리밍 데이터의 빠른 처리
Spark Framework - Module
▪ Spark 프레임워크 모듈
▪ Spark Core
▪ SparkSQL
▪ Spark Streaming
▪ Mllib
▪ GraphX
Spark Cluster Structure
▪ 스파크 클러스터 구조
▪ 스파크 어플리케이션과 클러스터 매니저로 구성
▪ 스파크 어플리케이션
▪ 스파크 어플리케이션은 Driver 프로세스와 익스큐터 프로세스로 구성
▪ Driver : 한 개의 노드에서 실행되며, main() 메서드를 실행
▪ Executer : 다수의 worker 노드에서 실행되는 프로세스로, Spark Driver가 할당한 작업(task)을 수행하여
결과를 반환
▪ 클러스터 매니저
▪ 스파크 어플리케이션의 리소스를 효율적으로 분배하는 역할을 담당
Spark Data Model - RDD
▪ RDD : 스파크의 기본 분산 데이터 모델이자 저수준의 API
▪ RDD 특징
▪ 불변성(Read Only)
▪ 복원성
▪ RDD 연산
▪ 변환(Transformatrion)
▪ 액션(Action)
Spark Data Model - RDD
▪ DAG 스케줄러
Spark Data Model - RDD
▪ Narrow Dependency
▪ 하나의 노드에서 작업이 처리
▪ 네트워크를 안타고 메모리의 속도로 동작해서 빠름
▪ 파티션이 문제가 발생하더라도 해당 노드에서 바로 복원 가능
Spark Data Model - RDD
▪ Wide Dependency
▪ 여러 노드에서 작업이 처리
▪ 네트워크를 타고 셔플 단계를 거치기 때문에 느림
▪ 파티션이 문제가 발생하면 복원 비용이 비쌈
Spark Data Model - RDD
▪ RDD 생성 방법
▪ 메모리에 생성된 데이터를 이용
▪ rdd = sc.parallelize([ ... ])
▪ 로컬 파일시스템이나 HDFS 등을 읽어서 생성
▪ rdd = sc.textFile(“PATH”)
▪ 기존 RDD로부터 또 다른 RDD 생성
▪ rdd1 = rdd.map(lambda s: s.upper())
Spark Data Model - RDD 동작 원리
▪ Transformation 연산
▪ 기존의 RDD 데이터를 변경하여 새로운 RDD 데이터를 생성
▪ Action 연산
▪ RDD 데이터를 기반으로 무엇인가를 계산해서 RDD가 아닌 결과를 생성
Spark Data Model - RDD Transformation 연산자의 종류, Action 연산자의 종류
▪ 대표적인 Transformation 연산자의 종류
▪ 대표적인 Action 연산자의 종류
Spark Data Model - DataFrame
▪ DataFrame
▪ Spark v1.3에서 도입된 데이터 모델로 Spark SQL 라이브러리에서 제공해주는 고수준의 API
▪ 행과 열로 구성된 정형화 데이터 포맷을 갖는 데이터 분산 컬렉션
▪ 카탈리스트 옵티마이저를 통해 실행된 query로부터 최적화된 실행 계획 생성
Spark Data Model - DataFrame
▪ DataFrame 생성 방법
▪ 외부 데이터소스로부터 데이터프레임 생성
▪ Dataset<Row> df = spark.read().json("examples/src/main/resources/people.json");
▪ 기존 RDD 및 로컬 컬렉션으로부터 데이터프레임 생성
▪ Dataset<ROW> ds = spark.createDataFrame(객체 List, 객체의 타입);
Spark Data Model - DataSet
▪ DataSet
▪ RDD와 DataFrame의 단점을 보완해서 만든 Spark SQL 라이브러리에서 제공해주는 고수준의 API
▪ Spark 1.6v에서 추가되어 2.0에서 Dataframe과 Dataset이 통합
▪ 컴파일 시점 데이터 타입 체크
▪ 카탈리스트 옵티마이저를 통한 최적화
▪ 데이터 직렬화를 위한 전용 인코더
Spark Streaming Library
▪ Spark Streaming
▪ 스트림 데이터를 시간 간격으로 분할
▪ 분할된 데이터를 대상으로 배치 수행
▪ 각 배치는 기존의 Spark Job과 동일하게 처리
Spark Streaming Library
▪ Streaming Context 생성
▪ Streaming Context을 사용하기 위해서 가장 먼저 생성하는 인스턴스
▪ 어떤 주기로 배치 처리를 수행할지에 대한 정보를 함께 제공
▪ SparkConf나 SparkContext를 이용해서 생성
// 스트리밍 컨텍스트 생성
SparkConf conf = new SparkConf().setAppName("ex4").setMaster("local[2]");
JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(10));
// + 소켓을 통한 Dstream 생성
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
Spark Streaming Library
▪ DStream
▪ 스파크 스트리밍에서 사용하는 고정되지 않고 끊임없이 생성되는 연속된 데이터를 나타내기
위한 새로운 데이터 모델
▪ 일정 시간마다 데이터를 모아서 RDD로 만들어줌
Spark Streaming Library
▪ 윈도우 연산
▪ 마지막 배치가 수행됐을 때 읽어온 데이터뿐 아니라 그 이전에 수행된 배치의 입력 데이터까지
한꺼번에 처리할 수 있도록 지원하는 연산
Spark Streaming Library
// 저장
ssc.checkpoint("저장 할 디렉터리 경로")
// 읽기
StreamingContext.getOrCreate("체크포인팅 경로", 스트리밍 컨텍스트 생성 함수)
▪ CheckPoint
▪ 장애가 발생할 경우 복구를 위해 사용하는 용어
▪ 메타데이터 체크포인팅
▪ 드라이버 프로그램을 복구하는 용도로 사용
▪ 데이터 체크포인팅
▪ 최종 상태의 데이터를 빠르게 복구하기 위한 용도로 사용
Spark Structured Streaming Library
▪ Spark Structured Streaming
▪ Spark 2.0에서 새롭게 도입된 Spark가 제공하는 또 하나의 스트리밍 데이터 처리용 API
▪ 꾸준히 생성되는 데이터를 무한히 증가하는 하나의 커다란 DataSet으로 간주하고 처리하는 방식
감사합니다.

More Related Content

Similar to Apache Spark

데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)SeungYong Baek
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
spark database Service
spark database Servicespark database Service
spark database Service창언 정
 
Chapter3 - learning spark
Chapter3 - learning sparkChapter3 - learning spark
Chapter3 - learning sparkMungyu Choi
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Keeyong Han
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
[스프링 스터디 3일차] 데이터엑세스기술
[스프링 스터디 3일차] 데이터엑세스기술[스프링 스터디 3일차] 데이터엑세스기술
[스프링 스터디 3일차] 데이터엑세스기술AnselmKim
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Steve Min
 
Flamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerFlamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerBYOUNG GON KIM
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례Taehyeon Oh
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) ymtech
 
sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리Sang-bae Lim
 

Similar to Apache Spark (20)

데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
spark database Service
spark database Servicespark database Service
spark database Service
 
Chapter3 - learning spark
Chapter3 - learning sparkChapter3 - learning spark
Chapter3 - learning spark
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
Start spark
Start sparkStart spark
Start spark
 
[스프링 스터디 3일차] 데이터엑세스기술
[스프링 스터디 3일차] 데이터엑세스기술[스프링 스터디 3일차] 데이터엑세스기술
[스프링 스터디 3일차] 데이터엑세스기술
 
What is spark
What is sparkWhat is spark
What is spark
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)
 
Flamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerFlamingo (FEA) Spark Designer
Flamingo (FEA) Spark Designer
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
Cluster - spark
Cluster - sparkCluster - spark
Cluster - spark
 
NoSQL
NoSQLNoSQL
NoSQL
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit)
 
sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리sparklyr을 활용한 R 분산 처리
sparklyr을 활용한 R 분산 처리
 

Apache Spark

  • 2. 목차 ■ Hadoop Framework ■ Hadoop EcoSystem ■ Hadoop 단점 ■ Spark Framework ■ Spark Cluster Structure ■ Spark Data Model ■ Spark Streaming Library ■ Spark Spark Structured Streaming Library
  • 3. Hadoop Framework ▪ 하둡(Hadoop)이란 ▪ 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크 ▪ 하둡(Hadoop)의 특징 ▪ 오픈 소스 (Open Source) ▪ 선형적 확장 (Scale out) ▪ 장애 허용 시스템 (Fault-toleran) ▪ 분산 저장 (HDFS) ▪ 분산 처리 (MapReduce)
  • 4. Hadoop EcoSystem ▪ Hadoop EcoSystem Module ▪ 데이터 수집 모듈 : 플럼, 스쿱, 카프카 ▪ 공유 자원 유지관리 모듈 : 주키퍼 ▪ 분산 파일 시스템 모듈 : HDFS ▪ 클러스터 매니저(리소스 관리 모듈) : YARN ▪ 워크플로우 스케줄러 모듈 : 우지 ▪ 분산 데이터 처리 모듈 : 피그, 맵리듀스 ▪ 데이터 저장 모듈 : Hbase ▪ 클러스터 관리 및 모니터링 모듈 : 암바리
  • 5. Hadoop EcoSystem - HDFS ▪ HDFS 특징 ▪ 대용량 데이터를 범용 서버만으로 처리 가능 ▪ 용량 확장성 ▪ 높은 데이터 처리량 ▪ 장애 Node에 대한 데이터 손실 방지
  • 6. Hadoop EcoSystem - MapReduce ▪ MapReduce 특징 ▪ 단순하고 사용이 편리 ▪ 유연성 ▪ 저장 구조의 독립성 ▪ 내고장성
  • 7. Hadoop 단점 ▪ DISK 기반의 분산 처리로 실시간 데이터 분석 같은 작업에는 부적합 ▪ HDFS에 저장된 데이터를 변경 불가
  • 8. Spark Framework ▪ IN-Memory 방식의 대용량 데이터 처리 모듈 ▪ 실시간으로 들어오는 스트리밍 데이터의 빠른 처리
  • 9. Spark Framework - Module ▪ Spark 프레임워크 모듈 ▪ Spark Core ▪ SparkSQL ▪ Spark Streaming ▪ Mllib ▪ GraphX
  • 10. Spark Cluster Structure ▪ 스파크 클러스터 구조 ▪ 스파크 어플리케이션과 클러스터 매니저로 구성 ▪ 스파크 어플리케이션 ▪ 스파크 어플리케이션은 Driver 프로세스와 익스큐터 프로세스로 구성 ▪ Driver : 한 개의 노드에서 실행되며, main() 메서드를 실행 ▪ Executer : 다수의 worker 노드에서 실행되는 프로세스로, Spark Driver가 할당한 작업(task)을 수행하여 결과를 반환 ▪ 클러스터 매니저 ▪ 스파크 어플리케이션의 리소스를 효율적으로 분배하는 역할을 담당
  • 11. Spark Data Model - RDD ▪ RDD : 스파크의 기본 분산 데이터 모델이자 저수준의 API ▪ RDD 특징 ▪ 불변성(Read Only) ▪ 복원성 ▪ RDD 연산 ▪ 변환(Transformatrion) ▪ 액션(Action)
  • 12. Spark Data Model - RDD ▪ DAG 스케줄러
  • 13. Spark Data Model - RDD ▪ Narrow Dependency ▪ 하나의 노드에서 작업이 처리 ▪ 네트워크를 안타고 메모리의 속도로 동작해서 빠름 ▪ 파티션이 문제가 발생하더라도 해당 노드에서 바로 복원 가능
  • 14. Spark Data Model - RDD ▪ Wide Dependency ▪ 여러 노드에서 작업이 처리 ▪ 네트워크를 타고 셔플 단계를 거치기 때문에 느림 ▪ 파티션이 문제가 발생하면 복원 비용이 비쌈
  • 15. Spark Data Model - RDD ▪ RDD 생성 방법 ▪ 메모리에 생성된 데이터를 이용 ▪ rdd = sc.parallelize([ ... ]) ▪ 로컬 파일시스템이나 HDFS 등을 읽어서 생성 ▪ rdd = sc.textFile(“PATH”) ▪ 기존 RDD로부터 또 다른 RDD 생성 ▪ rdd1 = rdd.map(lambda s: s.upper())
  • 16. Spark Data Model - RDD 동작 원리 ▪ Transformation 연산 ▪ 기존의 RDD 데이터를 변경하여 새로운 RDD 데이터를 생성 ▪ Action 연산 ▪ RDD 데이터를 기반으로 무엇인가를 계산해서 RDD가 아닌 결과를 생성
  • 17. Spark Data Model - RDD Transformation 연산자의 종류, Action 연산자의 종류 ▪ 대표적인 Transformation 연산자의 종류 ▪ 대표적인 Action 연산자의 종류
  • 18. Spark Data Model - DataFrame ▪ DataFrame ▪ Spark v1.3에서 도입된 데이터 모델로 Spark SQL 라이브러리에서 제공해주는 고수준의 API ▪ 행과 열로 구성된 정형화 데이터 포맷을 갖는 데이터 분산 컬렉션 ▪ 카탈리스트 옵티마이저를 통해 실행된 query로부터 최적화된 실행 계획 생성
  • 19. Spark Data Model - DataFrame ▪ DataFrame 생성 방법 ▪ 외부 데이터소스로부터 데이터프레임 생성 ▪ Dataset<Row> df = spark.read().json("examples/src/main/resources/people.json"); ▪ 기존 RDD 및 로컬 컬렉션으로부터 데이터프레임 생성 ▪ Dataset<ROW> ds = spark.createDataFrame(객체 List, 객체의 타입);
  • 20. Spark Data Model - DataSet ▪ DataSet ▪ RDD와 DataFrame의 단점을 보완해서 만든 Spark SQL 라이브러리에서 제공해주는 고수준의 API ▪ Spark 1.6v에서 추가되어 2.0에서 Dataframe과 Dataset이 통합 ▪ 컴파일 시점 데이터 타입 체크 ▪ 카탈리스트 옵티마이저를 통한 최적화 ▪ 데이터 직렬화를 위한 전용 인코더
  • 21. Spark Streaming Library ▪ Spark Streaming ▪ 스트림 데이터를 시간 간격으로 분할 ▪ 분할된 데이터를 대상으로 배치 수행 ▪ 각 배치는 기존의 Spark Job과 동일하게 처리
  • 22. Spark Streaming Library ▪ Streaming Context 생성 ▪ Streaming Context을 사용하기 위해서 가장 먼저 생성하는 인스턴스 ▪ 어떤 주기로 배치 처리를 수행할지에 대한 정보를 함께 제공 ▪ SparkConf나 SparkContext를 이용해서 생성 // 스트리밍 컨텍스트 생성 SparkConf conf = new SparkConf().setAppName("ex4").setMaster("local[2]"); JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(10)); // + 소켓을 통한 Dstream 생성 JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
  • 23. Spark Streaming Library ▪ DStream ▪ 스파크 스트리밍에서 사용하는 고정되지 않고 끊임없이 생성되는 연속된 데이터를 나타내기 위한 새로운 데이터 모델 ▪ 일정 시간마다 데이터를 모아서 RDD로 만들어줌
  • 24. Spark Streaming Library ▪ 윈도우 연산 ▪ 마지막 배치가 수행됐을 때 읽어온 데이터뿐 아니라 그 이전에 수행된 배치의 입력 데이터까지 한꺼번에 처리할 수 있도록 지원하는 연산
  • 25. Spark Streaming Library // 저장 ssc.checkpoint("저장 할 디렉터리 경로") // 읽기 StreamingContext.getOrCreate("체크포인팅 경로", 스트리밍 컨텍스트 생성 함수) ▪ CheckPoint ▪ 장애가 발생할 경우 복구를 위해 사용하는 용어 ▪ 메타데이터 체크포인팅 ▪ 드라이버 프로그램을 복구하는 용도로 사용 ▪ 데이터 체크포인팅 ▪ 최종 상태의 데이터를 빠르게 복구하기 위한 용도로 사용
  • 26. Spark Structured Streaming Library ▪ Spark Structured Streaming ▪ Spark 2.0에서 새롭게 도입된 Spark가 제공하는 또 하나의 스트리밍 데이터 처리용 API ▪ 꾸준히 생성되는 데이터를 무한히 증가하는 하나의 커다란 DataSet으로 간주하고 처리하는 방식