플랫폼을말하다 2

Similar documents
분산처리 프레임워크를 활용한대용량 영상 고속분석 시스템

Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤

김기남_ATDC2016_160620_[키노트].key

PowerPoint 프레젠테이션

NoSQL

RUCK2015_Gruter_public

Portal_9iAS.ppt [읽기 전용]

[Brochure] KOR_TunA

PCServerMgmt7

출원국 권 리 구 분 상 태 권리번호 KR 특허 등록


Spring Boot/JDBC JdbcTemplate/CRUD 예제

1217 WebTrafMon II

Microsoft PowerPoint - 04-UDP Programming.ppt

Cloud Friendly System Architecture

Global Bigdata 사용 현황 및 향후 활용 전망 빅데이터 미도입 이유 필요성 못느낌, 분석 가치 판단 불가 향후 투자를 집중할 분야는 보안 모니터링 분야 와 자동화 시스템 분야 빅데이터의 핵심 가치 - 트랜드 예측 과 제품 개선 도움 빅데이터 운영 애로 사항

No Slide Title

PowerPoint 프레젠테이션

슬라이드 1

CONTENTS Volume 테마 즐겨찾기 빅데이터의 현주소 진일보하는 공개 기술, 빅데이터 새 시대를 열다 12 테마 활동 빅데이터 플랫폼 기술의 현황 빅데이터, 하둡 품고 병렬처리 가속화 16 테마 더하기 국내 빅데이터 산 학 연 관

2

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

untitled

서현수

Ubiqutious Pubilc Access Reference Model

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

DB진흥원 BIG DATA 전문가로 가는 길 발표자료.pptx

쉽게 풀어쓴 C 프로그래밊

슬라이드 1

MS-SQL SERVER 대비 기능

슬라이드 1

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

FileMaker 15 ODBC 및 JDBC 설명서

Analyst Briefing

thesis

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx


PowerPoint Presentation

Voice Portal using Oracle 9i AS Wireless

Microsoft PowerPoint - CNVZNGWAIYSE.pptx

Intra_DW_Ch4.PDF

DIY 챗봇 - LangCon

RED HAT JBoss Data Grid (JDG)? KANGWUK HEO Middleware Solu6on Architect Service Team, Red Hat Korea 1

6주차.key

슬라이드 1

PowerPoint 프레젠테이션

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

rmi_박준용_final.PDF

PowerPoint 프레젠테이션

J2EE & Web Services iSeminar

Chap7.PDF

세션 3 (오이식).ppt

Service-Oriented Architecture Copyright Tmax Soft 2005

vm-웨어-01장

sdf

PowerPoint Template

PowerPoint 프레젠테이션


Cache_cny.ppt [읽기 전용]


PowerPoint 프레젠테이션

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

빅데이터_DAY key

FileMaker ODBC 및 JDBC 가이드

슬라이드 1

슬라이드 1

JMF3_심빈구.PDF

[Brochure] KOR_LENA WAS_

The Self-Managing Database : Automatic Health Monitoring and Alerting

J2EE Concepts

PlatformDay2009-Hadoop_OSBI-YoungwooKim

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

歯이시홍).PDF

Corporate PPT Template

JavaGeneralProgramming.PDF

final_thesis

신림프로그래머_클린코드.key

Interstage5 SOAP서비스 설정 가이드

PowerPoint 프레젠테이션

통합관리솔루션(Zabbix) 2.4 소개

untitled

Oracle9i Real Application Clusters

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

오픈데크넷서밋_Spark Overview _SK주식회사 이상훈

sdf

DW 개요.PDF

C# Programming Guide - Types

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

제8장 자바 GUI 프로그래밍 II

슬라이드 1

Backup Exec

<BCBCBBF3C0BB20B9D9B2D9B4C220C5ACB6F3BFECB5E520C4C4C7BBC6C3C0C720B9CCB7A128BCF6C1A4295F687770>

Microsoft Word - 조병호

PowerPoint Presentation

Hadoop 10주년과 Hadoop3.0의 등장_Dongjin Seo

14-Servlet

Basic Template

01-OOPConcepts(2).PDF

02 C h a p t e r Java

Transcription:

데이터를실시간으로모아서 처리하고자하는다양한기법들 김병곤 fharenheit@gmail.com

플랫폼을말하다 2

실시간빅데이터의요건들 l 쇼핑몰사이트의사용자클릭스트림을통해실시간개인화 l 대용량이메일서버의스팸탐지및필터링 l 위치정보기반광고서비스 l 사용자및시스템이벤트를이용한실시간보안감시 l 시스템정보수집을통한장비고장예측 l 실시간차량추적및위치정보수집을이용한도로교통상황파악 l 사용자의액션수집을이용한이상행위탐지 3

Scale Up vs. Scale Out 4

Scale Up vs. Scale Out l Scale Up Concurrent Programming 단일애플리케이션에서 Multi-Core Achitecture 를잘활용하는방법 언어 : Erlang, Scalar, Clojure l Scale Out Distributed Programming 네트워크로연결된다수의머신을통해작업을분배 기법 : MapReduce l Scale Up 과 Scale Out 을선정하는기준 Scalability & Performance 5

Scale Out 이대세 l Scale Out 을선택하는가장큰이유 Continuous Availability Continuous Redundancy Cost/Performance Flexibility Continuous Upgrade Geographical Distribution l 하지만 Scale Out 은어렵다 Availability, Scalability Indexing, Partitioning, Replication 6

실시간처리방식에따른기술적특징 구분 기술적특징 시간에따른이벤트의일련의연속된흐름을처리 특정한 time window 또는건수를연속적으로처리 이벤트중심처리 Scale up 아키텍처 선언적 rule 기반처리 단순한시스템구성 시간에따른이벤트의일련의연속된흐름을처리 스트리밍중심처리 Scale out 아키텍처 Computation 중심처리 복잡한시스템구성 7

실시간처리를위한오픈소스 오픈소스라이센스언어확장방법 즉시 Rule 추가및변경 필요한 인프라 구현방식 Esper CEP GPL2 Commercial Java Scale up 예없음 선언적 SQL Query Like Drools Fusion CEP ASL 2.0 Java Scale up 예없음 선언적 일반적은 Rule 기반 Query 지원 Storm EPL 1.0 Clojure Scale Out Zookeeper 기반 구현가능 ZeroMQ Zookeeper 프로그래밍 Apache S4 ASL 2.0 Java Scale Out Zookeeper 기반 구현가능 Zookeeper ( 옵션 ) YARN ( 옵션 ) 프로그래밍 Apache Kafka APL 2.0 Java Scale Out Zookeeper 프로그래밍 Message Queue 8

실시간처리를위한오픈소스 오픈소스문서화성숙도커뮤니티 URL 참고 Esper CEP 매우 좋음 높음, 안정적중간 esper.codehaus.org Drools Fusion CEP 좋음 3 년이상, 안정적작음 www.jboss.org Storm 있음운영에사용빠르게성장 github.com/nathanmarz/storm 배포 기능좋음 Apache S4 평균낮음, 운영에사용중간 incubator.apache.org/s4 Apache Kafka 좋음운영에사용작음 incubator.apache.org/kafka 9

실시간처리를위한오픈소스 오픈소스문서화성숙도커뮤니티 URL 참고 Esper CEP 매우 좋음 높음, 안정적중간 esper.codehaus.org Drools Fusion CEP 좋음 3 년이상, 안정적작음 www.jboss.org Storm 있음운영에사용빠르게성장 github.com/nathanmarz/storm 배포 기능좋음 Apache S4 평균낮음, 운영에사용중간 incubator.apache.org/s4 Apache Kafka 좋음운영에사용작음 incubator.apache.org/kafka 10

Tweetping 1

Splunk 1

Sumo Logic 1

Realtime Big Data Architecture Complex Event Processing Engine Web Server Log Aggregator Network Socket Ingress Adapter Network Socket Event Query Engine Rule Engine Client API Outgress Adapter Client API NoSQL Cluster (MongoDB) Application Server Log Aggregator Application Server Producer Streaming Processing Engine Adapter Node Node Node Client API Node Node In-Memory Data Grid Node Node Node Node Node Mongos Mongos Config mongod mongod mongod mongod mongod mongod mongod mongod Grid File System Distributed Messaging Broker Broker Broker HDFS API JDBC MySQL Cluster Client API MapReduce Consumer Consumer MySQL MySQL HDFS API MapReduce HDFS API Sqoop Apache Hadoop Cluster Namenode Datanode Datanode Datanode Apache Pig Apache Hive ZooKeeper Ganglia ZooKeeper Ganglia ZooKeeper Ganglia ZooKeeper Ganglia DAG Engine PigLatin Metastore HiveQL 1

CEP & Flume & Hadoop Web Server Log Aggregator Decorator Application Server Network Socket HTTP Input Adapter Thrift Input Adapter HTTP Input Adapter Complex Event Processing Engine Event Query Engine [EPL] select user, sys,... from cpu Mail Output Adapter RDMBS Output Adapter HDFS Output Adapter Log Aggregator Decorator Proxy Server Log Collector Log Aggregator Collector Collector Decorator Thrift Collector JDBC HDFS API /LOG/MON/YYYYMMDDD MySQL MySQL Cluster MySQL HDFS API /CEP/MON/YYYYMMDDD Sqoop Apache Hadoop Cluster Namenode Datanode Datanode Datanode Apache Pig Apache Hive ZooKeeper Ganglia ZooKeeper Ganglia ZooKeeper Ganglia ZooKeeper Ga nglia DAG Engine PigLatin Metastore HiveQL 15

Esper CEP l Scale Up 아키텍처기반이벤트탐지 Complex Event Processing Esper Engine HTTP Input Adapter [Query Statement] select user, sys,... from cpu POJO Mail Output Adapter Thrift Input Adapter [Query Statement] select user, sys,... from cpu POJO RDMBS Output Adapter HTTP Input Adapter [Query Statement] select user, sys,... from cpu POJO HDFS Output Adapter Event Query Pattern Language Core Container 16

CEP 의 Length Window 17

CEP 의 Time Window 18

CEP 의 Time Window EPServiceProvider epservice = EPServiceProviderManager.getDefaultProvider(); String expression = "select avg(price) from org.myapp.event.orderevent.win:time(30 sec)"; EPStatement statement = epservice.getepadministrator().createepl(expression); MyListener listener = new MyListener(); statement.addlistener(listener); public class MyListener implements UpdateListener { public void update(eventbean[] newevents, EventBean[] oldevents) { EventBean event = newevents[0]; System.out.println("avg=" + event.get("avg(price)")); } } select account, avg(amount) from Withdrawal.win:time(4 sec) group by account having amount > 1000 19

MapReduce 처리방법 출처 : Manning Hadoop In Practice 20

Apache S4 l Scale Out 아키텍처기반분산스트리밍 S4 distributed stream computing platform Scalable 노드추가시선형적성능향상 Cluster Management ZooKeeper 를이용한 클러스터관리 Extensible 단순한 API 를이용하여애플리케이 션을개발하고배포 Decentralized No Single Point Failure Partial Fault-Tolerance 장비장애시자동으로 Stand-By Server 활성화 Proven Yahoo! 검색운영시스템에적용 21

Near Real-Time Search Index Hadoop MapReduce? Chunk Data 만다루는 Hadoop Unbound Stream 에적합하지않음 22

Apache S4 Processing Element Processing Node Processing Element Processing Element Processing Element Input Eve nt Output Event l Processing Element(PE) Business Logic 이위치하는곳, 이벤트스트림을입력받아처리후출력 l Processing Node 다수의 PE 를배포하고연계하여처리하는노드 23

Apache S4 Processing Element PhoneCallPE 를통과하면새로운형태의 Eve nt POJO 를생성한다. 24

Apache S4 PE Pipeline S4 에서제공하는기능으로 Partitioning 에따라서이벤트 를수신하여로드밸런싱 Processing Node 간부하를분산 각각의이벤트를결합하여 Lucene 인덱스생성 25

Apache S4 Client Adapter External System 2334 6077 5077 Client Adapter S4 TCP UDP 6077 5077 Client Adapter UDP S4-0 S4-1 S4 App S4 App 5078 S4 Application 1 S4 Application 2 26

Apache S4 Twitter Topic Counter 27

Apache S4 Twitter Topic Counter 28

STORM l Highly Distributed Realtime Computation System l Any Programming Language l Scalable l Falut-Tolerant 29

STORM l Scale Out 아키텍처기반분산스트리밍 30

STORM Browser h"p://www.website.com/ Search Web Server Log Aggregator Application Server Log Aggregator Application Server Producer Spout STORM Bolt Bolt Bolt Client API Node Node In-Memory Data Grid Node Node Client API Node Node Node NoSQL Cluster (MongoDB) Mongos mongod mongod mongod mongod Mongos mongod mongod mongod mongod Config Grid File System 31

STORM Spout & Bolt https://github.com/nathanmarz/storm/wiki/tutorial 32

STORM Spout l 데이터를클라이언트에서수집하는역할 public class CountrySpout extends BaseRichSpout { } private Queue<String> feedqueue = new LinkedList<String>(); private SpoutOutputCollector collector; private StormSpoutServer stormspoutserver; public void nexttuple() { String next = feedqueue.poll(); if (next!= null) { collector.emit(new Values(next), next); } } public void open(map conf, TopologyContext context, SpoutOutputCollector collector) { stormspoutserver = new StormSpoutServer(9191, this); stormspoutserver.run(); this.collector = collector; } public void declareoutputfields(outputfieldsdeclarer declarer) { declarer.declare(new Fields("line")); } public Queue<String> getfeedqueue() { return feedqueue; } 33

STORM Bolt l Spout 또는 Bolt 가전달한이벤트스트림을처리 public class CountryCounterBolt extends BaseBasicBolt { Map<String, Integer> counters; @Override public void prepare(map stormconf, TopologyContext context) { this.counters = new HashMap<String, Integer>(); } } @Override public void execute(tuple input, BasicOutputCollector collector) { String str = input.getstring(0); if (!counters.containskey(str)) { counters.put(str, 1); } else { Integer c = counters.get(str) + 1; counters.put(str, c); } } 34

STORM - Topology public static Topology createtopology() { TopologyBuilder builder = new TopologyBuilder(); builder.setspout("tweets-collector", new ApiStreamingSpout(), 1); builder.setbolt("hashtags-splitter", new HashTagsSplitter(), 2).shuffleGrouping("tweets-collector"); builder.setbolt("hashtags-counter", new HashtagsCounterBolt(), 2).fieldsGrouping("hashtags-splitter", new Fields("hashtags")); return builder.createtopology(); } 35

STORM Message Guarantee 36

STORM Transaction 37

Getting Started with Storm 38

CEP 를이용한 Twitter 메시지수집 실시간스트리밍 Twitter Adapter Twitter4J Twitter Adapter Starter 실시간스트리밍 어댑터시작 CEP 엔진초기화 Twitter Status Listener Esper CEP Engine 위치정보실시간전달 이벤트리스너등록 Esper Update Listener 단위시간당위치건수측정 39

Apache Flume 를이용한 Twitter 메시지수집 실시간스트리밍 Twitter Adapter Twitter4J Twitter Adapter Starter 실시간스트리밍 어댑터시작 Twitter Status Listener 로그파일적재 Flume Tail Exec Source Flume Memory Channel Flume HDFS Sink HDFS 적재 40

배운것들 l 시스템구축에대한노하우또는노력이절대적으로필요. l 상대방의경험이중요할수도있지만중요하지않을수있다. l 많은하드웨어가없다면구현이어렵다. l 업무를알아야한다. 기술이모두라면좋겠지만결국은업무를알아야한다. l 업무의특성에따라서, 비기능적특성으로인하여다른오픈소스, 필요하면상용을써야할수도있다. l 끊임없는테스트와프로파일링만이살길. l 모든것을실시간으로할수없다. 41

실습예제템플릿 https://github.com/fharenheit/esper-flume-hands-on-lab 42

JBoss Community (http://www.jboss.org) Korea JBoss User Group (http://cafe.naver.com/jbossug) 43