Apache Kafka 개요
지난 글에서 kafka설치 및 설정, 그리고 서버 기동과 간단한 테스트를
진행해 보았다.
오늘은 kafka의 소개 내용을 간단하게 요약해보겠다.
이미 많은 블로그에 원문에 대한 번역에서부터 심층 분석까지 다양한
자료들이 포스팅 되어있으니 나는 그냥 개요만 짚어보련다~
kafka 공식 홈페이지의 indroduction을 보면 다음과 같은 내용으로 시작한다.
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.
뭐 거의 동어 반복이다. 로그 저장에 대한 분산과 분할과 복제. 그리고 메시징 시스템인데
독특하게 디자인 되었단다. 일단 분산, 분할, 복제에 돼지꼬리 땡땡 하고...
조금 더 구체적으로 가보자
- 메시지는 topic이라고 불리는 일종의 카테고리를 통해 관리된다.
- producer를 통해 Kafka의 topic으로 메시지를 발행한다.
- consumer를 통해 topic으로부터 생성된 메시지들을 구독한다.
- Kafka는 broker라고 불리는 하나 이상의 서버 클러스터로 실행된다.
Kafka 구성1
지난 번 포스팅의 테스트 과정과 비교하면서 살펴보자
- “kafka-topics.sh --create…”를 통해서 test라는 이름의 topic을 생성.
- “kafka-console-producer.sh --broker-list…”를 통해 메시지를 생성.
- “kafka-console-consumer.sh --zookeeper…”를 통해 메시지를 확인.
broker에 대해서는 2번째 kafka-console-producer.sh 진행 시 --broker-list라는
옵션을 통해 메시지를 broker로 전달했다는 것을 알 수 있다.
이런 과정들 (클라이언트와 서버간의 통신)는 단순하고, 고성능이며 언어에 구애받지 않는
TCP 프로토콜을 통해 이루어진다.
또한 Kafka에서는 기본적으로 java 클라이언트를 제공하지만 다양한 언어들을 이용하여
클라이언트를 구현할 수 있다. (다음 링크에서 사용 가능한 클라이언트 언어를 확인할 수
있다 : https://cwiki.apache.org/confluence/display/KAFKA/Clients )
각각의 개념에 대해 좀 더 상세하게 알아보자
Topic과 로그
토픽은 Kafka 클러스터에 의해 partition으로 분할되어 관리된다.
아래 그림과 같음)
토픽 개념도2
각 파티션에는 메시지들이 순차적으로 쌓인다.
이 메시지들은 정렬되어 저장되며 각각을 구분할 수 있는 offset이라는 ID가
부여된다.
이렇게 쌓인 메시지들은 사용되었는지 여부와 상관 없이 일정 시간동안 유지된다.
이런 기능들은 데이터 크기를 효율적으로 사용할 수 있게 해준다.
유지 시간은 Kafka설정에이 있으며 기본값은 168(7일)시간이다
설정 항목은 log.retention.hours이다.
각각의 consumer에도 offset이라고 하는 메타데이터가 있어 메시지의
offset과 관련하여 작동한다.
partition 분할을 통해 데이터 용량의 확장과 병렬 처리의 잇점을 얻을 수 있다.
- 이미지 출처 : http://kafka.apache.org/documentation.html#introduction ↩︎
- 이미지 출처 : http://kafka.apache.org/documentation.html#introduction ↩︎
'Study > 빅데이터' 카테고리의 다른 글
[간보기 | Kafka] Apache Kafka 개요 - 3 (0) | 2016.04.03 |
---|---|
[간보기 | Kafka] Apache Kafka 개요 - 2 (0) | 2016.03.27 |
[간보기 | kafka] Apache kafka 시작하기 (0) | 2016.03.20 |
[간보기 | Kafka] 3년만에 찾은 솔루션 kafka...ㅠ.ㅠ (0) | 2016.03.20 |
[HBase] 쉽지만 쉽지 않은 설치... (4) | 2013.12.19 |