일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- dump
- 해시
- 알고리즘
- Optimization
- solution
- ELK
- elasticsearch
- Django
- 파이썬
- 장고
- Spark
- dfs
- Easy
- CentOS
- RecommendationSystem
- kibana
- 키바나
- Medium
- programmers
- twosum
- AWS
- python
- Algorithm
- leetcode
- 리트코드
- 스파크
- daspecialty
- 엘라스틱서치
- 깊이우선탐색
- Today
- Total
목록------- DE -------/Spark (9)
Archive
1. Row 및 Column 필터링은 최대한 앞 쪽에서 데이터를 변환하기 전, filter 함수를 먼저 적용하고 필요한 Column 만 선택하여 필요한 데이터만 처리할 수 있도록 한다. 처리 시간을 줄이고 Spark Application을 좀 더 효율적으로 만들 수 있다. 2. 적절한 File Format 선택 Avro와 같은 Row 기반 파일 형식은 Write는 빠르지만 Read는 느리고, ORC와 Parquet과 같은 Column 기반 파일 형식은 Avro에 비해 Write는 느리지만 Read는 더 빠르다. 때문에 Avro 같은 Row기반 파일 형식은 Write Once, Read Once 일 때 적합하고, ORC나 Parquet처럼 Column 기반 파일 형식은 더 자주 Read 하고 Transfo..
Spark 3.0에 들어서면서 Spark Core와 SQL 엔진에서 쿼리 속도를 높이기 위해 변화된 것 중 DPP(Dynamic Partition Pruning)과 AQE (Adaptive Query Execution)에 대해 설명한다. 1. 동적 파티션 정리 (Dynamic Partition Pruning) [링크] [SPARK-11150] Dynamic partition pruning - ASF JIRA Implements dynamic partition pruning by adding a dynamic-partition-pruning filter if there is a partitioned table and a filter on the dimension table. The filter is the..
0. Overview 대규모의 Spark Workload는 매일 야간에 혹은 몇 시간 간격으로 배치 잡으로 실행되는 경우가 많다. TB급 이상의 데이터를 처리하다 보면 resource 부족이나 점진적인 성능 저하에 따른 Job failure을 겪을 수가 있다. Resource 사용 최적화, Task의 병렬 실행, 다수의 Task에 의한 Bottleneck 문제를 어떻게 피하는지 등 문제 해결에 도움을 줄 Spark Configuration 들을 살펴보고자 한다. 1. Spark Configuration Setting Spark Configuration 설정을 하는 방법들 중에서 우선순위가 존재한다. spark-default.conf -> spark-submit을 통해 설정된 값 -> Spark Appli..
Job, Stage, Task 등 다양한 레벨에서 확인할 수 있고, 실행 계획 및 실제 수행 내역에 대한 Dag Visualizaiton 도 있다. 1. Job / Stage Job/Stage 각 탭에서는 개별 Task의 Detail (완료 상태, I/O , Duration, Memory Consumption, 실행시간 등)을 살펴볼 수 있는 UI를 제공한다. ① Job > Event Timeline Executor가 뜨고 죽는 시점을 확인할 수 있고, 아래 표에서 Complete 혹은 Fail 된 잡의 정보를 볼 수 있다. Duration이 유난히 긴 Job에 대해선 조금 더 자세히 (Stage, Task 등) 살펴볼 필요가 있다. 또한 각 Job의 Description을 클릭하면 상세 Job 페이지가..
0. Overview Spark의 Join연산은 Executor들 사이의 방대한 데이터 이동을 일으킨다. 그것을 Shuffle이 일어난다고 표현하는데 어떤 데이터를 생성하고, 어떤 Key 관련된 데이터를 Disk에 쓰고, 어떻게 Key와 데이터들을 groupBy(), join(), sortBy(), reduceByKey() 같은 작업들을 진행하는 노드들에 옮기는지 등이 핵심이다. Spark의 5가지의 Join 연산 방법 중 많이 쓰이는 BroadCast Hash Join, Shuffle Sort Merge Join에 대해 살펴볼 예정이다. 1. Broadcast Hash Join (BHJ) Broadcast Hash Join (Map-Side-Only Join이라고 하기도 한다)은 Data 이동이 필요 ..
Spark SQL 엔진의 핵심으로 Catalyst Optimizer와 Tungsten이 있다. Catalyst 는 쿼리를 Optimizing 하는 데 이용하고, Tungsten은 이 Optimized Query를 바탕으로 Optimized Code를 생성하는데 이용된다. 이 둘의 조합으로 Spark SQL 엔진은 최적화된 고수준의 Dataframe / Dataset API 및 SQL 쿼리 등을 지원한다. 1. Catalyst Optimizer Catalyst Optimizer 는 Query 최적화 프로그램을 구축하는 Spark 엔진의 핵심으로, Logical Query 들을 Physical Query Execute Plan으로 변환한다. 실행 계획으로 변환하기 위한 과정은 분석 -> 논리적 최적화 -> ..
1. Spark Application Spark로 제출되는 Job들은 Task라는 저수준 RDD Byte Code로 변환되어 Executor 들에 분산된다. Application Spark 위에서 돌아가는 사용자 프로그램. Driver Program + Executor를 칭함 SparkSession Spark Core 기능들과 상호 작용할 수 있는 진입점을 제공하는 객체이다. Spark Application 에서는 사용자가 직접 Spark Session 객체를 생성해야 한다. Job Spark Action 에 대한 응답으로 생성되는 여러 Task들로 이루어진 병렬 연산. Spark Driver는 Spark Application을 하나 이상의 Job으로 변환하고, 각 Job은 DAG(실행계획)로 변환된다...
1. Spark Application 구조 소개 1) Spark Driver Spark Driver는 Spark Session 객체를 초기화, Cluster Manager와 통신하며 Executor들을 위해 필요한 자원 ( CPU, Mem 등)을 요청, Spark 작업을 DAG형태로 Transform 및 Scheduling 하는 역할을 한다. 즉, Spark 내 필요한 자원을 받아오고 Executor과 통신하는 일종의 Spark Job의 Managing 역할을 하게 된다. Spark Session 객체를 생성하고, 이 객체를 통해 Executor와 Cluster Manager과 통신한다. 2) Spark Session Spark Session은 Cluster Manager와 연결되는 객체로, Spark ..
0. Overview 1. Programming Model 1.1. Basic Concepts 1.2. Handling Event-time and Late Data 1.3. Fault Tolerance Semantic 0. Overview Structured Streaming 는 Spark SQL 엔진을 기반으로 Streaming 처리를 위해 사용되는 라이브러리로, fast, scalable, fault-tolerant, end-to-end exactly-once stream processing 을 제공한다 내부적으로는 Micro-batch 형태로 처리하며, Dataset/DataFrame API를 사용하여 streaming aggregations, event-time windows, stream-to-..