일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Optimization
- AWS
- 깊이우선탐색
- Medium
- 스파크
- elasticsearch
- dump
- dfs
- solution
- Algorithm
- 해시
- leetcode
- Django
- ELK
- 키바나
- twosum
- 리트코드
- RecommendationSystem
- Spark
- daspecialty
- 알고리즘
- 파이썬
- kibana
- 엘라스틱서치
- 장고
- programmers
- CentOS
- python
- Easy
- 프로그래머스
- Today
- Total
목록전체 글 (47)
Archive
Enviornment : Amazon Linux 2 / Python 3.7.* Problem Boto3 Library 활용 시 Access key, Secret access key 를 통한 인증을 시도할 때 InvalidSignatureException 발생 botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the LookupEvents operatation : The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method..
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..
1. Snowflake Snowflake는 SaaS 형태의 클라우드 기반의 빅데이터 솔루션으로 데이터 수집부터 처리, 저장에 이르는 모든 과정을 단일 플랫폼으로 제공한다. 즉, 기존에 On-Prem Hadoop 이나 AWS 등 단일 클라우드 에서 여러 서비스들을 조합하여 하나의 빅데이터 솔루션을 만들었다면, Data Lake 역할 및 Data Warehouse / Mart 로도 활용할 수 있는 모든 기능을 Snowflake 라는 하나의 플랫폼에 담았으며, Storage와 Computing의 분리를 통해 이 모든 Processing을 Computing 확장을 통해 각각의 workload 동시에 수행할 수 있다는 장점이 있다. 또한 Auto Scaling (Scale Up/ Scale Out ), Auto ..
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 ..