일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 슬랙 파일업로드 제한
- 이미지 푸시
- Core/Context
- 알림무시
- Tuckman
- 코어/컨텍스트
- 카프카
- Slack File Upload
- 파이어베이스
- 해킹
- firebase
- 자연어처리 #konlpy #형태소분석
- Slack Limit
- 카프카 성능
- Scouter
- 슬랙
- 팀 발달 모델
- 슬랙 파일업로드
- 머신러닝
- bag of words
- 스케일 큐브
- Scale Cube
- kafka
- n-gram
- 스카우터
- Slack Rate Limit
- 웹보안
- Spark
- FCM
- Rate Limit
- Today
- Total
플랫폼 개발팀 기술 블로그
[스파크(Spark)] #2. 용어 및 개념 본문
[스파크(Spark)] #3. 구조적 API 개요 및 기본 연산
스파크가 무엇인지에 대한 개요에 대해서 알아보았다.
이번에는 핵심 용어 및 개념에 대해서 알아본다.
스파크 애플리케이션 아키텍처
사용자는 클러스터 매니저에게 스파크 애플리케이션을 제출한다.
클러스터 매니저는 제출받은 애플리케이션 실행에 필요한 자원을 할당하고, 스파크 애플리케이션은 할당받은 자원으로 작업을 처리한다.
스파크 애플리케이션은 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성된다.
드라이버 프로세스는 클러스터 노드 중 하나에에서만 실행한다. 즉 main() 함수를 실행한다.
익스큐더는 다수의 도드에서 실행하며, 드라이버가 할당한 작업을 수행한다.
사용자는 각 노드에 할당할 익스큐터 수를 지정할 수 있다.
클러스터 매니저는 스파크가 연산에 사용할 4개의 클러스터 종류를 지원한다.
드라이버(driver) |
|
익스큐터(executor) |
|
스파크는 사용 가능한 자원을 파악하기 위해 클러스터 매니저를 사용한다.
드라이버 프로세스는 주어진 작업을 완료하기 위해 익스큐터에게 명령을 내린다.
트랜스포메이션과 액션
스파크 핵심 데이터 구조는 불변성이다. 즉 데이터를 한번 생성하면 변경할 수 없다.
데이터를 변경하려면 스파크에게 알려줘야 한다. 이 때 사용하는 명령이 트랜스포메이션이다.
사용자는 트랜스포메이션을 사용해 논리적 실행 계획을 만든다. 하지만 액션을 호출하지 않으면 스파크는 실제 트랜스포메이션을 실행하지 않는다.
사용자는 트랜스포메이션을 사용해 논리적 실행 계획을 세우고 액션을 통하여 실제 연산을 수행한다.
아래 python 예제를 참조하자.
#트랜스포메이션 divisBy2 = myRange.where("number % 2 = 0") #액션 divisBy2.count()
트랜트포메이션은 두가지 유형의 의존성 존재한다.
좁은 의존성 |
|
넓은 의존성 |
|
파티션 관련 내용은 DataFrame을 먼저 참조하길 바란다.
스파크 기본 요소
스파크는 저수준의 API, 구조적 API, 그리고 추가로 제공하는 일련의 표준 라이브러리로 구성되어 있다.
저수준의 API와 구조적 API 차이는 데이터 스키마 여부와 추상화에 있다.
API 특징
RDD - Spark 1.0 |
|
DataFrame - Spark 1.3 |
|
DataSet - Spark 1.6, 2.0 |
|
API 차이점
마치며
스파크의 기본 용어 및 개념에 대해서 알아보았다.
다음에는 구조적 API와 기본연산에 대해서 알아본다.
참고
- https://medium.zenika.com/a-comparison-between-rdd-dataframe-and-dataset-in-spark-from-a-developers-point-of-view-a539b5acf734
- https://databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html
- https://stackoverflow.com/questions/31508083/difference-between-dataframe-dataset-and-rdd-in-spark
'Spark' 카테고리의 다른 글
[스파크(Spark)] #3. 구조적 API 개요 및 기본 연산 (0) | 2019.05.17 |
---|---|
[스파크(Spark)] #1. 개요 (0) | 2019.04.04 |