검색 로 그 시스템 with Python by itproman 35 1479 views 
 파이썬 데이터 분석 3 종 세트 by itproman 35 12009 views 
 Apache storm vs . Spark Streaming by P . Taylor Goetz 207406 views 
 Apache spark 소개 및 실습 by 동현 강 32481 views 
 실시간 데이터 처리 프로젝트 를 위한 오픈 소스 와 아키텍처 사례 소개 
 Chihoon Jeon , Samsung SDS Advisory Engineer at Samsung SDS 
 윤근 송 at 메타 빌드 
 1 . 지금 핫 한 Real -­‐' me In -­‐ memory Stream Processing 이야기 tedwon iamtedwon @ gmail . com 
 2 . 우리 나라 사람 들 이 특히 좋 아 하 는 이야기 
 3 . 빠르 면 빠를 수록 좋 치 요 ~ 
 4 . About me • JBoss User Group Korea 온 오프라인 개발자 커뮤니티 운영 자 • Facebook 그룹 실시간 빅 데이터 처리 기술 온라인 커뮤니티 운영 자 • 실시간 빅 데이터 플랫 폼 전문 개발자 • 현 DaumKakao 개발자 • 전 kth DAISY 개발자 • www . facebook . com / tedwon • tedwon . atlassian . net 
 5 . 언제 어디 서 Streaming 기술 이 유용 할까요 ? ? 
 6 . Streaming 기술 의 Use Cases 알고리즘 주식 트레이딩 지난 30 분 간 의 주문 상품 Top 10 온라인 몰 사용 자 클릭 스트림 기반 개인 화 추천 모바일 광고 타 겟 팅 서비스 실시간 금융 사기 방지 
 7 . Streaming 기술 의 Use Cases • 테러 방지 • 실시간 분석 / 추천 / 광고 • 실시간 모니터링 • 제조 공정 관리 • 보안 관제 • 금융 / 통신 • 의료 / 헬스 케어 • IoT ( Internet of Things ) 
 8 . Streaming 기술 의 Use Cases 
 9 . Streaming 시스템 의 Data Flow 
 10 . Fast Data 
 11 . funcEon ( events , Eme ) 
 12 . 실시간 의 개념 부터 살짝 정리 하 고 시작 합시다 ! 
 13 . 실시간 Searching 실시간 Batch Job 실시간 Streaming 
 15 . Real -­‐ Eme 시스템 의 특징 • EDA 기반 아키텍처 로 구현 해야 함 ! – Event -­‐ driven Architecture • 실시간 이 란 상대 적 인 개념 • 요건 에 따라 실시간 의 범위 가 정의 될 수 있 음 • 실시간 서비스 수준 정의 가 필요 • 실시간 시스템 의 SLA 정의 및 합의 필요 
 16 . Real -­‐ Eme 시스템 의 키포인트 • 낮 은 수준 의 지연 시간 – Low latency • 일정 한 응답 속도 의 보장 – RegulariEes in Response Eme • 예측 가능 한 성능 제공 – Providing predictable performance ü  결국 낮 은 지연 시간 을 일정 하 게 최대한 오래 유지 ( 24 / 7 ) 
 17 . Real -­‐ Eme 서비스 수준 정의 • Latency 정규 분포 통계 계산 Throughput 995 , 900 ( active 0 pending 0 ) 나노세컨드 단위 측정 5 μ s 수준 의 성능 
 18 . Real -­‐ Eme 서비스 수준 정의 • Near Real -­‐' me – Minutes 수준 의 지연 시간 보장 • Real -­‐' me – Seconds , Milliseconds 수준 보장 • Real Real -­‐' me – Microseconds 수준 보장 ü  구체 적 인 범위 정의 는 비즈니스 SLA 요구 수준 에 따라 결정 됨 
 19 . Streaming 의 EDA 아키텍처 • EDA 기반 으로 사람 의 감각 기관 및 반응 구조 와 유사 – Event -­‐ driven Architecture 눈 , 귀 등 의 감각 기관 생각 , 판단 손 , 발 의 반응 
 20 . Streaming 과 일반 방식 의 비교 배치 , 요청 / 응답 방식 스트리밍 방식 Request / Response EDA 동기 처리 비동기 처리 Response ReacEon 선 저장 후처리 선처리 후 저장 
 21 . 가장 먼저 실시간 로그 수집 부터 이슈 
 22 . 실시간 분산 로그 수집 기 
 23 . Apache KaVa 이야기 
 24 . Apache KaVa 이야기 
 25 . Apache KaVa 이야기 
 26 . Apache KaVa 이야기 • Publish -­‐ subscribe 방식 의 고 성능 분산 메시징 시스템 • Topic 과 Queue 개념 이 합쳐진 모델 • LinkedIn SNA 팀 에서 개발 하 고 서비스 에 사용 중 – 2011 년 시작 – Scala , Java 구현 • LinkedIn 에서 2014 년 기준 300 개 가 넘 는 브로커 운영 – 18 , 000 개 의 토픽 – 하루 에 2 , 200 억 메세지 처리 
 27 . Apache KaVa 이야기 h ^ p : / / www . slideshare . net / fullscreen / cloudera / introducEon -­‐ to -­‐ apache -­‐ kaVa / 1 
 28 . Apache KaVa 이야기 • 사용 하 기 쉬운 API , 설정 옵션 • Zero -­‐ copy 방식 으로 고 성능 읽 기 기능 • Scale -­‐ out 아키텍처 • Producer 측 에서 파티 셔 너 를 구현 해 분산 저장 조절 • 배치 단위 전송 , 압축 기능 등 효율 적 인 전송 기능 • 성능 을 위해 OS 와 Log 디스크 드라이브 를 분리 • KaVa + Stream Processor 조합 으로 활용 
 29 . KaVa in Neclix h ^ ps : / / gigaom . com / 2013 / 12 / 09 / neclix -­‐ open -­‐ sources -­‐ its -­‐ data -­‐ traffic -­‐ cop -­‐ suro 
 30 . Apache KaVa 이야기 h ^ p : / / www . cloudera . com / content / cloudera / en / developers / home / cloudera -­‐ labs / apache -­‐ kaVa . html 
 31 . Apache KaVa 이야기 주 키퍼 시작 > bin / zookeeper - server - start . sh config / zookeeper . properties 카프카 서버 시작 > bin / kafka - server - start . sh config / server . properties 토픽 생성 > bin / kafka - topics . sh -- create -- zookeeper localhost : 2181 -- replication - factor 1 -- partitions 1 -- topic test 로그 생성 > bin / kafka - console - producer . sh -- broker - list localhost : 9092 -- topic test 로그 처리 > bin / kafka - console - consumer . sh -- zookeeper localhost : 2181 -- topic test -- from - beginning 
 32 . Apache KaVa 이야기 High Level Consumer API Simple Consumer API 
 33 . Apache KaVa 모니터링 • JBoss RHQ 모니터링 통합 플랫 폼 
 34 . Apache KaVa 모니터링 • QuanEfind 의 KaVa Offset Monitor 
 35 . Apache KaVa 모니터링 • QuanEfind 의 KaVa Offset Monitor 
 36 . 써 보 니 결국 각자 R & R 이 있 었 습니다 
 37 . Complex Event Processing 
 38 . Esper CEP 이야기 • 1990 년 대 부터 시작 된 전통 적 인 Event Stream 처리 기술 • Complex Event Processing 을 구현 오픈 소스 Esper • 복합 적 인 event 를 참조 하 여 패턴 을 알 아 차리 는 기술 • Data Window , Pa ^ ern matching 기능 이 핵심 • ConEnuous Query EPL 제공 • 10 억 분 의 1 초 ( ns ) 단위 의 성능 è  초고 성능 가능 
 39 . Esper 이야기 • Esper 기본 아키텍처 
 40 . Esper 이야기 • 실시간 ETL 처리 후 HDFS 저장 Thrift Server Hadoop FileSystem API ETL EPL 작성 ( Extract , Transform , Load ) 
 43 . Esper CEP 이야기 단일 노드 ( JVM ) 의 한계 
 44 . Apache Storm 이야기 
 45 . Apache Storm 이야기 • Twi ^ er 의 실시간 스트리밍 데이터 분석 솔루션 • Real -­‐ Eme Hadoop 같 은 존재 • 스트림 분산 처리 아키텍처 • Transac ' onal 스트림 처리 기능 • 분산 RPC 기능 • 이벤트 처리 보장 기능 • 지속 적 인 버전 업 중 , 커뮤니티 활발 • 국내 레퍼런스 많 음 
 46 . Apache Storm 키워드 Nimbus Supervisor Worker Spout / Bolt Transac ' onal Spout / Bolt Trident 
 47 . Apache Storm 이야기 JobTracker • Real -­‐ Eme MapReduce TaskTracker 
 48 . Apache Storm 이야기 
 49 . Apache Storm 이야기 
 50 . KaVa + Storm IntegraEon • Storm 프로젝트 의 통합 모듈 에 포함 – h ^ ps : / / github . com / apache / storm / tree / master / external / storm -­‐ kaVa • Simple Consumer API 로 구현 • Storm Spout 에서 KaVa 메세지 offset 직접 관리 • KaVa + Storm 조합 사용 사례 많 음 • ProducEon 적용 가능 수준 상태 
 51 . Apache Storm 이야기 
 52 . Apache Storm Distributed RPC 
 53 . Apache Storm Trident • Codes 
 54 . Apache Storm Trident • Compile Down 
 55 . Apache Storm 이야기 좀 더 간단 하 면 안 되 겠 니 ? ? 
 56 . 현재 실시간 플랫 폼 의 아쉬운 점 • 실시간 분산 환경 에서 고 성능 으로 데이터 공유 의 어려움 • 분산 환경 에서 Time Window 제공 이 어려움 • 로우 레벨 코드 작업 이 큼 • 배치 분석 시스템 과 개별 운영 공수 필요 • 클러스터 리소스 공유 의 어려움 
 57 . 실시간 시스템 아키텍처 사례 
 58 . JBoss Infinispan 이야기 • JBoss 커뮤니티 의 오픈 소스 프로젝트 – Scala , Java • Data Grid , In -­‐ memory NoSQL , 분산 케시 • In -­‐ memory HDFS 같 은 존재 • 메모리 기반 의 대용량 데이터 저 장소 • 운영 중 노드 추가 가능 , replica 기능 지원 • 안정 적 인 클러스터 운영 기능 
 59 . JBoss Infinispan 이야기 • 메타 데이터 관리 è  시스템 관리 • 성능 / 에러 모니터링 데이터 저 장소 è  Live Charts 로 연동 • 마이닝 데이터 저 장소 è  추천 • 실시간 데이터 저 장소 • 등등 포 텐 대박 ! ! 
 60 . 새로운 분석 플랫 폼 의 등장 
 61 . 새로운 분석 플랫 폼 Apache Spark One pla [ orm to rule them all … and blurs boundary between SQL , machine learning , streams & graphs 
 62 . 현재 분석 플랫 폼 의 아키텍처 h ^ p : / / spark -­‐ summit . org / wp -­‐ content / uploads / 2013 / 10 / Stoica -­‐ SparkSummit -­‐ Ion . final _. pdf 
 63 . Spark Streaming 새로운 스트리밍 플랫 폼 
 64 . Spark Streaming 이야기 RDD Resilient Distributed Datasets Immutable Parallelized Collec 6 ons 
 65 . Spark Streaming 이야기 DStreams Discre 6 zed Streams 연속 된 RDD 
 66 . Spark Streaming 이야기 
 67 . Spark Streaming 이야기 
 68 . Spark Streaming 이야기 
 69 . Spark Streaming 이야기 • 초 단위 latency • Streaming 도 작 은 배치 의 연속 으로 구현 • Storm 의 TransacEonal 토폴로지 와 유사 한 개념 • 실제 실행 은 마이크 로 배치 잡 처럼 수행 • 배치 윈도우 시간 내 에 처리 가능 하 도록 만들 어 줘야 함 • 각 배치 사이즈 를 시간 간격 설정 으로 조절 가능 
 70 . Spark Streaming 이야기 • Simple 한 프로그래밍 모델 제공 • 분산 처리 환경 에서 Time Window API 제공 • Stateful 스트림 프로세싱 기능 가능 • Task 실패 시 재시 도 기능 제공 è  fault -­‐ tolerance • CMS GC 가 잘 동작 • Spark 배치 와 동일 한 관리자 UI 제공 • 로컬 테스트 용 이 
 71 . Spark Streaming 튜닝 핵심 개념 SparkStreamingContext ' me window : 10 sec blockInterval : 500 ms 으로 정의 하 면 , RDD 당 20 개 의 par '' on 생성 ( 10 , 000 / 500 ) 20 개 의 태 스 크 가 수행 됨 YARN 에서 executor 1 개 5 개 vCore 할 당시 , 1 vCore 당 4 개 ( 20 / 5 ) 4 개 의 태 스 크 수행 
 72 . Spark Streaming 이야기 
 73 . Spark Streaming 이야기 Stream 을 Transforma 6 on 하 고 또 해서 Ac 6 on 하 는 스토리 요런 게 스트림 그래프 ( DAG ) 
 74 . Spark Streaming 이야기 • Transforma ' on API map ( func ) filter ( func ) flatMap ( func ) mapPar '' ons ( func ) union ( otherDataset ) repar '' on ( numPar '' ons ) groupByKey ( [ numTasks ] ) reduceByKey ( func , [ numTasks ] ) updateStateByKey ( func ) 
 75 . Spark Streaming 이야기 • Ac ' on API print ( ) foreachRDD ( func ) saveAsTextFiles ( prefix , [ suffix ] ) saveAsHadoopFiles ( prefix , [ suffix ] ) saveAsObjectFiles ( prefix , [ suffix ] ) 
 76 . Spark Streaming 이야기 Scala 로 된 샘플 코드 한 번 보 실래요 ? 
 77 . Spark Streaming 이야기 
 78 . Spark Streaming 이야기 
 79 . Spark Streaming 이야기 
 80 . Spark Streaming on YARN 
 81 . KaVa + Spark IntegraEon • KaVa 프로젝트 통합 모듈 존재 – KaVaInputDStream . scala – h ^ ps : / / github . com / apache / spark / tree / master / external / kaVa • High -­‐ level Consumer API 로 구현 • ProducEon 용은 아직 아닌 듯 • 1 . 2 . x 버전 에서 는 해결 될 듯 – ReliableKaVaReceiver . scala 추가 
 82 . Summary • 실시간 프로젝트 를 위한 기본 개념 은 필수 • 각 오픈 소스 의 장점 을 활용 한 아키텍처 구성 필요 • 안정 적 인 데이터 수집 관리 를 위해서 는 KaVa 는 현재 최고 의 선택 • 운영 중 동적 인 스트리밍 처리 로직 변경 이 필요 한 경우 는 Esepr • 실시간 분산 전처리 용 으로 Storm , Spark Streaming • 인 메모리 프로세싱 과 Infinsipan 은 찰떡 궁합 • 실시간 의 특성 상 성능 관리 와 모니터링 중요 
 83 . Summary h ^ p : / / www . reacEvemanifesto . org • ReacEve Manifesto 
 84 . Streaming 기술 이 더욱 활발히 적용 되 길 바랍니다 . 
 85 . Special thanks to co -­‐ workers ! 
 87 . 개발자 커뮤니티 에서 함께 해요 ~ hjps : / / www . facebook . com / groups / jbossusergroup hjps : / / www . facebook . com / groups / open . real ' mecep 
 88 . References • h ^ p : / / kaVa . apache . org • h ^ p : / / esper . codehaus . org • h ^ p : / / storm . apache . org • h ^ p : / / spark . apache . org / docs / latest / programming -­‐ guide . html • h ^ ps : / / www . usenix . org / system / files / conference / nsdi 12 / nsdi 12 -­‐ final 138 . pdf • h ^ p : / / berlinbuzzwords . de / sites / berlinbuzzwords . de / files / media / documents / andrew _ psalEs _-­‐_ sparkstreaming . pdf • h ^ p : / / www . michael -­‐ noll . com / blog / 2014 / 10 / 01 / kaVa -­‐ spark -­‐ streaming -­‐ integraEon -­‐ example -­‐ tutorial • h ^ p : / / www . slideshare . net / ptgoetz / apache -­‐ storm -­‐ vs -­‐ spark -­‐ streaming • h ^ p : / / infinispan . org / infinispan -­‐ 7 . 0 • h ^ p : / / blog . cloudera . com / blog / 2014 / 07 / jay -­‐ kreps -­‐ apache -­‐ kaVa -­‐ architect -­‐ visits -­‐ cloudera • h ^ p : / / www . slideshare . net / tedwon / realEmecepv 26 • h ^ p : / / www . slideshare . net / tedwon / real -­‐ Eme -­‐ b i g d a t a a n a l y E c s p r acEcewithunstructureddata • h ^ p : / / www . slideshare . net / tedwon / complex -­‐ event -­‐ processing -­‐ with -­‐ esper -­‐ 11106262 • h ^ p : / / www . slideshare . net / tedwon / red -­‐ hat -­‐ forum -­‐ 2012 -­‐ jboss -­‐ rhq 
 JBoss EAP 7 & JDG 7 최신 기술 소개 
 JBoss Modules Internal