일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Hadoop
- uploader
- max중첩
- 점심영어스터디
- programmingTip
- form
- TIP
- 전화영어
- fileUploader
- activerecord
- 삽질기
- carrierwave
- test
- rubyonrails
- Ruby
- programming
- mysql
- minitest
- Rails
- share
- Ruby on Rails
- Scala
- Linux
- fixture
- Shell
- java
- transaction
- Migration
- apache spark
- RoR
- Today
- Total
아침바라기의 이야기
Esper 시작하기 및 참고 사이트 본문
Hadoop이나 Spark로 로그성 데이터 처리를 하다보면 일부를 샘플링해서 데이터의 흐름을 봐야할 일이 꼭 생긴다.
이 흐름이 어떤 형상과 특징을 가지고 있는지 알기 위해서다.
아파치 로그를 생각해보자. 당신이 운영하는 웹사이트를 크롤링하는 크고 아름다운(!) 봇이 있다. 보통 포탈은 이런 크롤러를 굉장히 싫어해서(아무래도 저작권 문제 등등으로..) 개발자는 크롤러가 어떤 시간간격으로 데이터를 가져가는지, 어떤 경로로 오는지를 파악해야 하는 경우가 있다. (당연하지만 아파치 로그로 이걸 다 파악하긴 무리다. 하지만 꾸준히 모니터링 해줘야 한다...-_-)
이 대상 데이터를 찾기 위해선 특이한 형태의 접속 패턴을 찾아야 한다.
작은 사이트라면 사람의 눈으로 전체로그를 다 확인할 수 있을 것이다. 그러나 수십만명의 사용자를 가지고 있는 웹사이트라면?.. 동시 접속자수가 수천명이 넘는다면?(....)
크롤링 감지 같은 일을 실시간으로 해야한다면? 말에서 활쏴서 적병을 맞추던 본좌급 동체 시력을 가진 우리 선조를 생각하자. 우리도 할 수 있다.(...)
무수히 많은 실시간 분석용 툴 (Flume, Spark나 Storm...등등)을 써서 만드는걸 손쉽게 만들 수 있다고 생각이 가능하다.
근데 이게 요구사항이 유연실시간으로 실시간 분석을 바꿀수 있게 해주세요(...ㅅㅂㄻ) 한편이고 자주 바뀐다면 어떻게 할 것인가? 멘붕하고 배째는거죠
자자, 이럴때 필요한 툴이 Esper다.
Esper 는 CEP(Complex Event Process)이다.
우리가 위에서 언급했던 크롤링 패턴 감지를 이벤트라는 개념으로 정의하자.
이 이벤트가 1시간 동안 몇 번이나 발생할지와 3번 이상 발생하면 문자를 보내고 싶다. 라고할 때, 이 처리를 가능하게 해주는 것이 CEP다.
정의는 아래와 같다. (http://en.wikipedia.org/wiki/Complex_event_processing)
Complex event processing, or CEP, is event processing that combines data from multiple sources to infer events or patterns that suggest more complicated circumstances.
Esper의 특징
* 정의 때문이기도 하지만 , 다양한 source의 데이터를 지원한다.
(JDBC, TEXT...Storm, Spark 등등)
이 때문에 2012,3년에 화제가 되었던 기술이었다.
* SQL Like한 EPL 이라는 언어를 사용한다. SQL Fetishism!!!
예제
* symbol 이 AAPL 중에 지난 2분동안 price의 평균이 6.0 보다 높은 StockTick 을 구하라!
SELECT * FROM StockTick(symbol='AAPL').win:time(2 seconds) HAVING avg(price) > 6.0
* EPL을 쓰긴 하지만 생각보다 가볍고 성능이 좋다.
공식 홈에 나온 얘기이다.
참고 사이트
참고할만한 사이트를 소개한다.
* 기본 개념을 잘 설명한 한글 버전 : http://hochul.net/blog/about-esper-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-cep-%EB%8C%80%ED%91%9C-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4/
* 5분만에 Esper 시작하기: https://coffeeonesugar.wordpress.com/2009/07/21/getting-started-with-esper-in-5-minutes/
* 위의 한글 버전이라고 볼수 있다. 친절한 설명 : http://www.notforme.kr/archives/579
* 공식 홈 : http://esper.codehaus.org/