Kafka部署, 簡單應(yīng)用(一)

Apache項目, 分布式消息應(yīng)用, 具有很高的擴展性, 高的吞吐量, 大數(shù)據(jù)中扮演著很重要的角色

下載地址:

http://kafka.apache.org/downloads

版本號:?

kafka_2.11-0.11.0.2


解壓和修改配置文件

解壓到當(dāng)前目錄下:?

$ tar -zxvf?kafka_2.11-0.11.0.2.tgz -C ./

進入到config目錄下:?

$ vi server.properties

#打開注釋, 表示, topic可以刪除

delete.topic.enable=true

# zookeeper地址:多個是用 "," 隔開

zookeeper.connect=hadoop106:2181,hadoop107:2181,hadoop108:2181

#設(shè)置位置標(biāo)識(這里我配置的是我機器的ip號)

broker.id=106

#設(shè)置log生成地址(絕對路徑)

log.dirs=/opt/module/kafka_2.11-0.11.0.2/kafkaLogs

退出vi

在kafka目錄下穿件一個文件夾存放log日志

$ mkdir kafkaLogs


scp 分發(fā)到其他機器上, 注意: broker.id的其他機器上需要修改, 集群中必須唯一.

啟動:(分別在集群機器上后臺啟動)

$?bin/kafka-server-start.sh config/server.properties 1>dev/null 2>&1

$?bin/kafka-server-start.sh -daemon config/server.properties

停止: (分別在集群的其他機器上停止)

$?bin/kafka-server-stop.sh?


演示功能: (這里使用機器號hadoop106做演示, 當(dāng)然集群下使用其他的機器一樣的效果)

一. 創(chuàng)建topic

$?bin/kafka-topic.sh --zookeeper hadoop106:2181 --create --replication-factor 3 --partitions 3 --topic topic_name

1.replication-factor : 副本數(shù)量

2.partitions : 分區(qū)數(shù)量

3.topic : 定義topic名稱

二. 查看topic列表

$?bin/kafka-topic.sh --zookeeper hadoop106 --list

三. 刪除topic

$?bin/kafka-topic.sh --zookeeper hadoop106 --delete --topic topic_name

四. 生產(chǎn)者producer (注意: 端口號9092是producer端口號)

$?bin/kafka-console-producer.sh --broker-list hadoop106:9092 --topic topic_name

五. 消費者consumer(把所有的消息打印到控制臺上)

$?bin/kafka-console-consumer.sh --zookeeper hadoop106:2181?--from-beginning --topic topic_name

六.查看topic詳細信息

$?bin/kafka-topics.sh --zookeeper hadoop106:2181 --describe --topic topic_name


在部署kafka應(yīng)用是, 需要注意的是, kafka和zookeeper是強依賴關(guān)系, 必須配合zookeeper集群部署, 這里只是簡單部署引用和演示, 具體方便如果想深究的話, 各位小伙伴可以結(jié)合官方開發(fā)文檔, 協(xié)助開發(fā)學(xué)習(xí), 后期還會加入kafka streaming的方法演示, 請期待...


以下了解Kafka消費過程


Kafka消費模型

消費分區(qū)(partition):

kafka的模型, 和rokectMQ基本一致, 生產(chǎn)者在寫入消息過程中, 會根據(jù)該消息的topic的生產(chǎn)過程中設(shè)置的屬性, 寫入到分區(qū)中, 理論上分區(qū)是partition Log, 消息會將數(shù)據(jù)寫入到Log日志中, 由于消息是異步發(fā)送的, 而且是順序消費, 每一個分區(qū)都是一個獨立的, 有序的, 不可變的記錄序號列, 所以分區(qū)帶來的是很高的擴展性, 分區(qū)會根據(jù)數(shù)據(jù)的大小長度, 進行分區(qū)消費.?

消費副本(replication):

在分布式的集群中, 數(shù)據(jù)副本可以起到集群宕機的情況下, 其他機器可以正常的消費, 不影響應(yīng)用的消費, 在沒有副本的狀態(tài)下, 一旦broker.id宕機, 那么可能導(dǎo)致生產(chǎn)應(yīng)用的崩潰或者業(yè)務(wù)數(shù)據(jù)的丟失等等, 為了避免這種情況, 我們可以進行分區(qū), 同時producer也不能再將數(shù)據(jù)存于其上的patition, 引入replication之后,同一個partition可能會有多個replication,而這時需要在這些replication之間選出一個leader,producer和consumer只與這個leader交互,其它replication作為follower從leader 中復(fù)制數(shù)據(jù).?

寫入流程:


Kafka寫入流程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容