아파치 카프카는?
"확장성과 고가용성을 가지는 메시지 브로커"
"오픈소스 분산 발행-구독 메시징 시스템"
"웹사이트, 애플리케이션, 센서 등에서 취합한 데이터 스트림을 실시간으로 관리하기 위한 오픈소스 시스템"
[출처 빅데이터 윤활유 '아파치 카프카'가 주목받는 이유|작성자 kosena21
아파치 카프카의 대두
비즈니스, 소셜 등 다양한 애플리케이션에 의해 실시간 정보가 끊임 없이 생성
실시간 정보를 다양한 종류의 수신자에게 전달할 수 있는 수단이 필요
대부분 정보를 생산하는 애플리케이션과 정보를 수신하는 애플리케이션은 분리되어 있고 서로 접근이 불가능함
정보 컨슈머와 정보 프로듀서의 깔끔한 연동이 필요하다!
아파치 카프카의 디자인 컨셉
정보 컨슈머는 정보 프로듀서에 대해 알 필요 없고 프로듀서는 누가 최종컨슈머인지 알 필요 없이 서로 연동
- 비휘발성 메시징 : 다른 인메모리 처리방식과 달리 디스크 구조로 디자인 -> 그럼에도 독특한 구조로 빠르다!
- 높은 처리량 : 일반 상용 서버에서도 초당 추백만 건의 메시지 처리
- 분산 처리 : 파티셔닝을 지원해 다수의 카프카 서버에 분산처리가 가능하고 load balancing과 fault tolerance도 가능
- 다양한 클라이언트 지원 : 자바와 스칼라로 작성되었지만, 닷넷, PHP, 루비, 파이썬 등 다양한 플랫폼과 쉽게 연동
- 실시간 : 프로듀서 스레드에 의해 생성된 메시지들은 즉시 컨슈머 스레드에서 처리
카프카 메시징 시스템을 사용한 빅데이터 집계aggregation-분석analysis 시나리오
카프카 동작원리
Apache Kafka는 Zookeeper에 의해 관리 되며, Producer, Broker, Consumer로 나눠져 있음.
시스템에서 발생되는 메세지를 Producer가 Broker로 던져주고,
Broker가 이 메세지를 분산 처리,
Consumer가 처리된 데이터를 디스크에 저장함.
프로듀서 예
- 애플리케이션 로그를 생산하는 Front-end Web application
- 웹 분석 로그를 생산하는 프로듀서 프록시
- 변환 로그를 생산하는 프로듀서 어댑터
- 호출 추적 로그를 생산하는 생산자 서비스
컨슈머 예
- 오프라인 분석을 위해 하둡에 저장하는 소비자
- HBase나 카산드라 같은 실시간 분석을 위한 저장소에 저장하는 Near real-time 소비자
- In memory database에서 메시지를 필터링하고 관련 그룹들을 위해 경고 이벤트 등을 발생시키는 real-time 소비자
카프카의 성능
속도 면에서 대용량 메시지 처리에 강점이 있다
SSD : Broker 1대일때 56MB/s, 2대 일때 74.9MB/s, 3대 일때 96.6MB/s Throughput
HDD : Broker 1대일때 20.4MB/s, 2대 일때 35.8MB/s, 3대 일때 45.4MB/s Throughput
SDD를 사용하면 빠르고 Broker의 수가 증가함에 따라 Throughput은 증가
카프카의 필요성
웹 기반 활동이 있는 회사에서는 아래와 같은 대량의 데이터가 생성된다
로그인, 페이지 방문, 클릭, 소셜 네트워킹 활동(Like, 공유, 댓글) 등의 사용자 활동 이벤트와 운영 시스템 정보
하둡과 같은 오프라인 분석 시스템으로 로그 집계 가능하지만 실시간 프로세싱 시스템 만들기에는 한계가 있음
이벤트나 로그 구조의 데이터를 지속적으로 하둡 HDFS에 저장할 수 있는 Apache Flume과 유사하지만 아키텍처가 다름
카프카는 활동 스트림 데이터Activity stream data를 처리하는 메시징 시스템
카프카로 할 수 있는 것
- 연관 검색
- 인기도와 동시 발생, 감정 분석에 기반을 둔 추천
- 대중 광고 전달
- 스팸이나 허가받지 않은 데이터 수집으로부터 인터넷 애플리케이션 보안
- 링크드인LinkedIn : LinkedIn news feed와 LinkedIn today에서 활동 데이터 스트리밍 처리에 사용
- 데이터시프트DataSift : 이벤트를 모니터링하기 위한 수집기와 사용자의 데이터 스트림 소비를 실시간으로 추적하는 추적기에 사용
- 트위터Twitter : 카프카를 Storm의 일부로 사용
- 포스퀘어Foursquare : 온라인 - 온라인, 온라인 - 오프라인 메시징에 카프카 사용. 모니터링, 실 운용환경, 하둡기반의 인프라스트럭처 연동에 사용
- 스퀘어Square : 모든 시스템 이벤트를 데이터 센터와 실시간 경고 시스템으로 보내는데 사용
- IBM 메시지 허브IBM Message Hub 베타 : Streaming Analytics 1/1000초 이하의 응답시간과 즉각적 의사결정을 돕기위한 초당 수백만 건의 이벤트 분석에 사용
출처 : 아파치 Kafka 따라잡기, 2014, 니샨트 가르그 (에이콘)
http://research.microsoft.com/en-us/um/people/srikanth/netdb11/netdb11papers/netdb11-final12.pdf
참고 : http://kafka.apache.org/documentation.html#introduction
http://blog.naver.com/kosena21/220559865513
http://jokergt.tistory.com/180
아래 링크 클릭하여 직접 구매하기
*파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'Review > Book_Data' 카테고리의 다른 글
한계 비용 체증의 법칙 (0) | 2016.07.09 |
---|---|
성공적인 빅데이터 사례 (0) | 2016.07.09 |
하둡을 선택하기 전에 고려해야 할 것들 (0) | 2016.01.23 |
알고리즘 종류, 주 활용 분야 (0) | 2016.01.23 |
데이터 분석가에게 필요한 것 (0) | 2016.01.17 |