SlideShare une entreprise Scribd logo
1  sur  91
Télécharger pour lire hors ligne
분산 환경에서
스트림과 배치 처리
통합 모델
정재부 이도경

네이버 검색정제개발랩
contents
1. 배치 처리 vs. 스트림 처리
2. Domaine Architecture
3. Domaine Development Kit Example
4. 초기 구축 배치 처리 방법
5. Stack Overview
6. 분산 환경 구성
7. 정리
8. QnA
2
1.
배치 처리 vs. 스트림 처리
3
배치 처리(Batch Processing)
배치 처리 vs. 스트림 처리
4
배치 처리(Batch Processing)
배치 처리 vs. 스트림 처리
Hadoop Mapreduce, Spark…
5
스트림 처리(Stream Processing)
배치 처리 vs. 스트림 처리
6
스트림 처리(Stream Processing)
배치 처리 vs. 스트림 처리
Storm, Flink, Samza…
7
배치 처리 vs. 스트림 처리
High Throughput vs. Low Latency
8
배치 처리 vs. 스트림 처리
Throughput Latency
트레이드오프
9
검색 문서 정제란?
정규화된 데이터를 검색에 적합한 형태로 가공하는 작업
질문
답변1
답변2
질문DB
답변DB
사용자DB
번호:233482408
카테고리:게임
질문자:a****
질문자등급:평민
질문:목욕 여신 코니 쓸만한가요?
내용:라인레인저스 하고 있는데요...
답변자1:b****
답변자1등급:영웅
답변1:신규 캐릭치곤 별로예요.
답변자2:c****
답변자2등급:수호신
답변2:최곱니다.
…
Search Document
검색
문서
정제
10
1. 많은 검색 대상 문서 처리가 가능해야함(High Throughput)
2. 최신 문서를 빠르게 검색에 노출(Low Latency)
3. 서비스별 비지니스 로직 적용
요구 사항
검색 문서 정제란?
11
Lambda Architecture
스트림과 배치 처리 통합 모델 사례
http://lambda-architecture.net/
12
예) Stage1은 1주일마다, Stage2는 1일마다, Stage3는 1시간마다, Stage4는 1분마다
Timewise Staged 배치 시스템
기존 검색 문서 정제 방식
Stage1
Weekly
Stage2
Daily
Stage3
Hourly Stage4
Minutely
13
Timewise Staged 배치 시스템
기존 검색 문서 정제 방식
Stage1
Weekly
Stage2
Daily
Stage3
Hourly Stage4
Minutely
Stage3 Stage2 Stage1
14
1. 배치 처리만으로 Low Latency 만족 가능
➡Latency 요구 사항을 만족하지못하면 Stage를 추가하면 된다.
2. 정제 로직 변경이 단순
➡모든 데이터는 결국 다시 처리
Timewise Staged 배치 시스템의 장점
15
1. Stage간에 부정확성이 발생
➡상위 Stage가 재수행되면 해결
2. 주기적인 전체 데이터 재처리 수행
변경되지 않은 99억999만건
변경되거나
 추가된
 1만건
Stage1이 매번 처리해야할 문서량
Timewise Staged 배치 시스템의 단점
16
증분 시스템(Incremental System)을 만들자.
네이버의 검색 증분화 프로젝트(BREW Project)
➡2015년 상반기 첫 검색 서비스 적용
어떻게하면 전체 재처리를 피할까?
17
1. Random Read/Write Storage
2. Transaction
3. Stream(Event-driven) Processing
증분 시스템을 만들려면?
18
장점
➡주기적인 전체 재처리 X
➡Low Latency
증분 시스템의 특징
19
단점
➡Persistent Storage Maintenance Hell
➡배치 처리 로직과 스트림 처리 로직의 통합은 아직...
증분 시스템의 특징
20
증분 시스템은 어떻게 만들지?
21
1. 너무 많은 솔루션(필요한데...)
2. 너무 많은 서비스(적용하기엔...)
결국 Abstraction이 답!
➡Programming Model Abstraction
정제 로직에만 집중할 수 없을까?
22
2.
Domaine Architecture
23
주요 특징
Transaction, Data Load/Sink Code 숨기기
Event: No Data, No action
Diff: previous/current value 제공
Domaine Architecture
24
Unlimited Memory Space
공간 제약이 없는
메모리가 있고
Domaine Architecture
25
Unlimited Memory Space
메모리상의
어떤 Cell의 값이 변하면
Domaine Architecture
26
Unlimited Memory Space
그 Cell에 관심이 있던
Yeast가 실행된다. Yeast
Domaine Architecture
27
Unlimited Memory Space
Yeast는 Process Unit이고
실행되면 로직에 따라
필요한 값을 읽어서 Yeast
Domaine Architecture
28
Unlimited Memory Space
Yeast
Domaine Architecture
결과를 메모리에 반영한다.
29
Unlimited Memory Space
새로 반영된 값에
관심이 있는
다른 Yeast가 있으면
해당 Yeast가 실행된다.
Yeast
Yeast
Domaine Architecture
30
Unlimited Memory Space
Yeast 하나가
실행되는 동안에는
논리적으로 전체 메모리를
혼자서만 바꿀수 있다.
Yeast
Yeast
Domaine Architecture
31
Unlimited Memory Space
Domaine
Yeast A Yeast B Yeast C Yeast D
Yeast와 메모리는 Domaine이라는 영역(Scope)으로 한정
같은 Domaine내 메모리는 R/W가 가능, 다른 Domaine은 R만 가능
Domaine Architecture
Yeast …Yeast Yeast Yeast Yeast
X O
W R
32
Domaine Architecture
오직 메모리에서 읽어서 처리후 다시 메모리에 쓴다.

Software Transactional Memory와 유사
int a = c1.getInt(0);
c1.set(a + 1);
Cell c1 = domaine.table(“t1”).row(“r2”).family(“f3”).qualifier(“q4”);
t1 f3 f4
row⑊cq q3 q4 q5 q6
r1
r2
f3
33
Domaine Development Kit
int a = a1.getInt(0);
Physical StorageStorageSandbox
a1 a1 3
b1 5
miss!
Yeast Layer DDK Layer Storage Layer
34
int a = a1.getInt(0);
Physical StorageStorageSandbox
a1 3 F a1 3
b1 5
fetch!a : 3
Domaine Development Kit
35
int a = a1.getInt(0);
int b = a1.getInt(1);
Physical StorageStorageSandbox
a1 3 F a1 3
b1 5
b : 3
Domaine Development Kit
36
int a = a1.getInt(0);
int b = a1.getInt(1);
int c = c1.getString(“c”);
Physical StorageStorageSandbox
a1 3 F
c1 null F
a1 3
b1 5
miss!
miss!
c: “c”
Domaine Development Kit
37
a1.set(5);
int a2 = a1.get();
b1.delete();
Physical StorageStorageSandbox
a1 5 W
c1 null F
b1 null D
a1 3
b1 5a2: 5
Domaine Development Kit
38
a1.set(5);
int a2 = a1.get();
b1.delete();
Physical StorageStorageSandbox
a1 5 W
c1 null F
b1 null D
a1 5
b1
a1 5 W
b1 null D
WriteSet sink!
Domaine Development Kit
39
a1.set(5);
int a2 = a1.get();
b1.delete();
Physical StorageStorageSandbox
a1 5 W
c1 null F
b1 null D
a1 5
a1 5 W
b1 null D
WriteSet
Domaine Development Kit
40
Yeast… Event Event Event Event Event Event Event Event …
Address Operator Data triggered time
Cell A Insert I am a boy 2015-09-07 10:57:47 KST
일반적인 Event Message
41
Event에는 변한 메모리 주소만 있을 뿐 Operator와 Data가 없다.
➡데이터 순서 역전 방지 및 최신성 문제를 해결
➡Operator는 Yeast가 직접 결정
Yeast… Event Event Event Event Event Event Event Event …
Address Operation Data triggered time
Cell A Insert I am a boy 2015-09-07 10:57:47 KST
X X X
Yeast Event
42
이전 값 현재 값 Operator
null A Insert
A B Update
B null Delete
C C NoAction
Yeast에서 관심있던 Cell에 이전 값과 현재 값을 알 수 있다.
➡Operator로 사용
Yeast Event
43
Event Cell 이전값/현재값 제공 방법
Yeast Yeast
Cell 이전 값 현재 값
A null I am a boy
Cell 이전 값 현재 값
A I am a boy You are a girl
Event A Event A
T1 T2
다음 이벤트를 위해 미리 저장!
Diff
44
3.
Domaine
Development Kit
Example
45
Example Code
46
관심있는 메모리 영역을 표시
Example Code
47
Diff를 이용한 Extactly-Once 처리
Example Code
48
Example Code
49
Result
Row Count
I 1
am 1
a 1
boy 1
Example Code
Source
Row Sentence
document1 I am a boy
50
Result
Row Count
I 1
am 1
a 2
boy 1
you 1
are 1
girl 1
Example Code
Source
Row Sentence
document1 I am a boy
document2 You are a girl
51
Source
Row Sentence
document1 I am not a girl
document2 You are a girl
Result
Row Count
I 1
am 1
a 2
boy 1
you 1
are 1
girl 1
Example Code
52
Result
Row Count
I 1 - 1
am 1 - 1
a 2 - 1
boy 1 - 1
you 1
are 1
girl 1
Example Code
Source
Row Sentence
document1 I am not a girl
document2 You are a girl
53
Result
Row Count
I 0 + 1
am 0 + 1
a 1 + 1
boy 0
you 1
are 1
girl 1 + 1
not 1
Example Code
Source
Row Sentence
document1 I am not a girl
document2 You are a girl
54
Result
Row Count
I 1
am 1
a 2
boy 0
you 1
are 1
girl 2
not 1
Example Code
Source
Row Sentence
document1 I am not a girl
document2 You are a girl
55
4.
초기 구축 배치 처리 방법
56
기존 데이터는 어떻게 처리하지?
현재 들어오는 입력은 스트림으로 처리

그러면 이전 데이터도 스트림으로?

➡스트림으로 처리하기에는 양이 너무 많다.
처리량을 높이기 위해서는 배치 처리가 필요

➡스트림 로직과 별개로 배치 로직을 작성해줘야 하나?
57
Summingbird

배치 모드와 실시간 모드에서 프로그램 수행 가능

➡ 로직을 두번 작성할 필요 없음

같은 키를 갖는 값들에 대한 monoid 연산 제공

➡검색 로직 작성이 어려운 경우가 있음
기존 데이터는 어떻게 처리하지?
https://github.com/twitter/summingbird
58
그냥 Yeast 를 배치로 처리해보면 어떨까?
➡ Yeast는 트랜잭션으로 묶여 있으니 무수히 많은 conflict가 발
생할텐데?
➡ Yeast 내에서 Storage에 대한 Random Read가 수행되는데, 

처리량이 만족스러울까?
Yeast를 배치로 처리하려면?
59
배치에서는 write-write conflict 만 체크하면 된다.
➡ 사용하는 데이터는 특정 시점의 storage snapshot 내용이기 때문에 

write한 데이터를 입력으로 사용하지 않음
➡ Yeast 결과인 write set이 같은 경우가 있는지 체크
Optimistic Concurrency Control
Yeast 배치 처리 중 Conflict 체크
60
Yeast
Yeast
Yeast
Yeast
Yeast
Interesting Table
MapTask
61
Yeast
Yeast
Yeast
Yeast
Yeast
Random Read Join
Reference Table
62
Yeast
Yeast
Yeast
Yeast
Yeast
1 (A,B,C)
2 (B,C)
3 (C,D,E)
4 (F,K)
5 (A)
WriteSet
입력 문서 1번이 cell A,B,C 에 결과 값을 썼다.
63
Yeast
Yeast
Yeast
Yeast
Yeast
1 (A,B,C)
A((1,o), (5,x))
B((1,o), (2,x))
C((1,o), (2,x),
(3,x))
D((3,o))
E((3,o))
F((4,o))
K((4,o))
2 (B,C)
3 (C,D,E)
4 (F,K)
5 (A)
S
T
E
P
1
R
E
D
U
C
E
R
같은 Cell을 쓴 문서중
하나만 성공 후보로 선정
선정된 후보는 O
실패한 문서는 X
64
Yeast
Yeast
Yeast
Yeast
Yeast
1 (A,B,C)
A((1,o), (5,x))
B((1,o), (2,x))
C((1,o), (2,x),
(3,x))
D((3,o))
E((3,o))
F((4,o))
1((A,o),(B,o),
(C,o))
2((B,x),(C,x))
3((C,x),(D,o),
(E,o))
4((F,o),(K,o))
K((4,o))
5(A,x)
2 (B,C)
3 (C,D,E)
4 (F,K)
5 (A)
S
T
E
P
2
R
E
D
U
C
E
R
65
Yeast
Yeast
Yeast
Yeast
Yeast
1 (A,B,C)
A((1,o), (5,x))
B((1,o), (2,x))
C((1,o), (2,x),
(3,x))
D((3,o))
E((3,o))
F((4,o))
1((A,o),(B,o),
(C,o))
2((B,x),(C,x))
3((C,x),(D,o),
(E,o))
4((F,o),(K,o))
K((4,o))
5(A,x)
2 (B,C)
3 (C,D,E)
4 (F,K)
5 (A)
S
T
E
P
2
R
E
D
U
C
E
R
Success
Success
66
Yeast
Yeast
Yeast
Yeast
Yeast
B((1,o))
C((2,o), (3,x))
D((3,o))
E((3,o))
2((B,o),(C,o))
3((C,x),(D,o),
(E,o))
A((5,o))
5((A,o))
1 (A,B,C)
2 (B,C)
3 (C,D,E)
4 (F,K)
5 (A)
Success
Success
실패한 작업은 이 과정을 반복해서 수행하고,
실패 작업이 스트림 처리가 가능한 수준이면,
배치 처리는 종료
67
처리량을 늘리기 위해 Random Read를 최소화 해야 함
➡ 사용할 데이터를 scan해서 미리 메모리에 저장
(Prefetch)
Yeast 배치 처리 성능 최적화
68
스트림 처리에서의 Random Read
Physical StorageStorageSandbox
Yeast Layer DDK Layer Storage Layer
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
69
Physical StorageStorageSandbox
i T1 F
Yeast Layer DDK Layer Storage Layer
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
스트림 처리에서의 Random Read
Random

Read
70
Physical StorageStorageSandbox
i T1 F
g1 1 F
Yeast Layer DDK Layer Storage Layer
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
스트림 처리에서의 Random Read
Random

Read
71
Physical StorageStorageSandbox
i T1 F
g1 1 F
g2 B2 F
Yeast Layer DDK Layer Storage Layer
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
스트림 처리에서의 Random Read
Random

Read
72
Physical StorageStorageSandbox
i T1 F
g1 1 F
g2 B2 F
Yeast Layer DDK Layer Storage Layer
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
배치 처리의 Prefetch
Yeast 로직 수행 전에 데이터를 미리 메모리에 저장한다.
Scan
73
Physical StorageStorageSandbox
i T1 F
g1 1 F
g2 B2 F
r Spam F
Yeast Layer
DDK Layer Storage Layer
Cell i = t1.r2.f3.q4
i.getString();
Cell g1 = t1.r2.f3.q3
g1.getInt();
Cell g2 = t1.r2.f4.q4
g2.getBytes();
Cell r = rt2.r6.rf1.q1
r.getString();
배치 처리의 Prefetch
t1 f3 f4
row⑊cq q3 q4 q3 q4
r1
r2 1 T1 B2
f3
rt2 rf1 rf2
row⑊cq q1 q2 q1 q2
r5
r6 Spam
Scan
74
5.
Stack Overview
75
Domaine Architecture
Stack Overview - 스트림 처리
Domaine Development Kit
HBase Storm Cana Kafka
Storage Process Transaction Queue
Yeast Yeast Yeast Yeast Yeast
Yeast Yeast Yeast Yeast Yeast
…
…
…
지식iN domaine
카페 domaine
76
Domaine Architecture
Stack Overview - 배치 처리
Domaine Development Kit
HBase Spark
Storage Process
Yeast Yeast Yeast Yeast Yeast
Yeast Yeast Yeast Yeast Yeast
…
…
…
지식iN domaine
카페 domaine
77
Domaine Architecture
Stack Overview - 디버깅  테스트
Domaine Development Kit
PseudoLocalCluster
Storage  Transaction  Process  Queue
Yeast Yeast Yeast Yeast Yeast
Yeast Yeast Yeast Yeast Yeast
…
…
…
지식iN domaine
카페 domaine
78
Domaine Architecture
Stack Overview - 대체가능 솔루션
Domaine Development Kit
MySQL Cluster Spark Stream Kestrel?
Storage  Transaction Process Queue
Yeast Yeast Yeast Yeast Yeast
Yeast Yeast Yeast Yeast Yeast
…
…
…
지식iN domaine
카페 domaine
79
6.
분산 환경 구성
80
증분 시스템의 Storage 내용은 언제나 변하고 있음
➡ 주기적인 check point 관리가 중요
• Event queue offset = Kafka
• Storage snapshot = HBase
분산 환경 구성
81
데이터 오염이 발생한 경우
➡ 오염 시점을 알면, Check point부터 스트림으로 재처리
➡ 시점을 알지 못하면, 초기 구축 배치 처리
분산 환경 구성 - Check point
82
클러스터 관리 도구
➡ Ambari
➡ 필요 서비스 추가 및 

stack 구성
분산 환경 구성
83
성능 지표 모니터링과 로그 검색
➡ 로그 검색 : 데이터 흐름 파악 용도
➡ 자체 모니터링 시스템 구축(Ganglia와 유사)
➡ Fluentd, ElasticSearch, Kibana
분산 환경 구성
84
시스템 상황에 대한 알람
➡ 알람을 위한 지표 저장 = ElasticSearch
➡ 알람 전달 =ElastAlert
분산 환경 구성
85
분산 환경 구성
fluentd
Collector
장비
fluentd
Collector
장비
fluentd
Collector
장비
fluentd
Collector
장비
Metrics 저장소 Elasticsearch
Metrics 뷰어 Kibana ElasticAlert
Metrics 로그
Metrics
86
7.
적용 사례
87
증분 시스템 적용 후 변화
네이버 K 서비스
Timewise Staged
배치 시스템
증분 시스템
일주일 간 처리 문서 비율 100%(All Stages) 20.552%
갱신 시간
문서 갱신 최대 수 분(Stage3)
최대 수 초
평균 55.198ms
사용자 정보 갱신
최소 수분(Stage3)
~ 최대 수일(Stage1)
데이터 입수 즉시
88
증분 시스템이 만능은 아니다.
➡ 주어진 문제를 어떻게 해결하는 게 좋을지 고민이 필요
이제 시작일 뿐...
마무리
89

Contenu connexe

Tendances

[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼NAVER D2
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
what is_tabs_share
what is_tabs_sharewhat is_tabs_share
what is_tabs_shareNAVER D2
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스NAVER D2
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템NAVER D2
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자NAVER D2
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint NAVER D2
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례NAVER D2
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화NAVER D2
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민NAVER D2
 
[164] pinpoint
[164] pinpoint[164] pinpoint
[164] pinpointNAVER D2
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 

Tendances (20)

[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
what is_tabs_share
what is_tabs_sharewhat is_tabs_share
what is_tabs_share
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민
 
[164] pinpoint
[164] pinpoint[164] pinpoint
[164] pinpoint
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 

En vedette

[243] turning data into value
[243] turning data into value[243] turning data into value
[243] turning data into valueNAVER D2
 
[242] wifi를 이용한 실내 장소 인식하기
[242] wifi를 이용한 실내 장소 인식하기[242] wifi를 이용한 실내 장소 인식하기
[242] wifi를 이용한 실내 장소 인식하기NAVER D2
 
[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝NAVER D2
 
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현NAVER D2
 
[223] h base consistent secondary indexing
[223] h base consistent secondary indexing[223] h base consistent secondary indexing
[223] h base consistent secondary indexingNAVER D2
 
[231] the simplicity of cluster apps with circuit
[231] the simplicity of cluster apps with circuit[231] the simplicity of cluster apps with circuit
[231] the simplicity of cluster apps with circuitNAVER D2
 
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기NAVER D2
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 
[263] s2graph large-scale-graph-database-with-hbase-2
[263] s2graph large-scale-graph-database-with-hbase-2[263] s2graph large-scale-graph-database-with-hbase-2
[263] s2graph large-scale-graph-database-with-hbase-2NAVER D2
 
[253] apache ni fi
[253] apache ni fi[253] apache ni fi
[253] apache ni fiNAVER D2
 
[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtosNAVER D2
 
[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼NAVER D2
 
[212] large scale backend service develpment
[212] large scale backend service develpment[212] large scale backend service develpment
[212] large scale backend service develpmentNAVER D2
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기NAVER D2
 
[214] data science with apache zeppelin
[214] data science with apache zeppelin[214] data science with apache zeppelin
[214] data science with apache zeppelinNAVER D2
 
[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법NAVER D2
 
[213] ethereum
[213] ethereum[213] ethereum
[213] ethereumNAVER D2
 
[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnnNAVER D2
 
[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_sparkNAVER D2
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 

En vedette (20)

[243] turning data into value
[243] turning data into value[243] turning data into value
[243] turning data into value
 
[242] wifi를 이용한 실내 장소 인식하기
[242] wifi를 이용한 실내 장소 인식하기[242] wifi를 이용한 실내 장소 인식하기
[242] wifi를 이용한 실내 장소 인식하기
 
[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝
 
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현
[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현
 
[223] h base consistent secondary indexing
[223] h base consistent secondary indexing[223] h base consistent secondary indexing
[223] h base consistent secondary indexing
 
[231] the simplicity of cluster apps with circuit
[231] the simplicity of cluster apps with circuit[231] the simplicity of cluster apps with circuit
[231] the simplicity of cluster apps with circuit
 
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기
[234] 산업 현장을 위한 증강 현실 기기 daqri helmet 개발기
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 
[263] s2graph large-scale-graph-database-with-hbase-2
[263] s2graph large-scale-graph-database-with-hbase-2[263] s2graph large-scale-graph-database-with-hbase-2
[263] s2graph large-scale-graph-database-with-hbase-2
 
[253] apache ni fi
[253] apache ni fi[253] apache ni fi
[253] apache ni fi
 
[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos
 
[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼
 
[212] large scale backend service develpment
[212] large scale backend service develpment[212] large scale backend service develpment
[212] large scale backend service develpment
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
[214] data science with apache zeppelin
[214] data science with apache zeppelin[214] data science with apache zeppelin
[214] data science with apache zeppelin
 
[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법
 
[213] ethereum
[213] ethereum[213] ethereum
[213] ethereum
 
[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn
 
[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 

Similaire à [244] 분산 환경에서 스트림과 배치 처리 통합 모델

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기Wonha Ryu
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권freeNAVER D2
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptxYeongKiKim1
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화sung ki choi
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2도현 김
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
if kakao dev 2019_Ground X_Session 04
if kakao dev 2019_Ground X_Session 04if kakao dev 2019_Ground X_Session 04
if kakao dev 2019_Ground X_Session 04Klaytn
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)WON JOON YOO
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 

Similaire à [244] 분산 환경에서 스트림과 배치 처리 통합 모델 (20)

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
 
Thread programming
Thread programmingThread programming
Thread programming
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
if kakao dev 2019_Ground X_Session 04
if kakao dev 2019_Ground X_Session 04if kakao dev 2019_Ground X_Session 04
if kakao dev 2019_Ground X_Session 04
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 

Plus de NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Plus de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[244] 분산 환경에서 스트림과 배치 처리 통합 모델

  • 1. 분산 환경에서 스트림과 배치 처리 통합 모델 정재부 이도경 네이버 검색정제개발랩
  • 2. contents 1. 배치 처리 vs. 스트림 처리 2. Domaine Architecture 3. Domaine Development Kit Example 4. 초기 구축 배치 처리 방법 5. Stack Overview 6. 분산 환경 구성 7. 정리 8. QnA 2
  • 3. 1. 배치 처리 vs. 스트림 처리 3
  • 4. 배치 처리(Batch Processing) 배치 처리 vs. 스트림 처리 4
  • 5. 배치 처리(Batch Processing) 배치 처리 vs. 스트림 처리 Hadoop Mapreduce, Spark… 5
  • 6. 스트림 처리(Stream Processing) 배치 처리 vs. 스트림 처리 6
  • 7. 스트림 처리(Stream Processing) 배치 처리 vs. 스트림 처리 Storm, Flink, Samza… 7
  • 8. 배치 처리 vs. 스트림 처리 High Throughput vs. Low Latency 8
  • 9. 배치 처리 vs. 스트림 처리 Throughput Latency 트레이드오프 9
  • 10. 검색 문서 정제란? 정규화된 데이터를 검색에 적합한 형태로 가공하는 작업 질문 답변1 답변2 질문DB 답변DB 사용자DB 번호:233482408 카테고리:게임 질문자:a**** 질문자등급:평민 질문:목욕 여신 코니 쓸만한가요? 내용:라인레인저스 하고 있는데요... 답변자1:b**** 답변자1등급:영웅 답변1:신규 캐릭치곤 별로예요. 답변자2:c**** 답변자2등급:수호신 답변2:최곱니다. … Search Document 검색 문서 정제 10
  • 11. 1. 많은 검색 대상 문서 처리가 가능해야함(High Throughput) 2. 최신 문서를 빠르게 검색에 노출(Low Latency) 3. 서비스별 비지니스 로직 적용 요구 사항 검색 문서 정제란? 11
  • 12. Lambda Architecture 스트림과 배치 처리 통합 모델 사례 http://lambda-architecture.net/ 12
  • 13. 예) Stage1은 1주일마다, Stage2는 1일마다, Stage3는 1시간마다, Stage4는 1분마다 Timewise Staged 배치 시스템 기존 검색 문서 정제 방식 Stage1 Weekly Stage2 Daily Stage3 Hourly Stage4 Minutely 13
  • 14. Timewise Staged 배치 시스템 기존 검색 문서 정제 방식 Stage1 Weekly Stage2 Daily Stage3 Hourly Stage4 Minutely Stage3 Stage2 Stage1 14
  • 15. 1. 배치 처리만으로 Low Latency 만족 가능 ➡Latency 요구 사항을 만족하지못하면 Stage를 추가하면 된다. 2. 정제 로직 변경이 단순 ➡모든 데이터는 결국 다시 처리 Timewise Staged 배치 시스템의 장점 15
  • 16. 1. Stage간에 부정확성이 발생 ➡상위 Stage가 재수행되면 해결 2. 주기적인 전체 데이터 재처리 수행 변경되지 않은 99억999만건 변경되거나
  • 18.  1만건 Stage1이 매번 처리해야할 문서량 Timewise Staged 배치 시스템의 단점 16
  • 19. 증분 시스템(Incremental System)을 만들자. 네이버의 검색 증분화 프로젝트(BREW Project) ➡2015년 상반기 첫 검색 서비스 적용 어떻게하면 전체 재처리를 피할까? 17
  • 20. 1. Random Read/Write Storage 2. Transaction 3. Stream(Event-driven) Processing 증분 시스템을 만들려면? 18
  • 21. 장점 ➡주기적인 전체 재처리 X ➡Low Latency 증분 시스템의 특징 19
  • 22. 단점 ➡Persistent Storage Maintenance Hell ➡배치 처리 로직과 스트림 처리 로직의 통합은 아직... 증분 시스템의 특징 20
  • 24. 1. 너무 많은 솔루션(필요한데...) 2. 너무 많은 서비스(적용하기엔...) 결국 Abstraction이 답! ➡Programming Model Abstraction 정제 로직에만 집중할 수 없을까? 22
  • 26. 주요 특징 Transaction, Data Load/Sink Code 숨기기 Event: No Data, No action Diff: previous/current value 제공 Domaine Architecture 24
  • 27. Unlimited Memory Space 공간 제약이 없는 메모리가 있고 Domaine Architecture 25
  • 28. Unlimited Memory Space 메모리상의 어떤 Cell의 값이 변하면 Domaine Architecture 26
  • 29. Unlimited Memory Space 그 Cell에 관심이 있던 Yeast가 실행된다. Yeast Domaine Architecture 27
  • 30. Unlimited Memory Space Yeast는 Process Unit이고 실행되면 로직에 따라 필요한 값을 읽어서 Yeast Domaine Architecture 28
  • 31. Unlimited Memory Space Yeast Domaine Architecture 결과를 메모리에 반영한다. 29
  • 32. Unlimited Memory Space 새로 반영된 값에 관심이 있는 다른 Yeast가 있으면 해당 Yeast가 실행된다. Yeast Yeast Domaine Architecture 30
  • 33. Unlimited Memory Space Yeast 하나가 실행되는 동안에는 논리적으로 전체 메모리를 혼자서만 바꿀수 있다. Yeast Yeast Domaine Architecture 31
  • 34. Unlimited Memory Space Domaine Yeast A Yeast B Yeast C Yeast D Yeast와 메모리는 Domaine이라는 영역(Scope)으로 한정 같은 Domaine내 메모리는 R/W가 가능, 다른 Domaine은 R만 가능 Domaine Architecture Yeast …Yeast Yeast Yeast Yeast X O W R 32
  • 35. Domaine Architecture 오직 메모리에서 읽어서 처리후 다시 메모리에 쓴다. Software Transactional Memory와 유사 int a = c1.getInt(0); c1.set(a + 1); Cell c1 = domaine.table(“t1”).row(“r2”).family(“f3”).qualifier(“q4”); t1 f3 f4 row⑊cq q3 q4 q5 q6 r1 r2 f3 33
  • 36. Domaine Development Kit int a = a1.getInt(0); Physical StorageStorageSandbox a1 a1 3 b1 5 miss! Yeast Layer DDK Layer Storage Layer 34
  • 37. int a = a1.getInt(0); Physical StorageStorageSandbox a1 3 F a1 3 b1 5 fetch!a : 3 Domaine Development Kit 35
  • 38. int a = a1.getInt(0); int b = a1.getInt(1); Physical StorageStorageSandbox a1 3 F a1 3 b1 5 b : 3 Domaine Development Kit 36
  • 39. int a = a1.getInt(0); int b = a1.getInt(1); int c = c1.getString(“c”); Physical StorageStorageSandbox a1 3 F c1 null F a1 3 b1 5 miss! miss! c: “c” Domaine Development Kit 37
  • 40. a1.set(5); int a2 = a1.get(); b1.delete(); Physical StorageStorageSandbox a1 5 W c1 null F b1 null D a1 3 b1 5a2: 5 Domaine Development Kit 38
  • 41. a1.set(5); int a2 = a1.get(); b1.delete(); Physical StorageStorageSandbox a1 5 W c1 null F b1 null D a1 5 b1 a1 5 W b1 null D WriteSet sink! Domaine Development Kit 39
  • 42. a1.set(5); int a2 = a1.get(); b1.delete(); Physical StorageStorageSandbox a1 5 W c1 null F b1 null D a1 5 a1 5 W b1 null D WriteSet Domaine Development Kit 40
  • 43. Yeast… Event Event Event Event Event Event Event Event … Address Operator Data triggered time Cell A Insert I am a boy 2015-09-07 10:57:47 KST 일반적인 Event Message 41
  • 44. Event에는 변한 메모리 주소만 있을 뿐 Operator와 Data가 없다. ➡데이터 순서 역전 방지 및 최신성 문제를 해결 ➡Operator는 Yeast가 직접 결정 Yeast… Event Event Event Event Event Event Event Event … Address Operation Data triggered time Cell A Insert I am a boy 2015-09-07 10:57:47 KST X X X Yeast Event 42
  • 45. 이전 값 현재 값 Operator null A Insert A B Update B null Delete C C NoAction Yeast에서 관심있던 Cell에 이전 값과 현재 값을 알 수 있다. ➡Operator로 사용 Yeast Event 43
  • 46. Event Cell 이전값/현재값 제공 방법 Yeast Yeast Cell 이전 값 현재 값 A null I am a boy Cell 이전 값 현재 값 A I am a boy You are a girl Event A Event A T1 T2 다음 이벤트를 위해 미리 저장! Diff 44
  • 49. 관심있는 메모리 영역을 표시 Example Code 47
  • 50. Diff를 이용한 Extactly-Once 처리 Example Code 48
  • 52. Result Row Count I 1 am 1 a 1 boy 1 Example Code Source Row Sentence document1 I am a boy 50
  • 53. Result Row Count I 1 am 1 a 2 boy 1 you 1 are 1 girl 1 Example Code Source Row Sentence document1 I am a boy document2 You are a girl 51
  • 54. Source Row Sentence document1 I am not a girl document2 You are a girl Result Row Count I 1 am 1 a 2 boy 1 you 1 are 1 girl 1 Example Code 52
  • 55. Result Row Count I 1 - 1 am 1 - 1 a 2 - 1 boy 1 - 1 you 1 are 1 girl 1 Example Code Source Row Sentence document1 I am not a girl document2 You are a girl 53
  • 56. Result Row Count I 0 + 1 am 0 + 1 a 1 + 1 boy 0 you 1 are 1 girl 1 + 1 not 1 Example Code Source Row Sentence document1 I am not a girl document2 You are a girl 54
  • 57. Result Row Count I 1 am 1 a 2 boy 0 you 1 are 1 girl 2 not 1 Example Code Source Row Sentence document1 I am not a girl document2 You are a girl 55
  • 58. 4. 초기 구축 배치 처리 방법 56
  • 59. 기존 데이터는 어떻게 처리하지? 현재 들어오는 입력은 스트림으로 처리 그러면 이전 데이터도 스트림으로? ➡스트림으로 처리하기에는 양이 너무 많다. 처리량을 높이기 위해서는 배치 처리가 필요 ➡스트림 로직과 별개로 배치 로직을 작성해줘야 하나? 57
  • 60. Summingbird 배치 모드와 실시간 모드에서 프로그램 수행 가능 ➡ 로직을 두번 작성할 필요 없음 같은 키를 갖는 값들에 대한 monoid 연산 제공 ➡검색 로직 작성이 어려운 경우가 있음 기존 데이터는 어떻게 처리하지? https://github.com/twitter/summingbird 58
  • 61. 그냥 Yeast 를 배치로 처리해보면 어떨까? ➡ Yeast는 트랜잭션으로 묶여 있으니 무수히 많은 conflict가 발 생할텐데? ➡ Yeast 내에서 Storage에 대한 Random Read가 수행되는데, 
 처리량이 만족스러울까? Yeast를 배치로 처리하려면? 59
  • 62. 배치에서는 write-write conflict 만 체크하면 된다. ➡ 사용하는 데이터는 특정 시점의 storage snapshot 내용이기 때문에 
 write한 데이터를 입력으로 사용하지 않음 ➡ Yeast 결과인 write set이 같은 경우가 있는지 체크 Optimistic Concurrency Control Yeast 배치 처리 중 Conflict 체크 60
  • 65. Yeast Yeast Yeast Yeast Yeast 1 (A,B,C) 2 (B,C) 3 (C,D,E) 4 (F,K) 5 (A) WriteSet 입력 문서 1번이 cell A,B,C 에 결과 값을 썼다. 63
  • 66. Yeast Yeast Yeast Yeast Yeast 1 (A,B,C) A((1,o), (5,x)) B((1,o), (2,x)) C((1,o), (2,x), (3,x)) D((3,o)) E((3,o)) F((4,o)) K((4,o)) 2 (B,C) 3 (C,D,E) 4 (F,K) 5 (A) S T E P 1 R E D U C E R 같은 Cell을 쓴 문서중 하나만 성공 후보로 선정 선정된 후보는 O 실패한 문서는 X 64
  • 67. Yeast Yeast Yeast Yeast Yeast 1 (A,B,C) A((1,o), (5,x)) B((1,o), (2,x)) C((1,o), (2,x), (3,x)) D((3,o)) E((3,o)) F((4,o)) 1((A,o),(B,o), (C,o)) 2((B,x),(C,x)) 3((C,x),(D,o), (E,o)) 4((F,o),(K,o)) K((4,o)) 5(A,x) 2 (B,C) 3 (C,D,E) 4 (F,K) 5 (A) S T E P 2 R E D U C E R 65
  • 68. Yeast Yeast Yeast Yeast Yeast 1 (A,B,C) A((1,o), (5,x)) B((1,o), (2,x)) C((1,o), (2,x), (3,x)) D((3,o)) E((3,o)) F((4,o)) 1((A,o),(B,o), (C,o)) 2((B,x),(C,x)) 3((C,x),(D,o), (E,o)) 4((F,o),(K,o)) K((4,o)) 5(A,x) 2 (B,C) 3 (C,D,E) 4 (F,K) 5 (A) S T E P 2 R E D U C E R Success Success 66
  • 69. Yeast Yeast Yeast Yeast Yeast B((1,o)) C((2,o), (3,x)) D((3,o)) E((3,o)) 2((B,o),(C,o)) 3((C,x),(D,o), (E,o)) A((5,o)) 5((A,o)) 1 (A,B,C) 2 (B,C) 3 (C,D,E) 4 (F,K) 5 (A) Success Success 실패한 작업은 이 과정을 반복해서 수행하고, 실패 작업이 스트림 처리가 가능한 수준이면, 배치 처리는 종료 67
  • 70. 처리량을 늘리기 위해 Random Read를 최소화 해야 함 ➡ 사용할 데이터를 scan해서 미리 메모리에 저장 (Prefetch) Yeast 배치 처리 성능 최적화 68
  • 71. 스트림 처리에서의 Random Read Physical StorageStorageSandbox Yeast Layer DDK Layer Storage Layer t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); 69
  • 72. Physical StorageStorageSandbox i T1 F Yeast Layer DDK Layer Storage Layer t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); 스트림 처리에서의 Random Read Random Read 70
  • 73. Physical StorageStorageSandbox i T1 F g1 1 F Yeast Layer DDK Layer Storage Layer t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); 스트림 처리에서의 Random Read Random Read 71
  • 74. Physical StorageStorageSandbox i T1 F g1 1 F g2 B2 F Yeast Layer DDK Layer Storage Layer t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); 스트림 처리에서의 Random Read Random Read 72
  • 75. Physical StorageStorageSandbox i T1 F g1 1 F g2 B2 F Yeast Layer DDK Layer Storage Layer t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); 배치 처리의 Prefetch Yeast 로직 수행 전에 데이터를 미리 메모리에 저장한다. Scan 73
  • 76. Physical StorageStorageSandbox i T1 F g1 1 F g2 B2 F r Spam F Yeast Layer DDK Layer Storage Layer Cell i = t1.r2.f3.q4 i.getString(); Cell g1 = t1.r2.f3.q3 g1.getInt(); Cell g2 = t1.r2.f4.q4 g2.getBytes(); Cell r = rt2.r6.rf1.q1 r.getString(); 배치 처리의 Prefetch t1 f3 f4 row⑊cq q3 q4 q3 q4 r1 r2 1 T1 B2 f3 rt2 rf1 rf2 row⑊cq q1 q2 q1 q2 r5 r6 Spam Scan 74
  • 78. Domaine Architecture Stack Overview - 스트림 처리 Domaine Development Kit HBase Storm Cana Kafka Storage Process Transaction Queue Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast … … … 지식iN domaine 카페 domaine 76
  • 79. Domaine Architecture Stack Overview - 배치 처리 Domaine Development Kit HBase Spark Storage Process Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast … … … 지식iN domaine 카페 domaine 77
  • 80. Domaine Architecture Stack Overview - 디버깅 테스트 Domaine Development Kit PseudoLocalCluster Storage Transaction Process Queue Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast … … … 지식iN domaine 카페 domaine 78
  • 81. Domaine Architecture Stack Overview - 대체가능 솔루션 Domaine Development Kit MySQL Cluster Spark Stream Kestrel? Storage Transaction Process Queue Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast Yeast … … … 지식iN domaine 카페 domaine 79
  • 83. 증분 시스템의 Storage 내용은 언제나 변하고 있음 ➡ 주기적인 check point 관리가 중요 • Event queue offset = Kafka • Storage snapshot = HBase 분산 환경 구성 81
  • 84. 데이터 오염이 발생한 경우 ➡ 오염 시점을 알면, Check point부터 스트림으로 재처리 ➡ 시점을 알지 못하면, 초기 구축 배치 처리 분산 환경 구성 - Check point 82
  • 85. 클러스터 관리 도구 ➡ Ambari ➡ 필요 서비스 추가 및 
 stack 구성 분산 환경 구성 83
  • 86. 성능 지표 모니터링과 로그 검색 ➡ 로그 검색 : 데이터 흐름 파악 용도 ➡ 자체 모니터링 시스템 구축(Ganglia와 유사) ➡ Fluentd, ElasticSearch, Kibana 분산 환경 구성 84
  • 87. 시스템 상황에 대한 알람 ➡ 알람을 위한 지표 저장 = ElasticSearch ➡ 알람 전달 =ElastAlert 분산 환경 구성 85
  • 88. 분산 환경 구성 fluentd Collector 장비 fluentd Collector 장비 fluentd Collector 장비 fluentd Collector 장비 Metrics 저장소 Elasticsearch Metrics 뷰어 Kibana ElasticAlert Metrics 로그 Metrics 86
  • 90. 증분 시스템 적용 후 변화 네이버 K 서비스 Timewise Staged 배치 시스템 증분 시스템 일주일 간 처리 문서 비율 100%(All Stages) 20.552% 갱신 시간 문서 갱신 최대 수 분(Stage3) 최대 수 초 평균 55.198ms 사용자 정보 갱신 최소 수분(Stage3) ~ 최대 수일(Stage1) 데이터 입수 즉시 88
  • 91. 증분 시스템이 만능은 아니다. ➡ 주어진 문제를 어떻게 해결하는 게 좋을지 고민이 필요 이제 시작일 뿐... 마무리 89
  • 92. QA