最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

kafka安裝部署超詳細(xì)步驟

 更新時(shí)間:2021年11月26日 10:19:18   作者:咸魚最牛逼  
這篇文章主要介紹了kafka安裝部署的詳細(xì)步驟,主要應(yīng)用場(chǎng)景是:日志收集系統(tǒng)和消息系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

概述

Kafka是最初由Linkedin公司開發(fā),是一個(gè)分布式、分區(qū)的、多副本的、多訂閱者,基于zookeeper協(xié)調(diào)的分布式日志系統(tǒng)(也可以當(dāng)做MQ系統(tǒng)),常見可以用于web/nginx日志、訪問(wèn)日志,消息服務(wù)等等,Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為頂級(jí)開源項(xiàng)目。

主要應(yīng)用場(chǎng)景是:日志收集系統(tǒng)和消息系統(tǒng)。

Kafka主要設(shè)計(jì)目標(biāo)如下:

  • 以時(shí)間復(fù)雜度為O(1)的方式提供消息持久化能力,即使對(duì)TB級(jí)以上數(shù)據(jù)也能保證常數(shù)時(shí)間的訪問(wèn)性能。
  • 高吞吐率。即使在非常廉價(jià)的商用機(jī)器上也能做到單機(jī)支持每秒100K條消息的傳輸。
  • 支持Kafka Server間的消息分區(qū),及分布式消費(fèi),同時(shí)保證每個(gè)partition內(nèi)的消息順序傳輸。
  • 同時(shí)支持離線數(shù)據(jù)處理和實(shí)時(shí)數(shù)據(jù)處理。
  • Scale out:支持在線水平擴(kuò)展

Step 1: 下載代碼

你可以登錄Apache kafka 官方下載。
http://kafka.apache.org/downloads.html
備注:2.11-1.1.0版本才與JDK1.7兼容,否則更高版本需要JDK1.8

在這里插入圖片描述

Step 2: 啟動(dòng)服務(wù)

運(yùn)行kafka需要使用Zookeeper,所以你需要先啟動(dòng)Zookeeper,如果你沒(méi)有Zookeeper,你可以使用kafka自帶打包和配置好的Zookeeper(PS:在kafka包里)。

//這是前臺(tái)啟動(dòng),啟動(dòng)以后,當(dāng)前就無(wú)法進(jìn)行其他操作(不推薦)
./zookeeper-server-start.sh ../config/zookeeper.properties

//后臺(tái)啟動(dòng)(推薦)
./zookeeper-server-start.sh ../config/zookeeper.properties 1>/dev/null 2>&1 &

現(xiàn)在啟動(dòng)kafka

config/server1.properties:
	broker.id=0
	listeners=PLAINTEXT://192.168.10.130:9092
	log.dirs=kafka-logs
	zookeeper.connect=localhost:2181
//后臺(tái)啟動(dòng)kafka
./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &

Step 3:創(chuàng)建一個(gè)主題

??創(chuàng)建一個(gè)名為“test”的Topic,只有一個(gè)分區(qū)和備份(2181是zookeeper的默認(rèn)端口)

./kafka-topics.sh --create --zookeeper localhost:2181 --config max.message.bytes=12800000 --config flush.messages=1 --replication-factor 1 --partitions 1 --topic test
命令解析:
--create: 指定創(chuàng)建topic動(dòng)作

--topic:指定新建topic的名稱

--zookeeper: 指定kafka連接zk的連接url,該值和server.properties文件中的配置項(xiàng){zookeeper.connect}一樣

--config:指定當(dāng)前topic上有效的參數(shù)值,參數(shù)列表參考文檔為: http://kafka.apache.org/082/documentation.html#brokerconfigs

--partitions:指定當(dāng)前創(chuàng)建的kafka分區(qū)數(shù)量,默認(rèn)為1個(gè)

--replication-factor:指定每個(gè)分區(qū)的復(fù)制因子個(gè)數(shù),默認(rèn)1個(gè)

創(chuàng)建好之后,可以通過(guò)運(yùn)行以下命令,查看已創(chuàng)建的topic信息:

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

??或者,除了手工創(chuàng)建topic外,你也可以配置你的broker,當(dāng)發(fā)布一個(gè)不存在的topic時(shí)自動(dòng)創(chuàng)建topic。

??補(bǔ)充:
(1)查看對(duì)應(yīng)topic的描述信息

./kafka-topics.sh --describe --zookeeper localhost:2181  --topic test0
命令解析:
--describe: 指定是展示詳細(xì)信息命令

--zookeeper: 指定kafka連接zk的連接url,該值和server.properties文件中的配置項(xiàng){zookeeper.connect}一樣

--topic:指定需要展示數(shù)據(jù)的topic名稱

這里寫圖片描述

??(2)Topic信息修改

bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --config max.message.bytes=128000
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --delete-config max.message.bytes
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --partitions 10 
bin/kafka-topics.sh --zookeeper 192.168.187.146:2181 --alter --topic test0 --partitions 3 ## Kafka分區(qū)數(shù)量只允許增加,不允許減少

??(3)Topic刪除
默認(rèn)情況下Kafka的Topic是沒(méi)法直接刪除的,需要進(jìn)行相關(guān)參數(shù)配置

bin/kafka-topics.sh --delete --topic test0 --zookeeper 192.168.187.146:2181

加粗樣式
Note: This will have no impact if delete.topic.enable is not set to true.## 默認(rèn)情況下,刪除是標(biāo)記刪除,沒(méi)有實(shí)際刪除這個(gè)Topic;如果運(yùn)行刪除Topic,兩種方式:
方式一:通過(guò)delete命令刪除后,手動(dòng)將本地磁盤以及zk上的相關(guān)topic的信息刪除即可
方式二:配置server.properties文件,給定參數(shù)delete.topic.enable=true,重啟kafka服務(wù),此時(shí)執(zhí)行delete命令表示允許進(jìn)行Topic的刪除

Step 4: 發(fā)送消息

??Kafka提供了一個(gè)命令行的工具,可以從輸入文件或者命令行中讀取消息并發(fā)送給Kafka集群。每一行是一條消息。

??運(yùn)行producer(生產(chǎn)者),然后在控制臺(tái)輸入幾條消息到服務(wù)器。
??備注:這里的localhost:9092不是固定的,需要根據(jù)server.properties中配置的地址來(lái)寫這里的地址!

[root@administrator bin]# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
>this is a message
>this is another message
//按`Ctrl+C`終止輸入

Step 5: 消費(fèi)消息

??Kafka也提供了一個(gè)消費(fèi)消息的命令行工具,將存儲(chǔ)的信息輸出出來(lái)。
??備注:這里的localhost:9092不是固定的,需要根據(jù)server.properties中配置的地址來(lái)寫這里的地址!

[root@administrator bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
this is a message
this is another message
//按`Ctrl+C`終止讀取消息

??如果你有2臺(tái)不同的終端上運(yùn)行上述命令,那么當(dāng)你在運(yùn)行生產(chǎn)者時(shí),消費(fèi)者就能消費(fèi)到生產(chǎn)者發(fā)送的消息。

Step 6: 設(shè)置多個(gè)broker集群(單機(jī)偽集群的配置)

??到目前,我們只是單一的運(yùn)行一個(gè)broker,沒(méi)什么意思。對(duì)于Kafka,一個(gè)broker僅僅只是一個(gè)集群的大小,所有讓我們多設(shè)幾個(gè)broker。

??首先為每個(gè)broker創(chuàng)建一個(gè)配置文件:

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

現(xiàn)在編輯這些新建的文件,設(shè)置以下屬性:

vim config/server.properties 
config/server1.properties:
	broker.id=0
	listeners=PLAINTEXT://192.168.10.130:9092
	log.dirs=kafka-logs
	zookeeper.connect=localhost:2181
	
config/server-1.properties: 
    broker.id=1
	listeners=PLAINTEXT://192.168.10.130:9093
	log.dirs=kafka-logs-1
	zookeeper.connect=localhost:2181

config/server-2.properties: 
    broker.id=2
	listeners=PLAINTEXT://192.168.10.130:9094
	log.dirs=kafka-logs-2
	zookeeper.connect=localhost:2181

??備注1listeners一定要配置成為IP地址;如果配置為localhost或服務(wù)器的hostname,在使用java發(fā)送數(shù)據(jù)時(shí)就會(huì)拋出異 常:org.apache.kafka.common.errors.TimeoutException: Batch Expired 。因?yàn)樵跊](méi)有配置advertised.host.name 的情況下,Kafka并沒(méi)有像官方文檔宣稱的那樣改為廣播我們配置的host.name,而是廣播了主機(jī)配置的hostname。遠(yuǎn)端的客戶端并沒(méi)有配置 hosts,所以自然是連接不上這個(gè)hostname的。

??備注2:當(dāng)使用java客戶端訪問(wèn)遠(yuǎn)程的kafka時(shí),一定要把集群中所有的端口打開,否則會(huì)連接超時(shí)

/sbin/iptables -I INPUT -p tcp --dport 9092 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9093 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 9094 -j ACCEPT
/etc/rc.d/init.d/iptables save

??broker.id是集群中每個(gè)節(jié)點(diǎn)的唯一且永久的名稱,我們修改端口和日志目錄是因?yàn)槲覀儸F(xiàn)在在同一臺(tái)機(jī)器上運(yùn)行,我們要防止broker在同一端口上注冊(cè)和覆蓋對(duì)方的數(shù)據(jù)。

??我們已經(jīng)運(yùn)行了zookeeper和剛才的一個(gè)kafka節(jié)點(diǎn),所有我們只需要在啟動(dòng)2個(gè)新的kafka節(jié)點(diǎn)。

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

??現(xiàn)在,我們創(chuàng)建一個(gè)新topic,把備份設(shè)置為:3

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

??好了,現(xiàn)在我們已經(jīng)有了一個(gè)集群了,我們?cè)趺粗烂總€(gè)集群在做什么呢?運(yùn)行命令“describe topics”

> ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
//所有分區(qū)的摘要
Topic:my-replicated-topic    PartitionCount:1    ReplicationFactor:3    Configs:
//提供一個(gè)分區(qū)信息,因?yàn)槲覀冎挥幸粋€(gè)分區(qū),所以只有一行。
Topic: my-replicated-topic    Partition: 0    Leader: 1    Replicas: 1,2,0    Isr: 1,2,0
  • “l(fā)eader”:該節(jié)點(diǎn)負(fù)責(zé)該分區(qū)的所有的讀和寫,每個(gè)節(jié)點(diǎn)的leader都是隨機(jī)選擇的。
  • “replicas”:備份的節(jié)點(diǎn)列表,無(wú)論該節(jié)點(diǎn)是否是leader或者目前是否還活著,只是顯示。
  • “isr”:“同步備份”的節(jié)點(diǎn)列表,也就是活著的節(jié)點(diǎn)并且正在同步leader

??其中ReplicasIsr中的1,2,0就對(duì)應(yīng)著3個(gè)broker他們的broker.id屬性!

??我們運(yùn)行這個(gè)命令,看看一開始我們創(chuàng)建的那個(gè)節(jié)點(diǎn):

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

??這并不奇怪,剛才創(chuàng)建的主題沒(méi)有Replicas,并且在服務(wù)器“0”上,我們創(chuàng)建它的時(shí)候,集群中只有一個(gè)服務(wù)器,所以是“0”。

Step 7: 測(cè)試集群的容錯(cuò)能力

7.1發(fā)布消息到集群

[root@administrator bin]# ./kafka-console-producer.sh --broker-list 192.168.10.130:9092 --topic my-replicated-topic
>cluster message 1
>cluster message 2
//Ctrl+C終止產(chǎn)生消息

7.2消費(fèi)消息

[root@administrator bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.10.130:9093 --from-beginning --topic my-replicated-topic
cluster message 1
cluster message 2
//Ctrl+C終止消費(fèi)消息

7.3干掉leader,測(cè)試集群容錯(cuò)

首先查詢誰(shuí)是leader

> ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
//所有分區(qū)的摘要
Topic:my-replicated-topic    PartitionCount:1    ReplicationFactor:3    Configs:
//提供一個(gè)分區(qū)信息,因?yàn)槲覀冎挥幸粋€(gè)分區(qū),所以只有一行。
Topic: my-replicated-topic    Partition: 0    Leader: 1    Replicas: 1,2,0    Isr: 1,2,0

??可以看到Leaderbroker.id1,找到對(duì)應(yīng)的Broker

[root@administrator bin]# jps -m
5130 Kafka ../config/server.properties
4861 QuorumPeerMain ../config/zookeeper.properties
1231 Bootstrap start start
7420 Kafka ../config/server-2.properties
7111 Kafka ../config/server-1.properties
9139 Jps -m

??通過(guò)以上查詢到LeaderPIDKafka ../config/server-1.properties)為7111,殺掉該進(jìn)程

//殺掉該進(jìn)程
kill -9 7111
//再查詢一下,確認(rèn)新的Leader已經(jīng)產(chǎn)生,新的Leader為broker.id=0
[root@administrator bin]# ./kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic       PartitionCount:1        ReplicationFactor:3    Configs:
//備份節(jié)點(diǎn)之一成為新的leader,而broker1已經(jīng)不在同步備份集合里了
Topic: my-replicated-topic      Partition: 0    Leader: 0       Replicas: 1,0,2 Isr: 0,2


7.4再次消費(fèi)消息,確認(rèn)消息沒(méi)有丟失

[root@administrator bin]# ./kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
cluster message 1
cluster message 2

??消息依然存在,故障轉(zhuǎn)移成功??!

到此這篇關(guān)于kafka安裝部署的文章就介紹到這了,更多相關(guān)kafka安裝部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java代碼實(shí)現(xiàn)銀行管理系統(tǒng)

    java代碼實(shí)現(xiàn)銀行管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java代碼實(shí)現(xiàn)銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Springboot項(xiàng)目中使用redis的配置詳解

    Springboot項(xiàng)目中使用redis的配置詳解

    這篇文章主要介紹了Springboot項(xiàng)目中使用redis的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java中的小知識(shí)點(diǎn)總結(jié)

    Java中的小知識(shí)點(diǎn)總結(jié)

    最近在復(fù)習(xí)Java的基礎(chǔ),遇到了一些比較偏的考核題目,特地總結(jié)一下需要注意的知識(shí)點(diǎn)!不過(guò)在使用IDE編程的時(shí)候,這些問(wèn)題都會(huì)馬上被IDE識(shí)別出來(lái),編譯是通不過(guò)的。我在這里提出來(lái)就相當(dāng)于給初學(xué)者一些貢獻(xiàn)吧
    2013-07-07
  • Java反射機(jī)制深入理解

    Java反射機(jī)制深入理解

    這篇文章主要介紹了Java反射機(jī)制深入理解的相關(guān)資料,希望通過(guò)本文大家能理解這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • java.net.SocketTimeoutException: Read timed out異常的解決

    java.net.SocketTimeoutException: Read timed o

    本文主要介紹了java.net.SocketTimeoutException: Read timed out異常的解決,可能是因?yàn)榫W(wǎng)絡(luò)延遲、服務(wù)器響應(yīng)慢或連接不穩(wěn)定等原因造成的,下面就一起來(lái)介紹一下,感興趣的可以了解一下
    2024-05-05
  • @Transactional和@DS怎樣在事務(wù)中切換數(shù)據(jù)源

    @Transactional和@DS怎樣在事務(wù)中切換數(shù)據(jù)源

    這篇文章主要介紹了@Transactional和@DS怎樣在事務(wù)中切換數(shù)據(jù)源問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java并發(fā)編程之顯式鎖機(jī)制詳解

    Java并發(fā)編程之顯式鎖機(jī)制詳解

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)編程之顯式鎖機(jī)制的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java Spring框架的概述

    Java Spring框架的概述

    這篇文章主要為大家介紹了Java Spring框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護(hù)機(jī)制詳解

    spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護(hù)機(jī)制詳解

    這篇文章主要介紹了spring cloud中微服務(wù)之間的調(diào)用以及eureka的自我保護(hù)機(jī)制詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例

    java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例

    這篇文章主要介紹了java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作,結(jié)合實(shí)例形式分析了Java添加及使用事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07

最新評(píng)論

龙胜| 平原县| 高州市| 车险| 霍州市| 乾安县| 岳西县| 江津市| 隆安县| 久治县| 墨竹工卡县| 昔阳县| 河津市| 花莲市| 深州市| 加查县| 镇雄县| 丹棱县| 扶绥县| 龙井市| 高邑县| 揭东县| 应城市| 方城县| 白城市| 桂东县| 瑞安市| 凭祥市| 衡山县| 柳林县| 万年县| 宜良县| 博野县| 黄冈市| 通江县| 灵台县| 乳山市| 屏东市| 苏尼特右旗| 纳雍县| 若羌县|