apache-kafkaapache-kafka 시작하기


비고

Kafka는 분산, 분할, 복제 된 커밋 로그 서비스로 구현되는 높은 처리량의 게시 - 가입 메시징 시스템입니다.

공식 카프카 사이트에서 가져온 것

빠른

단일 Kafka 브로커는 수천 명의 클라이언트로부터 초당 수백 메가 바이트의 읽기 및 쓰기를 처리 할 수 ​​있습니다.

확장 성

Kafka는 단일 클러스터가 대규모 조직의 중앙 데이터 백본 역할을하도록 설계되었습니다. 다운 타임없이 탄력적이고 투명하게 확장 될 수 있습니다. 데이터 스트림은 분할되어 단일 시스템의 기능보다 큰 데이터 스트림을 허용하고 조정 된 소비자 클러스터를 허용하도록 시스템 클러스터에 분산됩니다.

튼튼한

메시지는 디스크에 유지되고 클러스터 내에서 복제되어 데이터 손실을 방지합니다. 각 브로커는 성능에 영향을 미치지 않고 테라 바이트의 메시지를 처리 ​​할 수 ​​있습니다.

디자인으로 배포

Kafka는 강력한 내구성과 내결함성 보장을 제공하는 현대적인 클러스터 중심 디자인입니다.

설치 또는 설정

1 단계 . Java 7 또는 8 설치

2 단계 . Apache Kafka는 http://kafka.apache.org/downloads.html 에서 다운로드하십시오.

예를 들어 Apache Kafka 0.10.0.0을 다운로드 해 보겠습니다.

3 단계 . 압축 파일의 압축을 풉니 다.

Linux :

tar -xzf kafka_2.11-0.10.0.0.tgz
 

창에서 : 오른쪽 클릭 -> 여기에서 추출

4 단계 . 사육사를 시작하십시오

cd kafka_2.11-0.10.0.0
 

Linux :

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

Windows :

bin/windows/zookeeper-server-start.bat config/zookeeper.properties
 

5 단계 . 카프카 서버 시작

Linux :

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

Windows :

bin/windows/kafka-server-start.bat config/server.properties
 

소개

Apache Kafka ™는 분산 형 스트리밍 플랫폼입니다.

어떤 의미인가?

1 - 레코드 스트림을 게시하고 구독 할 수 있습니다. 이 점에서 이는 메시지 대기열 또는 엔터프라이즈 메시징 시스템과 유사합니다.

2-It는 내결함성있는 방식으로 레코드 스트림을 저장할 수있게합니다.

3 - 발생하는 레코드 스트림을 처리 할 수 ​​있습니다.

그것은 두 가지 광범위한 응용 프로그램에 사용됩니다.

1 - 시스템 또는 응용 프로그램간에 데이터를 안정적으로 얻는 실시간 스트리밍 데이터 파이프 라인 구축

2 - 데이터 스트림을 변환하거나 이에 반응하는 실시간 스트리밍 애플리케이션 구축

Kafka 콘솔 스크립트는 Unix 기반 및 Windows 플랫폼에서 서로 다릅니다. 예에서 플랫폼에 따라 확장을 추가해야 할 수도 있습니다. Linux : 스크립트는 bin/ .sh 확장자로 위치합니다. Windows : 스크립트는 bin\windows\ 에 있으며 .bat 확장자로되어 있습니다.

설치

1 단계 : 코드를 다운로드 하여 압축을 푸십시오.

tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
 

2 단계 : 서버를 시작하십시오.

나중에 주제를 삭제하려면 server.properties 열고 delete.topic.enable 을 true로 설정 delete.topic.enable .

카프카는 사육사에게 크게 의존하기 때문에 먼저 카프카를 시작해야합니다. 설치하지 않았다면 kafka와 함께 패키지 된 편의 스크립트를 사용하여 빠르고 단순한 단일 노드 ZooKeeper 인스턴스를 얻을 수 있습니다.

zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
 

3 단계 : 모든 것이 실행 중인지 확인

이제는 사육사가 localhost:2181localhost:6667 의 단일 kafka 브로커를 수신 대기해야합니다.

주제 만들기

하나의 브로커 만 있으므로 복제 요소가없고 단지 하나의 파티션이있는 주제를 만듭니다.

kafka-topics --zookeeper localhost:2181 \
    --create \
    --replication-factor 1 \
    --partitions 1 \
    --topic test-topic
 

주제를 확인하십시오 :

kafka-topics --zookeeper localhost:2181 --list
test-topic

kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic    PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test-topic   Partition: 0    Leader: 0   Replicas: 0 Isr: 0
 

메시지 송수신

소비자 시작 :

kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
 

다른 터미널에서 생산자를 시작하고 메시지를 보내십시오. 기본적으로이 도구는 특별한 인코딩없이 각 줄을 별도의 메시지로 브로커에 보냅니다. 몇 줄을 쓰고 CTRL + D 또는 CTRL + C를 눌러 종료하십시오.

kafka-console-producer --broker-list localhost:9092 --topic test-topic   
a message
another message
^D
 

메시지는 고객의 주소에 표시되어야합니다.

카프카를 그만둬 라.

kafka-server-stop 
 

다중 브로커 클러스터 시작

위의 예제는 하나의 브로커 만 사용합니다. 실제 클러스터를 설정하려면 하나 이상의 kafka 서버를 시작하면됩니다. 그들은 자동으로 스스로 조정할 것입니다.

1 단계 : 충돌을 피하기 위해 각 브로커에 대한 server.properties 파일을 만들고 id , portlogfile 구성 등록 정보를 변경합니다.

부:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
 

각 파일의 속성을 편집합니다 (예 :

vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1

vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
 

2 단계 : 3 명의 브로커를 시작합니다.

    kafka-server-start config/server.properties &
    kafka-server-start config/server-1.properties &
    kafka-server-start config/server-2.properties &
 

복제 된 주제 만들기

kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic

kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0
 

이번에는 더 많은 정보가 있습니다.

  • "leader"는 주어진 파티션에 대한 모든 읽기 및 쓰기를 담당하는 노드입니다. 각 노드는 임의로 선택된 파티션 부분의 리더가됩니다.
  • "복제본"은 해당 파티션이 리더인지 또는 현재 살아 있는지 여부에 관계없이이 파티션의 로그를 복제하는 노드 목록입니다.
  • "isr"은 "동기화 된"복제본 집합입니다. 이것은 현재 살아 있고 리더에게 잡힌 복제본 목록의 하위 집합입니다.

이전에 작성한 주제는 변경되지 않습니다.

내결함성 테스트

새 주제에 메시지를 게시하십시오.

kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
 

리더를 죽이십시오 (이 예에서는 1). Linux :

ps aux | grep server-1.properties
kill -9 <PID>
 

Windows의 경우 :

wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties" 
taskkill /pid <PID> /f
 

무슨 일이 일어 났는지 보아라.

kafka-topics --zookeeper localhost:2181  --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 2   Replicas: 1,2,0 Isr: 2,0
 

리더쉽은 브로커 2와 "1"로 바뀌 었습니다. 그러나 메시지는 여전히 존재합니다 (소비자가 직접 체크 아웃하십시오).

대청소

다음을 사용하여 두 개의 주제를 삭제하십시오.

kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic