Apache Kafka -4 基本操作

Apache Kafka教程 之 Apache Kafka - 基本操作

http://blogxinxiucan.sh1.newtouch.com/

原文地址: http://blogxinxiucan.sh1.newtouch.com/2017/07/13/Apache-Kafka-基本操作/

Apache Kafka - 基本操作

首先讓我們開始實現單節點單個代理配置,然后我們將我們的設置遷移到單節點多代理配置。希望你現在可以在你的機器上安裝Java,ZooKeeper和Kafka。在移動到Kafka群集設置之前,首先需要啟動ZooKeeper,因為Kafka Cluster使用ZooKeeper。

啟動ZooKeeper

打開一個新終端并鍵入以下命令 -

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

要啟動Kafka Broker,請鍵入以下命令 -

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

啟動Kafka Broker后,在ZooKeeper終端上鍵入命令jps,您將看到以下響應 -

821 QuorumPeerMain
928 Kafka
931 Jps

現在你可以看到在QuorumPeerMainZooKeeper守護進程的終端上運行兩個守護進程,另一個是Kafka守護進程。

單節點單代理配置

在此配置中,您有一個ZooKeeper和代理ID實例。以下是配置它的步驟 -

創建Kafka主題 - Kafka提供了名為kafka-topics.sh的命令行實用工具,用于在服務器上創建主題。打開新終端并鍵入以下示例。

句法

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

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1   
--partitions 1 --topic Hello-Kafka

我們剛剛創建了一個名為Hello-Kafka的主題,具有單個分區和一個副本因素。以上創建的輸出將類似于以下輸出 -

輸出 - 創建主題Hello-Kafka

創建主題后,您可以在Kafka代理終端窗口中獲??取通知,并在config / server.properties文件中的“/ tmp / kafka-logs /”中指定的創建主題的日志。

主題列表

要獲取Kafka服務器中的主題列表,可以使用以下命令 -

句法

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

output

Hello-Kafka

由于我們創建了一個主題,它將僅列出Hello-Kafka。假設,如果創建多個主題,您將在輸出中獲取主題名稱。

啟動生產者發送消息
句法

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

從上述語法,生產者命令行客戶端需要兩個主要參數 -

Brokers列表 - 我們要發送消息的Brokers列表。在這種情況下,我們只有一個Brokers。Config / server.properties文件包含代理端口ID,因為我們知道我們的代理正在偵聽端口9092,因此您可以直接指定它。

主題名稱 - 以下是主題名稱的示例。

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

生產者將等待stdin的輸入并發布到Kafka集群。默認情況下,每條新行都將作為新消息發布,然后在config / producer.properties文件中指定默認的生產者屬性。現在,您可以在終端中輸入幾行消息,如下所示。

output

$ bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Hello-Kafka[2016-01-16 13:50:45,931] 
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message

開始消費者接收消息
與生產者類似,默認消費者屬性在config / consumer.proper-ties文件中指定。打開一個新終端,并鍵入以下消息消息語法。

句法

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name 
--from-beginning

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka 
--from-beginning

output

Hello
My first message
My second message

最后,您可以從生產者的終端輸入消息,并看到它們出現在消費者終端中。到目前為止,您對具有單個代理的單節點群集有非常好的了解。現在讓我們來看看多個Brokers的配置。

單個節點多個代理配置

在轉到多個代理群集設置之前,首先啟動您的ZooKeeper服務器。

創建多個KafkaBrokers - 我們在con-fig / server.properties中已經有一個Kafka代理實例。現在我們需要多個代理實例,因此將現有的server.prop-erties文件復制到兩個新的配置文件中,并將其重命名為server-one.properties和server-two.prop-erties。然后編輯兩個新文件并分配以下更改 -

配置/ server-one.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1

配置/ server-two.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2

啟動多個Brokers - 在三個服務器上進行了所有更改后,再打開三個新終端,逐個啟動每個代理。

Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties

現在我們有三個不同的Brokers在機器上運行。嘗試通過在ZooKeeper終端上鍵入jps來檢查所有守護程序,然后您將看到響應。

創建主題
讓我們為這個主題分配三個復制因子值,因為我們有三個不同的Brokers運行。如果您有兩個Brokers,則分配的副本值將為兩個。

句法

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

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic Multibrokerapplication

output

created topic “Multibrokerapplication”

將描述命令用于檢查哪個代理對當前創建的主題聽如下所示-

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

output

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Topic:Multibrokerapplication    PartitionCount:1 
ReplicationFactor:3 Configs:
   
Topic:Multibrokerapplication Partition:0 Leader:0 
Replicas:0,2,1 Isr:0,2,1

從上面的輸出,我們可以得出結論,第一行給出了所有分區的摘要,顯示了我們已經選擇的主題名稱,分區計數和復制因子。在第二行中,每個節點將成為隨機選擇的分區部分的引導者。

在我們的例子中,我們看到我們的第一個Brokers(有broker.id 0)是領導者。然后副本:0,2,1意味著所有的券商復制的話題終于ISR是一組在同步副本。那么這是目前還沒有出現并且被領導者趕上的副本的子集。

啟動生產者發送消息
此過程與單個代理程序設置保持相同。

bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Multibrokerapplication

output

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message

開始消費者接收消息

此過程與單個代理設置中所示的相同。

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion --from-beginning

output

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message

基本主題操作
在本章中,我們將討論各種基本主題操作。

修改主題
您已經了解如何在Kafka群集中創建主題。現在讓我們使用以下命令修改創建的主題

句法

bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name 
--parti-tions count

We have already created a topic “Hello-Kafka” with single partition count and one replica factor. 
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181 
--alter --topic Hello-kafka --parti-tions 2

output

WARNING: If partitions are increased for a topic that has a key, 
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

刪除主題

要刪除主題,可以使用以下語法。

句法

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka

output

> Topic Hello-kafka marked for deletion

注 -如果delete.topic.enable未設置為true,則不會有任何影響

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,933評論 18 139
  • ** 今天看了一下kafka官網,嘗試著在自己電腦上安裝和配置,然后學一下官方document。** Introd...
    RainChang閱讀 5,049評論 1 30
  • Kafka官網:http://kafka.apache.org/入門1.1 介紹Kafka? 是一個分布式流處理系...
    it_zzy閱讀 3,912評論 3 53
  • Kafka入門經典教程-Kafka-about云開發 http://www.aboutyun.com/threa...
    葡萄喃喃囈語閱讀 10,874評論 4 54
  • kafka的定義:是一個分布式消息系統,由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,361評論 1 15