Kafka 설치 방법

Kafka를 설치하고 설정하는 단계는 다음과 같습니다:


1. 사전 준비

  • Kafka를 실행하려면 Java(JDK 8 이상)와 ZooKeeper(또는 KRaft)를 설치해야 합니다.
  • Kafka 설치를 위한 사양:
    • CPU: 클러스터 환경에서는 여러 코어를 권장
    • RAM: 최소 8GB 이상 권장
    • 디스크: SSD 사용 권장 (빠른 I/O 속도를 위해)

2. Kafka 다운로드

  1. Apache Kafka 공식 사이트에서 최신 버전을 다운로드합니다.
  2. 압축을 해제합니다:
     
    tar -xzf kafka_<version>.tgz cd kafka_<version>

3. ZooKeeper 실행

Kafka는 기본적으로 ZooKeeper에 의존해 메타데이터를 관리합니다. (Kafka 2.8 이상부터 KRaft로 Zookeeper 없이 설정 가능)

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

4. Kafka 브로커 실행

Kafka 브로커를 시작합니다.

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

5. 토픽 생성

Kafka에서 데이터를 저장할 토픽을 생성합니다.

 
bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

6. 프로듀서 실행

Kafka에 메시지를 보내는 프로듀서를 실행합니다.

 
bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

메시지를 입력하면 해당 메시지가 Kafka에 저장됩니다.

7. 컨슈머 실행

Kafka에서 메시지를 읽는 컨슈머를 실행합니다.

 
bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

Kafka 동작 원리

Kafka의 동작은 다음 구성 요소를 중심으로 이해할 수 있습니다:

1. 토픽과 파티션

  • Kafka는 데이터를 토픽이라는 논리적 채널에 저장합니다.
  • 각 토픽은 여러 파티션으로 나뉘어 데이터를 분산 저장합니다.
    • 파티션은 순차적으로 데이터를 저장하며, 메시지는 **오프셋(offset)**이라는 고유 번호를 가집니다.

2. 프로듀서

  • 프로듀서는 데이터를 Kafka 토픽으로 전송합니다.
  • 데이터를 어느 파티션에 저장할지 결정:
    • 기본적으로 라운드로빈 방식
    • 특정 키를 지정해 동일한 파티션에 저장 가능 (e.g., 고객 ID 기반)

3. 브로커

  • Kafka 클러스터의 각 노드는 브로커로 작동합니다.
  • 브로커는 데이터를 저장하고, 소비자가 요청할 때 데이터를 제공합니다.
  • 토픽의 각 파티션은 리더와 여러 팔로워로 구성되며, 리더가 데이터를 처리하고 팔로워가 복제합니다.

4. 컨슈머

  • 컨슈머는 Kafka에서 데이터를 읽어옵니다.
  • 컨슈머 그룹을 사용해 데이터 병렬 처리 가능:
    • 동일 그룹의 컨슈머는 동일한 파티션 데이터를 처리하지 않습니다.

5. 복제와 내구성

  • Kafka는 각 파티션의 데이터를 여러 브로커에 복제해 장애 복구를 지원합니다.
    • replication-factor를 설정해 복제본 수를 지정.
    • 한 브로커가 다운되더라도 다른 브로커가 데이터를 제공합니다.

Kafka 데이터 흐름 요약

  1. 프로듀서가 메시지를 생성하여 토픽으로 전송.
  2. 메시지는 브로커에 의해 저장되고, 파티션으로 분산.
  3. 컨슈머가 토픽에서 메시지를 읽어와 처리.

Kafka의 이러한 구조는 높은 확장성, 내구성, 실시간 처리를 제공합니다.


rcv_info_to_kafka.cs
0.00MB

'KAFKA' 카테고리의 다른 글

분산 이벤트 스트리밍 플랫폼(Kafka)  (0) 2025.01.21
APACHE KAFKA 데이타마이그래이션 작업(102)  (0) 2019.10.31

Kafka는 Apache Software Foundation에서 개발한 오픈소스 분산 이벤트 스트리밍 플랫폼으로, 대규모 데이터 처리를 위해 설계되었습니다. 주로 실시간 데이터 스트리밍, 로그 처리, 이벤트 기반 애플리케이션 등에 사용됩니다.

주요 특징

  1. 분산 시스템
    Kafka는 여러 서버로 구성된 클러스터로 동작하며, 데이터를 분산 처리하여 높은 가용성과 확장성을 제공합니다.
  2. 퍼블리셔-구독자 모델 (Pub/Sub)
    데이터는 생산자(Producer)가 주제를 통해 Kafka로 전송하고, 소비자(Consumer)가 해당 데이터를 구독하여 처리합니다.
  3. 높은 처리량
    초당 수백만 건의 메시지를 처리할 수 있으며, 실시간 대규모 데이터 처리에 적합합니다.
  4. 내구성 및 안정성
    데이터를 디스크에 저장하고, 복제를 통해 데이터 손실 위험을 최소화합니다.
  5. 확장성
    클러스터에 새로운 브로커를 추가하여 쉽게 확장할 수 있습니다.

Kafka의 구성 요소

  1. Topic (토픽)
    데이터를 구분하는 논리적인 채널입니다.
    예: payment-transactions, user-logs.
  2. Producer (생산자)
    데이터를 토픽에 게시하는 역할을 합니다.
  3. Consumer (소비자)
    토픽에서 데이터를 읽어오는 역할을 합니다.
  4. Broker (브로커)
    데이터를 저장하고 전달하는 Kafka 서버입니다.
  5. Partition (파티션)
    토픽을 물리적으로 분할하여 데이터를 저장하고 분산 처리 성능을 향상시킵니다.
  6. Zookeeper
    Kafka 클러스터의 상태를 관리하고 노드 간 동기화를 지원합니다.
    (Kafka 2.8.0부터 Zookeeper 없이도 작동 가능하도록 KRaft(Kafka Raft)로 전환 중)

Kafka의 주요 활용 사례

  1. 실시간 로그 수집 및 처리
    애플리케이션 또는 시스템 로그 데이터를 실시간으로 수집하여 분석.
  2. 실시간 데이터 스트리밍
    금융 거래, IoT 센서 데이터, 소셜 미디어 활동 등을 실시간으로 처리.
  3. 메시지 브로커
    비동기 애플리케이션 간 데이터 전송.
  4. 데이터 파이프라인
    다양한 소스에서 데이터를 수집하고 데이터베이스 또는 데이터 웨어하우스에 저장.

Kafka는 Netflix, LinkedIn, Uber와 같은 대규모 서비스를 운영하는 회사들에서 실시간 데이터 처리를 위해 널리 사용되고 있습니다.

rcv_info_to_kafka.cs
0.00MB

'KAFKA' 카테고리의 다른 글

Kafka 설치 방법  (0) 2025.01.21
APACHE KAFKA 데이타마이그래이션 작업(102)  (0) 2019.10.31

#APACHE KAFKA 데이타마이그래이션 작업

 

> cd /home1/irteamsu/kafka2/kafka_2.11-1.1.0/

 

> base

> bin/kafka-server-stop.sh

> bin/zookeeper-server-stop.sh

 

########################cp -R /tmp/kafka-logs/ /home1/irteamsu/kafkadata/

 

cp /tmp/kafka-logs/20180416-0/* /home1/irteamsu/kafkadata/kafka-logs/20180416-0/

cp /tmp/kafka-logs/recovery-point-offset-checkpoint /home1/irteamsu/kafkadata/kafka-logs/

cp /tmp/kafka-logs/log-start-offset-checkpoint /home1/irteamsu/kafkadata/kafka-logs/

cp /tmp/kafka-logs/replication-offset-checkpoint /home1/irteamsu/kafkadata/kafka-logs/

 

 

> /home1/irteamsu/kafka2/kafka_2.11-1.1.0/config/server.properties 변경

 

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

> bin/kafka-server-start.sh config/server.properties &

 

 

#APACHE KAFKA 데이타마이그래이션 작업 확인

 

> bin/kafka-topics.sh --list --zookeeper localhost:2181

 

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$ netstat -an | grep 2181

tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:49964         127.0.0.1:2181          TIME_WAIT

tcp        0      0 127.0.0.1:35802         127.0.0.1:2181          ESTABLISHED

tcp        0      0 127.0.0.1:2181          127.0.0.1:35802         ESTABLISHED

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

 

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

[irteamsu@cdb021.imgr 20180509-0]$ netstat -an | grep 9092

tcp        0      0 0.0.0.0:9092            0.0.0.0:*               LISTEN

tcp        0     52 10.113.68.29:9092       10.113.68.28:59222      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59274      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59254      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59268      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59278      ESTABLISHED

tcp        0      0 127.0.0.1:9092          127.0.0.1:42516         ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59276      ESTABLISHED

tcp        0     44 10.113.68.29:9092       10.113.68.28:59246      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59272      ESTABLISHED

tcp        0     72 10.113.68.29:52474      10.113.68.29:9092       ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59234      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59270      ESTABLISHED

tcp        0     44 10.113.68.29:9092       10.113.68.28:59240      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59266      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59262      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59284      ESTABLISHED

tcp        0     52 10.113.68.29:9092       10.113.68.28:59227      ESTABLISHED

tcp        0     52 10.113.68.29:9092       10.113.68.28:59226      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.29:52474      ESTABLISHED

tcp        0     44 10.113.68.29:9092       10.113.68.28:59242      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59250      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59248      ESTABLISHED

tcp        0     52 10.113.68.29:9092       10.113.68.28:59252      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59446      ESTABLISHED

tcp        0     52 10.113.68.29:9092       10.113.68.28:59230      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59224      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59286      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59280      ESTABLISHED

tcp        1      0 10.113.68.29:52470      10.113.68.29:9092       CLOSE_WAIT

tcp        0      0 10.113.68.29:9092       10.113.68.28:59258      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59256      ESTABLISHED

tcp        0     44 10.113.68.29:9092       10.113.68.28:59244      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59232      ESTABLISHED

tcp        0     52 10.113.68.29:9092       10.113.68.28:59236      ESTABLISHED

tcp        0      0 127.0.0.1:42516         127.0.0.1:9092          ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59220      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59448      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59264      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:59238      ESTABLISHED

[irteamsu@cdb021.imgr 20180509-0]$

 

 

 

 

 

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$ bin/kafka-topics.sh --list --zookeeper localhost:2181

[2018-04-16 18:14:17,021] INFO Accepted socket connection from /127.0.0.1:54720 (org.apache.zookeeper.server.NIOServerCnxnFactory)

[2018-04-16 18:14:17,024] INFO Client attempting to establish new session at /127.0.0.1:54720 (org.apache.zookeeper.server.ZooKeeperServer)

[2018-04-16 18:14:17,025] INFO Established session 0x162cdbb20e00001 with negotiated timeout 30000 for client /127.0.0.1:54720 (org.apache.zookeeper.server.ZooKeeperServer)

20180411

20180412

20180413

20180414

20180415

20180416

20180417

20180418

20180419

20180420

20180421

20180422

20180423

20180424

20180425

20180426

20180427

20180428

20180429

20180430

20180431

 

[2018-04-16 18:14:17,066] INFO Processed session termination for sessionid: 0x162cdbb20e00001 (org.apache.zookeeper.server.PrepRequestProcessor)

[2018-04-16 18:14:17,067] INFO Closed socket connection for client /127.0.0.1:54720 which had sessionid 0x162cdbb20e00001 (org.apache.zookeeper.server.NIOServerCnxn)

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$ netstat -an | grep 2181

tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:54646         127.0.0.1:2181          ESTABLISHED

tcp        0      0 127.0.0.1:54720         127.0.0.1:2181          TIME_WAIT

tcp        0      0 127.0.0.1:2181          127.0.0.1:54646         ESTABLISHED

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$ netstat -an | grep 9092

tcp        0      0 0.0.0.0:9092            0.0.0.0:*               LISTEN

tcp        0      0 10.113.68.29:9092       10.113.68.28:45470      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45450      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45414      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45476      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45424      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45440      ESTABLISHED

tcp        0      0 127.0.0.1:9092          127.0.0.1:48314         ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45426      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45442      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.29:58272      ESTABLISHED

tcp        0      0 127.0.0.1:48314         127.0.0.1:9092          ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45462      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45436      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45432      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45458      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45474      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45446      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45434      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45472      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.29:58268      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45460      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45420      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45464      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45444      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45438      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45422      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45452      ESTABLISHED

tcp        0      0 10.113.68.29:58268      10.113.68.29:9092       ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45428      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45448      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45418      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45478      ESTABLISHED

tcp        0      0 10.113.68.29:58272      10.113.68.29:9092       ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45480      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45454      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45466      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45430      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.10:53490      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45456      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45468      ESTABLISHED

tcp        0      0 10.113.68.29:9092       10.113.68.28:45416      ESTABLISHED

[irteamsu@cdb021.imgr kafka_2.11-1.1.0]$

'KAFKA' 카테고리의 다른 글

Kafka 설치 방법  (0) 2025.01.21
분산 이벤트 스트리밍 플랫폼(Kafka)  (0) 2025.01.21

+ Recent posts