apache-kafka 튜토리얼
apache-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:2181 및 localhost: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 , port 및 logfile 구성 등록 정보를 변경합니다.
부:
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