본문 바로가기
  • Let's go grab a data
Review/Book_Data

아파치 카프카 Apache Kafka

by pub-lican-ai 2016. 2. 13.
반응형

아파치 카프카는?

"확장성과 고가용성을 가지는 메시지 브로커"

"오픈소스 분산 발행-구독 메시징 시스템"

"웹사이트, 애플리케이션, 센서 등에서 취합한 데이터 스트림을 실시간으로 관리하기 위한 오픈소스 시스템"


아파치 카프카의 대두

비즈니스, 소셜 등 다양한 애플리케이션에 의해 실시간 정보가 끊임 없이 생성

실시간 정보를 다양한 종류의 수신자에게 전달할 수 있는 수단이 필요

대부분 정보를 생산하는 애플리케이션과 정보를 수신하는 애플리케이션은 분리되어 있고 서로 접근이 불가능함

정보 컨슈머와 정보 프로듀서의 깔끔한 연동이 필요하다!


아파치 카프카의 디자인 컨셉

정보 컨슈머는 정보 프로듀서에 대해 알 필요 없고 프로듀서는 누가 최종컨슈머인지 알 필요 없이 서로 연동

  • 비휘발성 메시징 : 다른 인메모리 처리방식과 달리 디스크 구조로 디자인 -> 그럼에도 독특한 구조로 빠르다!
  • 높은 처리량 : 일반 상용 서버에서도 초당 추백만 건의 메시지 처리
  • 분산 처리 : 파티셔닝을 지원해 다수의 카프카 서버에 분산처리가 가능하고 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초 이하의 응답시간과 즉각적 의사결정을 돕기위한 초당 수백만 건의 이벤트 분석에 사용

"2013년 까지의 빅데이터는 하둡에 쌓인 막대한 양의 데이터를 의미했다.
 현재는 실시간으로 고객과 소통하고 맥락적 경험을 제공하기 위해 데이터를 더 빠르게 이해하는 능력이 필요하다.
 사물 인터넷이 모바일의 두 번째 물결과도 같다.
 모든 IT업체들은 데이터의 눈사태에 대비하고 있다.
 2014년까지는 하둡이 전부였고 그 다음이 스파크, 현재는 하둡, 스파크, 카프카다
 이들이 분석 아키텍처에서 데이터 취합 파이프라인의 삼두마차다" _ 홉킨스(포레스트 부회장)



출처 : 아파치 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




아래 링크 클릭하여 직접 구매하기

아파치 Kafka 따라잡기:확장성과 고가용성을 지닌 메시지 브로커, 에이콘출판


*파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형