workflow 기반 실시간 스트리밍 데이터 수집 분석...

75
Workflow 기반 실시간 스트리밍 데이터 수집/분석 플랫폼 2013.11.6 최규민

Upload: others

Post on 13-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Workflow 기반

실시간 스트리밍 데이터 수집/분석 플랫폼

2013.11.6 최규민

Page 2: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

About Us

아프리카TV(2012~)- 실시간 대용량 데이터처리시스템 개발을 위한 데이터수집 / 데이터 마이닝 / 대용량 메시징 시스템 설계 및 개발업무를 담당

플러스기술(2004~) - 대용량의 네트워크 트래픽 수집 및 분석/분류 시스템 개발

시앤시인스트루먼(1999~) – LAN/WLAN 프로토콜 분석 시스템 개발

[email protected] or [email protected]

Page 3: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Word Cloud

Page 4: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

발표의 순서

구현 기술 소개

20%

10%

70%

Page 5: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Workflow 기반 실시간 스트리밍

데이터 수집/분석 이란?

Page 6: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

설문조사를 하겠습니다.

1. 각자 스마트 꺼내 주세요. 2. 아래 접속해 주세요 왜 해야 하는지 모르시겠다구요?

http://p2013.afreeca.com

Page 7: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

5. 경품이 있습니다.

http://p2013.afreeca.com

최고급 모자

Page 8: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

4명에게 드립니다.

각 투표자 별로 당첨자가 있습니다.

http://p2013.afreeca.com

Page 9: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

투표를 시작해 주세요

http://p2013.afreeca.com

Page 10: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

어떻게 구현 되었을까요?

Page 11: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

투표 데이터 수집

데이터 처리

서비스 제공

http://collector.afreecatv.com/push_api.php? ns=vote.rawdata & id=1 & subject=vote & vote=1 & ip=127.0.0.1 & ua=ie23

1. 데이터를 저장하고 2. 투표를 집계하고 3. 경품 당첨자인지 확인하고 4. 기타 내역을 분석해서 5. 출력할 데이터를 전달합니다.

Long-polling으로 데이터 즉시 반영합니다.

Page 12: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

사용자가 적으면?

Page 13: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

사용자가 많으면? 대량의 데이터 수집 / 실시간 데이터 처리 / 분산 환경

Page 14: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

source: http://citizentekk.com/2013/10/09/facebook-vs-twitter-real-time-analytics

FaceBook

Twitter

전달 적재

배치

실시간

수집

Page 15: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

아프리카TV는 왜?

Page 16: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

방송생성 : 10만건/일

방문자수: 300만/일

방송 시청(입장/퇴장) : 4000만/일

유저 활동(좋아요,아이템,즐겨찾기 등) : ?? / day

방송 채팅 : 아주 많아요~~~

우선 데이터가 많아서 필요합니다.

Page 17: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Live 방송 추천

실시간 방송 랭킹

실시간 모바일 Push

방송할 때 할 일도 많아요

방송 상세 분석

방송 완료 후 아카이브

Page 18: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

이런 일을 할려면??

안정성

확장성

범용성

Failover coordinator

Scale-out Load-balancing

Workflow 기반 데이터 처리 c/c++,java,php client language

Page 19: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

1차 시스템 설계 : 알고 있는 시스템으로 조합해 보자

Page 20: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

1차 개발 시스템 구성도

HOST1

Log-Agent : mysql pcap

ap1

Scrib

e

netw

ork

HOST2

HOST3

HOST4

HOST5

Flow-Agentⓕ

af1

Scrib

e

Sin

k

API 지원데몬?

Collectorⓕ

c1

Colle

ctor

MQ

Collectorⓕ

c2

Colle

ctor

MQ

Collectorⓕ

c3

Colle

ctor

MQ

MQ-Broker

HOST6

Flow-Agentⓕ

af3

Sin

k

API 지원데몬 : Access-log를

통한 수집

exe

c

클러

스터

Job ⓕ

job1

exe

c

RM

Q-S

ink

Namespace ‘A’ 요청

메시지

A

처리 결과, 에러

job2

B

Namespace ‘B’ 요청

FO : 지원 LB : 미지원

Failover 시 메시지 Loss발생 (초당 100건 전송시

3건 정도)

FO

: 미지원

(reco

nnect로

구현

) LB : 미

지원

FO : 미지원(reconnect로구현)

LB : 미지원

MQ-Broker는 Routing방식으로 설정

Page 21: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

2차 개발 설계 중복제거 : Flume ≒ scribe ≒ MQ

그래서 MQ

Page 22: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

host1

Log-Agent : mysql pcap

ap1

MQ

-sink

new

ork

host2

Svlxextr3

Svlxextr4

MQ-Broker `

host3

Log-Agent

af3

MQ

-sink

exe

c

클러스터링

job1

exe

c

RM

Q-S

ink

Namespace ‘A’ 요청

메시지

A

처리 결과, 에러

job2

B

Namespace ‘B’ 요청

FO : 미지원(reconnect로구현) LB : 미지원

FO : 미지원(reconnect로구현)

LB : 미지원

음 조끔 심플해 졌네~~

Page 23: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

3차 개발 설계 Failover/LB는 어떻게?

기존 서비스 = L4/DNS 신규 개발 부분 = zookeeper+workflow-lib

Page 24: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Agent-Tier

서비스 적용 (Collector-API)

Collect-Tier Workflow-Tier

PcapStreamer (Network packet)

ExeStreamer (tail-f등)

ActiveMQ-Cluster

L4

NGINX / UDP

Broker

NGINX / UDP

Broker

NGINX / UDP

Broker

MQB

Failo

ver

Observer Observer Observer

Coordinator : zookeeper (Failover, Datapipeline, Sharding)

서비스 적용 (UDP-socket)

MySQL-UDF (Trigger 등록)

Z

File-append

Workflow-Lib (c/c++, java, php)

AMQ Connector

Failover, LB (collector-Tier)

Coordinator연동

Status-Update

L4/DNS + Zookeeper/Workflow-Lib

Page 25: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

실제 개발해보니

Page 26: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Collect-Tier

Agent-Tier

Workflow1 In: que1 Out:que2

Que1

Zookeeper

ZK 등

ZK 등

Workflow2 In: que2 Out:- Que2

큰그림

①전송

②전달

③수신

④전송

⑤전달 ⑥수신

Agent-Tier Agent-Tier

Page 27: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

좀더 상세히 알아 봅시다.

데이터 수집 [Agent-Tier]

데이터 전달 [Collect-Tier]

데이터 처리 [Workflow-

Tier]

Page 28: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

데이터 수집 [Agent-Tier]

데이터 수집 [Collect-Tier]

Page 29: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

데이터 수집 [Agent-Tier]

데이터 포멧?

연동 방식 ?

추가 개발?

개발 기간?

서비스 영향?

환경이 틀림?

Page 30: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

저희의 선택은 데이터에 맞추어 수집 방식을 선택하자

Page 31: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

다양한 구간에서 데이터 수집

L4 WebServer

Access-log

DBMS

변경된 내역

Collector-Tier

Network Packet

PcapStreamer

Exestreamer (tail )

Collector API

UDP JDBC

MySQL-UDF

Collector API

Exestreamer (tail )

데이터

위변조

∙Raw

Pack

et

추출

데이터

유실가능

서비스

영향Ⅹ

서비스

변경Ⅹ

데이터 유실가능

서비스 영향Ⅹ

Traffic Mirroring

Page 32: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

다양한 구간에서 데이터 수집

L4 WebServer

Access-log

DBMS

변경된 내역

Collector-Tier

Network Packet

PcapStreamer

Exestreamer (tail )

Collector API

UDP JDBC

MySQL-UDF

Collector API

Exestreamer (tail )

데이터

위변조

∙Raw

Pack

et

추출

데이터

유실가능

서비스

영향Ⅹ

서비스

변경Ⅹ

데이터 유실가능

서비스 영향Ⅹ

Traffic Mirroring

다양한 방식을 통해 적절한 방법 선택

Page 33: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Collector-API

지금까지 해 온대로 만드시면 됩니다.

Page 34: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

UDP-Socket 방식

서비스 영향Ⅹ 연결 비용 ↓ 성능↑

100% 수신Ⅹ 데이터 재조합

시리얼라이제이션

MTU=1500

Page 35: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

네트워크 패킷 수집 방식(Pcapstreamer)

인터넷

Client-PC

L4

Packet Mirroring

Afreeca WebServers

pcapstreamer#1

pcapstreamer#N

서비스 영향Ⅹ Agent설치 Ⅹ 서비스 변경 Ⅹ

데이터 유실가능 Raw Packet

미러 환경구성

Libpcap, winpcap

Page 36: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

MySQL UDF(FileWritter)

DB DB [Trigger등록]

Rep.

File-append

tail

변경내역 file

Exestreamer

Collector

AMQ

Agent설치 Ⅹ 서비스 변경 Ⅹ

Table 의존성

Page 37: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

AfreecaTV에서 이렇게 수집해요

• MySQL-UDF : 방송시작, 종료 등 DB데이터

• Collector-API : 별풍선, 추천, 로그인 등 서비스 API

• UDP-socket : 방송시청 시작/종료, 채팅 등 대량 전송

• PcapStreamer : 검색어 관련 등 네트워크 패킷수집

Page 38: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

데이터 전달 [Collect-Tier]

데이터 수집 [Agent-Tier]

데이터 처리 [Workflow-Tier]

Page 39: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Message Queue Architecture 적용

Source=https://confluence.pegasus.isi.edu/display/stampede/Message+Queue+Architecture

Page 40: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

투표

실시간 처리

5초 Term 처리

결과 출력

HDFS저장

“닮은꼴 설문조사” Message Queue 적용

vote.rt.log

vote.rt.rank

vote.rt.match

vote.rawdata

vote.term.5sec

Page 41: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

투표

실시간 처리

5초 Term 처리

결과 출력

HDFS저장 1시간

Term 처리

vote.rt.log

vote.rt.rank

vote.rt.match

vote.rawdata

vote.term.5sec

vote.term.1hour

“닮은꼴 설문조사” Message Queue 적용

Page 42: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Message Queue 선택

1. Queue / Topic 지원 2. Dynamic한 데이터 파이프의 추가/변경/삭제 3. 다양한 client language지원(c/c++, java, php) 4. Broker 클러스터 지원 (complete graph network topology) 5. 중단 없는 클러스터 확장

Page 43: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ에 대하여 좀더 알아 봅시다.

-

2,000

4,000

6,000

8,000

10,000

12,000

110 1k 10k 100k 1M

ActiveMQ

전송 시간(초)

RabbitMQ

전송 시간(초)

ActiveMQ vs RabbitMQ 성능 비교

설정값(기본): queue방식, durable=false, theard=1, transacted=false, ack-mode=auto

Producer 1대

Broker 1대

Consumer 1대

Java 기반

다양한 Client language & Protocol 지원

2013.10.21

5.9.0 released Multicast방식 cluster topology 지원

Page 44: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ가 최선입니까?

Message Routing

Page 45: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing 방식

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

메시지의 수신과 처리를 비동기로 처리함

Page 46: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

Page 47: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing.

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

Page 48: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing.

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

Page 49: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing.

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

이런 큐는 미 처리된 메시지로 인해 발생하는 Wait-Time을 줄이기 위함 (pending queue=2.5*prefatch)

Page 50: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing.

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

예외로 메시지 당 처리시간이 긴 경우는 prefatch size=0

Page 51: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ의 Message Routing.

P1

B1

B3 B2

C1

C2

Broker Cluster

Sending Queue

Pending Queue

Prefatch Queue

예외로 메시지 당 처리시간이 긴 경우는 prefatch size=0

Page 52: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Slow consumer

P1

C1

C2

fast

slow

Pending queue 적재량이 늘어남 Slow consumer발생 시 : 16k/sec 7k/sec

Page 53: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Pending Queue Size Monitoring

P1 C1

Page 54: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ 이슈 1. Consumer, Producer connection은 분리(stomp) 2. jvm maxium heap size에 따른 최대 pending

queue size. JVM Memory 설정 최대 queue 적재량 메시지 사이즈

2G 210만 건 80bytes

4G 450만 건 80bytes

16G 11,20만 건 80bytes

Page 55: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ cluster topology

B1 B2 B3

B9

B6 B4

B7 B8

B5

B2

B3 B4

B5 B7 B6

B1

B1

B2

B3

B4

B5 B6

B7 B8

B10

B9

B2

B3

B4

B5 B7

MESH RING

TREE Graph

Page 56: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ cluster topology : multicast를 이용한 complete graph 방식

P1

P2

P3

B2

B4 B3

C1

C2

C3

B1

B5

Page 57: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

일반적인 메시지 전달

P2 B4 B3 C3

B1 P1

idle

normal

Page 58: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

P2의 데이터가 일시적으로 급증하면?

P2 B4 B3 C3

B1 P1

idle

busy

Page 59: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

P2 B4 B3 C3

B1 P1 장애

P2의 데이터가 일시적으로 급증하면?

Page 60: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

P2 B4 B3 C3

B1 P1 장애

P2의 데이터가 일시적으로 급증하면?

장애 장애

Page 61: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

그래서 Cluster topology를 재구성 했습니다. 라우팅을 최소화, 명료화 하도록

Page 62: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

파티션

B2 B1

B2 B1

B2 B1

P1

P2

P3

C1

C2

ActiveMQ cluster topology : zookeeper 기반 cluster topology를 직집 구성

Page 63: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

파티션

B2 B1 P1 C1

채팅과 같은 아주 큰 대용량은 직접전송을 채택

프로토콜 버퍼

UDP

Thrift

ZeroMQ

Page 64: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

ActiveMQ가 최선입니까?

but, 향후 Messaging/Broker Layer를 추상화하여 좀더 심플한 Producer-Consumer 모델을 적용.

Not Bad..

Page 65: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

데이터 처리 [Workflow-Tier]

데이터 전달 [Collect-Tier]

Page 66: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Workflow Lib( C/C++, JAVA, PHP)

Workflow 라이브러리가 지원하는 method

open()

ZK, AMQ 연결

run()

Message Listener등록 Watch 등록

close()

AMQ, ZK 연결해제

onMessage(msg)

send()

Producer 등록 AMQ로 메시지 전송

Page 67: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

void main(String[] args) throws Exception { _wf = new PartitionWorkflow(); HashMap<String, Object> config = new HashMap<String, Object>(); config.put(Workflow.ARGS_ZOOKEEPER_URI,“host1:2181,host2:2181,host3:2181" ); config.put(Workflow.ARGS_WORKFLOW_NAME,"_Demo_Vote" ); config.put(Resource.AMQ_SOURCE_LISTENER, new PartitionListener()); config.put(Workflow.ARGS_PARTITION_NAME, "AfGameCenter" ); _wf.open(config); _wf.run(); waitForKeyPress(); _wf.close(); } class PartitionListener implements CollectorListener{ @Override synchronized public void onMessage(CollectorMessage message) throws Exception { processRTLog(message.body); proectRTRank(message.body) processRTFilter(message.body ); send(“hello”); } }

Workflow 구현 샘플 코드

Page 68: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Workflow 구현 사례

Page 69: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

아프리카TV 검색어 분석 workflow

검색어 수집

formatter

afreeca.search.raw

afreeca.search.formatted

Search Rank

Related Search

HDFS Appender

formatter formatter

Search Rank Search Rank

배치 동기화

Afreeca.alarm

Page 70: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

Connection-pooling & bulk-insert 로 활용 : mysql_insert, redis_pipe, hdfs_appender

Mysql_insert

INSERT INTO `log_tb` VALUES (‘log1‘) INSERT INTO `log_tb` VALUES (‘log1‘) INSERT INTO `log_tb` VALUES (‘log1‘)

방송시청 로그 Uid/bjid/시청시간

INSERT INTO `log_tb` VALUES (‘log1‘, ‘log2’, log3)

Redis_pipe

hset( foo,bar3,2) VALUES (‘log1‘) hset( foo,bar2,3) VALUES (‘log1‘) hset( foo,bar13,4)

방송시청 로그 Uid/bjid/시청시간

Hmset( foo, bar1,1,bar,2,bar3)

Update 구문은 사용할 수 없음(sequence보장안됨)

Page 71: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

BJ 추천 하기( item based similarity )

방송 시청 진입

combiner

DW.stream.AF.CIN

방송 시청 퇴장

DW.stream.AF.COUT

HDFS Append

DW.stream.AF.VIEW

방송시청 로그 Uid/bjid/시청시간

BJ-Clustering MR

BJ-Similarity 측정 MR

결과 저장 (Redis)

Page 72: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

BJ 추천 하기( item based similarity )

Page 73: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

대용량 메시지 플랫폼 : 모바일 Push & 메시지 읽기/저장

메시지 전송 요청 API

Message.request

classifier

Message.one

Message.group

classifier classifier

classifier classifier Msg Sender

classifier classifier Msg Sender

REDIS-Storage

classifier classifier GCM Push

classifier classifier APNS Push Push.apns

Push.gcm

메시지 읽기 API DeviceToken

DB 동기화

REDIS-Storage REDIS-Storage

Page 74: Workflow 기반 실시간 스트리밍 데이터 수집 분석 플랫폼ktnexr.com/upload/workflow.pdf · 실시간 스트리밍 데이터 ... 네트워크 트래픽 수집 및 분

결론

- 데이터 수집은 서비스에 맞는 적절한 방식을 선택

- MQ기반의 데이터 처리 시스템 괜찮다. - Messaging Layer의 선택과 튜닝은 중요하며, Messaging Layer를 plugin 지원하는 것 고려