SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Spark Performance
Tuning - Part #2 (병렬처리)
2019. 1. 22
Contents
1. 서론
1. 연구배경 및 방법
2. 이론적 고찰
3. 예측모델 개발공정
2. 본론
1. 시스템 구성도
2. 데이터 구성도
3. 시스템 설정
4. 실행 및 테스트
3. 결론
2
1. 서론
3
4
2-1. 연구배경 및 방법
하둡에코시스템 구성 및 샘플데이터 활용하여 이관 테스트
Hadoop
Name Node
Spark
Master
Hive
Master
Resource Manger
No Lv1 Lv2 Version Contents
1
Oracle
Linux
7.3 OS
2 Hadoop 2.7.6 Distributed Storage
3 Spark 2.2.0
Distributed
Processing
4 Hive 2.3.3
Supprt SQL
(Master, Only master)
5 MariaDB 10.2.11
RDB
(Master, Only master)
6
Oracle
Client
18.3.0.0.
0
Oracle DB
client
Maria DB
Hadoop
DataNode
Spark
Worker
NodeManager
Hadoop
DataNode
Spark
Worker
NodeManager
Hadoop
DataNode
Spark
Worker
NodeManager
Service configurationHadoop Ecosystem
Secondary
Name Node
p-master
hadoop1 hadoop2 hadoop3
5
2-1. 연구배경 및 방법
하둡에코시스템 구성 및 샘플데이터 활용하여 이관 테스트
불러오기 처리 저장하기
Source Data Spark Output Data
판매실적 데이터 이관 판매실적
Oracle
DB
Spark
Oracle
DB
S/W
H/W
S/W
H/W
S/W
H/W
6
2-2. 이론적 고찰
파티셔닝
클러스터를 통해 작업을 배포하고 각 노드의 메모리 요구 사항을 줄이기 위해
Spark는 데이터를 파티션을 통해 분할하고 각 파티션은 Executor에 전송됨.
전체 데이터
파티션 파티션#1 파티션#2 파티션#3
Executor1 Executor2 Executor3
7
2-2. 이론적 고찰
1. Spark 구동방식
Spark-submit 사용하여
Spark 작업 제출
Sparkcontext 드라이버
프로그램 실행
클러스터 마스터
노드에서 WORKER NODE를 통해
Executor가 실행되며 프로그램 구동
8
2-2. 이론적 고찰
2. 셔플링
데이터가 파티션간에 재배치 될 때 셔플이 발생한다. (그룹 합, 평균등)
파티션
셔플 쓰기
파티션#1 파티션#2 파티션#3
Executor1 Executor2 Executor3
파티션#1 파티션#2 파티션#3셔플 읽기
9
2-2. 이론적 고찰
3. 주요 설정파일
(기본 BASE 설정) SPARK-ENV.SH
(런타임 적용 설정) SPARK-DEFAULT.CONF
spark-env.sh spark-defaults.conf
10
2-3. 예측모델 개발공정
4. 개발 프로세스
대분류 중분류 작업 산출물
착수 계획수립 프로젝트 계획 수립 / 확정 프로젝트 수행계획서
분석
현황분석 요구사항 정의, 시스템 분석 요구사항 정의서
분석과제 정의 분석과제 도출, 선정, 확정
시스템 아키텍쳐 정의서
분석모델 정의 분석모델/시스템 정의
설계
분석모델 설계 분석 시나리오, 데이터, 알고리즘 설계 및 검증 분석모델 정의서
시스템 설계 데이터베이스, I/F 및 테스트 설계
테이블, 프로그램, 화면
인터페이스 목록/정의서
구축 시스템 개발 화면, DB, 배치, I/F 개발 소스코드, DB
테스트 단위/통합 테스트
단위테스트 시나리오 작성 및 수행 단위 및 통합 테스트
계획서/절차서/결과서통합테스트 계획 / 시나리오 수립 및 실행
이행
및 안정화
시스템 이행 이행계획서 작성 이행 계획서
사용자 교육 사용자/운영자 교육 실시 및 매뉴얼 작성
사용자 매뉴얼,
운영 매뉴얼
종료 프로젝트 종료 종료보고 및 인수확인 완료보고서, 검수확인서
3. 본론
11
3-1. 시스템 구성도
12
Input DB Output DB
192.168.110.112 192.168.110.111
Hadoop
Name Node
Spark
Master
Hive
Master
Resource Manger
Maria DB
Hadoop
DataNode
Spark
Worker
NodeManager
Hadoop
DataNode
Spark
Worker
NodeManager
Hadoop
DataNode
Spark
Worker
NodeManager
Hadoop Ecosystem
Secondary
Name Node
p-master
hadoop1 hadoop2 hadoop3
192.168.110.117
192.168.110.118 192.168.110.119 192.168.110.120
Oracle Oracle
3-2. 데이터 구성도
13
Define the outbound and inbound data
No InterfaceID Content System Type Count Periods Column cnt Comments
1 IB-001 Sellout Dev System RDB 100 million - 17 TBD
2 IB-002 Sellout Dev System RDB 13 million 17 1/22
3 IB-003 Parameter Dev System RDB 2 5
inbound
No InterfaceID Content System Type Count Periods Column cnt Comments
1 OB-001 Sellout Op System RDB
100
million
- 17 TBD
2 OB-002 Sellout Op System RDB 13 million 17 1/22
outbound
3-3. 시스템 설정
14
Div Value
Cluster 3
Worker 서버별 1
Executor-count 서버별 3
Executor-core 4
Executor-memory 10
슬레이브 PC #1
Executor
Core: 4
Mem: 10
Worker #1
Worker #2, ….
CPU: 16코어 MEM: 40G 할당
마스터 PC
Worker #1
MEM: 5G 할당
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
슬레이브 PC #1
Executor
Core: 4
Mem: 10
Worker #1
Worker #2, ….
CPU: 16코어 MEM: 40G 할당
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
슬레이브 PC #1
Executor
Core: 4
Mem: 10
Worker #1
Worker #2, ….
CPU: 16코어 MEM: 40G 할당
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
Executor
Core: 4
Mem: 10
3-4. 실행 및 테스트
15
(Case #1) 병렬처리 코드 미 적용 시 (코드실행)
spark-submit --class com.spark.c10_dataTransfer.basicDataTransfer sparkProgramming-spark-1.0.jar
파티션 미 적용
3-4. 실행 및 테스트
16
(Case #1) 병렬처리 코드 미 적용 시 (결과)
3-4. 실행 및 테스트
17
(Case #2) 병렬처리 코드 적용 시 (코드실행)
spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar
파티션 사이즈 100 설정
3-4. 실행 및 테스트
18
(Case #2) 병렬처리 코드 적용 시 (결과)
3-4. 실행 및 테스트
19
(Case #3) 병렬처리 코드 적용 시 (코드실행)
spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar
파티션 사이즈 1000 설정
3-4. 실행 및 테스트
20
(Case #3) 병렬처리 코드 적용 시 (결과)
3-4. 실행 및 테스트
21
(Case #4) 병렬처리 코드 적용 시 (코드실행)
spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar
파티션 사이즈 10 설정
3-4. 실행 및 테스트
22
(Case #4) 병렬처리 코드 적용 시 (결과)
4. 결론
23
4. 결론
• Spark에서 데이터 불러오기 및 저장하기 시 코드 상에서
병렬처리 적용 시 속도 향상이 가능하다.
(단, 설정한 Band의 크기를 판단하여 파티션 사이즈 고려가 필요함)
구분 데이터 (1500만건, 2.6GB) 비고
병렬처리 미 적용 시 7분 No 파티션
적용 시 (파티션 사이즈 100) 3.7분 파티션 크기 100
적용 시 (파티션 사이즈 1000) 12분 파티션 크기 1000
적용 시 (파티션 사이즈 10) 16분 파티션 크기 100
Thank you
25
End of Document

Weitere ähnliche Inhalte

Was ist angesagt?

[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기OpenStack Korea Community
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...OpenStack Korea Community
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduceDaeyong Shin
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계PgDay.Seoul
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
TestDFSIO
TestDFSIOTestDFSIO
TestDFSIOhhyin
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes창언 정
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)창언 정
 
Grafana Review
Grafana ReviewGrafana Review
Grafana ReviewSangmo Goo
 
Terasort
TerasortTerasort
Terasorthhyin
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudJinwook Chung
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부Jinho Yoo
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제Tae Young Lee
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQLI Goo Lee
 
4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하Mungyu Choi
 
AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론I Goo Lee
 

Was ist angesagt? (20)

[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduce
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
TestDFSIO
TestDFSIOTestDFSIO
TestDFSIO
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)
 
Grafana Review
Grafana ReviewGrafana Review
Grafana Review
 
Terasort
TerasortTerasort
Terasort
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-Cloud
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하
 
AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론
 

Ähnlich wie Spark performance tuning

Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) ymtech
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트SANG WON PARK
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
Hadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobileHadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobile상연 최
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기hanbeom Park
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리민기 박
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)WhaTap Labs
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfkwbak
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampSang-bae Lim
 

Ähnlich wie Spark performance tuning (20)

Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit) DPDK (Data Plane Development Kit)
DPDK (Data Plane Development Kit)
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트
 
Spark sql
Spark sqlSpark sql
Spark sql
 
DPDK
DPDKDPDK
DPDK
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
Hadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobileHadoop cluster os_tuning_v1.0_20170106_mobile
Hadoop cluster os_tuning_v1.0_20170106_mobile
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
What is spark
What is sparkWhat is spark
What is spark
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcamp
 

Spark performance tuning

  • 1. Spark Performance Tuning - Part #2 (병렬처리) 2019. 1. 22
  • 2. Contents 1. 서론 1. 연구배경 및 방법 2. 이론적 고찰 3. 예측모델 개발공정 2. 본론 1. 시스템 구성도 2. 데이터 구성도 3. 시스템 설정 4. 실행 및 테스트 3. 결론 2
  • 4. 4 2-1. 연구배경 및 방법 하둡에코시스템 구성 및 샘플데이터 활용하여 이관 테스트 Hadoop Name Node Spark Master Hive Master Resource Manger No Lv1 Lv2 Version Contents 1 Oracle Linux 7.3 OS 2 Hadoop 2.7.6 Distributed Storage 3 Spark 2.2.0 Distributed Processing 4 Hive 2.3.3 Supprt SQL (Master, Only master) 5 MariaDB 10.2.11 RDB (Master, Only master) 6 Oracle Client 18.3.0.0. 0 Oracle DB client Maria DB Hadoop DataNode Spark Worker NodeManager Hadoop DataNode Spark Worker NodeManager Hadoop DataNode Spark Worker NodeManager Service configurationHadoop Ecosystem Secondary Name Node p-master hadoop1 hadoop2 hadoop3
  • 5. 5 2-1. 연구배경 및 방법 하둡에코시스템 구성 및 샘플데이터 활용하여 이관 테스트 불러오기 처리 저장하기 Source Data Spark Output Data 판매실적 데이터 이관 판매실적 Oracle DB Spark Oracle DB S/W H/W S/W H/W S/W H/W
  • 6. 6 2-2. 이론적 고찰 파티셔닝 클러스터를 통해 작업을 배포하고 각 노드의 메모리 요구 사항을 줄이기 위해 Spark는 데이터를 파티션을 통해 분할하고 각 파티션은 Executor에 전송됨. 전체 데이터 파티션 파티션#1 파티션#2 파티션#3 Executor1 Executor2 Executor3
  • 7. 7 2-2. 이론적 고찰 1. Spark 구동방식 Spark-submit 사용하여 Spark 작업 제출 Sparkcontext 드라이버 프로그램 실행 클러스터 마스터 노드에서 WORKER NODE를 통해 Executor가 실행되며 프로그램 구동
  • 8. 8 2-2. 이론적 고찰 2. 셔플링 데이터가 파티션간에 재배치 될 때 셔플이 발생한다. (그룹 합, 평균등) 파티션 셔플 쓰기 파티션#1 파티션#2 파티션#3 Executor1 Executor2 Executor3 파티션#1 파티션#2 파티션#3셔플 읽기
  • 9. 9 2-2. 이론적 고찰 3. 주요 설정파일 (기본 BASE 설정) SPARK-ENV.SH (런타임 적용 설정) SPARK-DEFAULT.CONF spark-env.sh spark-defaults.conf
  • 10. 10 2-3. 예측모델 개발공정 4. 개발 프로세스 대분류 중분류 작업 산출물 착수 계획수립 프로젝트 계획 수립 / 확정 프로젝트 수행계획서 분석 현황분석 요구사항 정의, 시스템 분석 요구사항 정의서 분석과제 정의 분석과제 도출, 선정, 확정 시스템 아키텍쳐 정의서 분석모델 정의 분석모델/시스템 정의 설계 분석모델 설계 분석 시나리오, 데이터, 알고리즘 설계 및 검증 분석모델 정의서 시스템 설계 데이터베이스, I/F 및 테스트 설계 테이블, 프로그램, 화면 인터페이스 목록/정의서 구축 시스템 개발 화면, DB, 배치, I/F 개발 소스코드, DB 테스트 단위/통합 테스트 단위테스트 시나리오 작성 및 수행 단위 및 통합 테스트 계획서/절차서/결과서통합테스트 계획 / 시나리오 수립 및 실행 이행 및 안정화 시스템 이행 이행계획서 작성 이행 계획서 사용자 교육 사용자/운영자 교육 실시 및 매뉴얼 작성 사용자 매뉴얼, 운영 매뉴얼 종료 프로젝트 종료 종료보고 및 인수확인 완료보고서, 검수확인서
  • 12. 3-1. 시스템 구성도 12 Input DB Output DB 192.168.110.112 192.168.110.111 Hadoop Name Node Spark Master Hive Master Resource Manger Maria DB Hadoop DataNode Spark Worker NodeManager Hadoop DataNode Spark Worker NodeManager Hadoop DataNode Spark Worker NodeManager Hadoop Ecosystem Secondary Name Node p-master hadoop1 hadoop2 hadoop3 192.168.110.117 192.168.110.118 192.168.110.119 192.168.110.120 Oracle Oracle
  • 13. 3-2. 데이터 구성도 13 Define the outbound and inbound data No InterfaceID Content System Type Count Periods Column cnt Comments 1 IB-001 Sellout Dev System RDB 100 million - 17 TBD 2 IB-002 Sellout Dev System RDB 13 million 17 1/22 3 IB-003 Parameter Dev System RDB 2 5 inbound No InterfaceID Content System Type Count Periods Column cnt Comments 1 OB-001 Sellout Op System RDB 100 million - 17 TBD 2 OB-002 Sellout Op System RDB 13 million 17 1/22 outbound
  • 14. 3-3. 시스템 설정 14 Div Value Cluster 3 Worker 서버별 1 Executor-count 서버별 3 Executor-core 4 Executor-memory 10 슬레이브 PC #1 Executor Core: 4 Mem: 10 Worker #1 Worker #2, …. CPU: 16코어 MEM: 40G 할당 마스터 PC Worker #1 MEM: 5G 할당 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10 슬레이브 PC #1 Executor Core: 4 Mem: 10 Worker #1 Worker #2, …. CPU: 16코어 MEM: 40G 할당 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10 슬레이브 PC #1 Executor Core: 4 Mem: 10 Worker #1 Worker #2, …. CPU: 16코어 MEM: 40G 할당 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10 Executor Core: 4 Mem: 10
  • 15. 3-4. 실행 및 테스트 15 (Case #1) 병렬처리 코드 미 적용 시 (코드실행) spark-submit --class com.spark.c10_dataTransfer.basicDataTransfer sparkProgramming-spark-1.0.jar 파티션 미 적용
  • 16. 3-4. 실행 및 테스트 16 (Case #1) 병렬처리 코드 미 적용 시 (결과)
  • 17. 3-4. 실행 및 테스트 17 (Case #2) 병렬처리 코드 적용 시 (코드실행) spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar 파티션 사이즈 100 설정
  • 18. 3-4. 실행 및 테스트 18 (Case #2) 병렬처리 코드 적용 시 (결과)
  • 19. 3-4. 실행 및 테스트 19 (Case #3) 병렬처리 코드 적용 시 (코드실행) spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar 파티션 사이즈 1000 설정
  • 20. 3-4. 실행 및 테스트 20 (Case #3) 병렬처리 코드 적용 시 (결과)
  • 21. 3-4. 실행 및 테스트 21 (Case #4) 병렬처리 코드 적용 시 (코드실행) spark-submit --class com.spark.c10_dataTransfer.partitionDataTransfer sparkProgramming-spark-1.0.jar 파티션 사이즈 10 설정
  • 22. 3-4. 실행 및 테스트 22 (Case #4) 병렬처리 코드 적용 시 (결과)
  • 24. 4. 결론 • Spark에서 데이터 불러오기 및 저장하기 시 코드 상에서 병렬처리 적용 시 속도 향상이 가능하다. (단, 설정한 Band의 크기를 판단하여 파티션 사이즈 고려가 필요함) 구분 데이터 (1500만건, 2.6GB) 비고 병렬처리 미 적용 시 7분 No 파티션 적용 시 (파티션 사이즈 100) 3.7분 파티션 크기 100 적용 시 (파티션 사이즈 1000) 12분 파티션 크기 1000 적용 시 (파티션 사이즈 10) 16분 파티션 크기 100