Step 1. Download kafka

curl http://mirror.navercorp.com/apache/kafka/<version>/kafka_<version>.tgz > kafka_<version>.tgz
tar -xzf kafka_<version>.tgz
cd kafka_<version>

Step 2. Run zookeeper 이미 설치해둔 주키퍼가 있으면 넘어가도 상관없다.
없다면 kafka에 내장된 주키퍼를 사용한다.

./bin/zookeeper-server-start.sh ./config/zookeeper.properties

여기서는 주키퍼는 Single Node로만 사용한다.

Step 3. Create Topic 토픽 생성을 생성한다.

./bin/kafka-topic.sh --create zookeeper localhost:2181 --replication-factor 1 partitions 1 --topic <topic name>

replication-factor는 1로 한다.(처음에는 single node kafka로)
partition은 병렬처리를 위한 것이니까, 일단은 1로 설정한다.

  • 존재하지 않는 토픽이 들어오면, 자동으로 토픽을 생성한다. (replication, partitions default 옵션은 아직 잘 모른다…)
  • zookeeper의 ip와 port는 default를 사용함

Step 4. Check topic list

./bin/kafka-topic.sh --list --zookeeper localhost:2181

Step 5. Describe topic

./bin/kafka-topic.sh --describe zookeeper localhost:2181 --topic  <topic name>
Topic: <topic name> PartitionCount:1 ReplicationFactor: 1 Configs:
   Topic: <topic name> Partition: 0  Leader: 0(broker id) Replica: 0 Isr: 0

로 결과가 나온다.

각각의 파라미터에 대해 간략하게 설명하면,
PartitionCount: 파티션의 개수
ReplicationFactor: Replica의 개수, 지금은 Single Node이므로 1밖에 되지 않는다.
Partition: partition 번호
Leader: 현재 이 Topic Leader(broker id로 표현된다.)
Replica: 이 topic 데이터를 갖는 노드들
Isr: leader와 싱크를 맞춘 노드들

Step 6. Producer, Consumer

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic <topic name>
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic <topic name> --from-beginning

** Step 7. Multi-broker cluster kafka server.properties file 중 4가지 파라미터를 바꿔준다.
broker.id: broker의 unique한 아이디(겹치면 안 된다.)
log.dir: log directory path
zookeeper.connect:
listeners: (PLAINTEXT://ip:port or SSL, CLIENT, etc...)
로 설정하고 각 kafka를 구동하면 된다.

Reference: apache kafka