日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kafka 分布式环境搭建

發(fā)布時間:2023/11/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka 分布式环境搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這篇文章將介紹如何搭建kafka環(huán)境,我們會從單機版開始,然后逐漸往分布式擴展。單機版的搭建官網(wǎng)上就有,比較容易實現(xiàn),這里我就簡單介紹下即可,而分布式的搭建官網(wǎng)卻沒有描述,我們最終的目的還是用分布式來解決問題,所以這部分會是重點。

Kafka的中文文檔并不多,所以我們盡量詳細點兒寫。要交會你搭建分布式其實很簡單,手把手的教程大不了我錄個視頻就好了,可我覺得那不是走這條 路的方 式。只有真正了解原理,并且理解的透徹了才能最大限度的發(fā)揮一個框架的作用。所以,如果你不了解什么事kafka,請先看:《kafka初步》

我們從搭建單機版的環(huán)境開始說起,如果你喜歡看英文版:這里有官方的《quick start》

單機版的部署很簡單,我就講幾點比較重要的,首先kafka是用scala編寫的,可以跑在JVM上,所以我們并不需要單獨去搭建scala的環(huán)境,后面會涉及到編程的時候我們再說如何去配置scala的問題,這里用不到,當(dāng)然你要知道這個是跑在linux上的。第二,我用的是最新版0.7.2的版本,你下載完kafka你可以打開它的目錄瀏覽一下:

我就不介紹每個包里的內(nèi)容是干嘛的,我就著重說一點,你在這個文件夾里只能找到3個jar包,并且這3個還不能用于后面的編程,而且你也沒法在里面找到pom這樣用于構(gòu)建的xml。也別急,也別滿世界找,這些依賴庫得等你把它放到linux上才會出現(xiàn)(當(dāng)然需要命令)。

搭建單機版環(huán)境,簡單的說有那么幾步:

1.?安裝java環(huán)境,我用的是最新的版本jdk7的

2.?將下載下來的kafka扔到linux上,并解壓。我用的red het server的linux。

3.?接下來就是下載kafka的依賴包和構(gòu)建kafka的環(huán)境。注意,這一步需要電腦聯(lián)網(wǎng)。具體命令就是官網(wǎng)介紹的./sbt update 和 ./sbt package。

4.??執(zhí)行完上面這步大概會花個10多分鐘吧,我在自己家里ubuntu沒有成功,報了下載不到j(luò)line的錯。單位里用虛擬機ubuntu成功了,我深刻懷疑是網(wǎng)的問題。上面這不執(zhí)行完了有兩點要注意,一是sbt幫你下載完了所有依賴庫,但是這些jar都是分散在各個目錄下的,注意區(qū)分。二是,這些jar一部分是kafka的編程包,一部分是scala的環(huán)境包,上面說了沒必要自己去搭scala的環(huán)境道理就在這邊,你自己去下一個2.9的scala,但人家kafka只支持2.8、2.7。所以編程的時候就用sbt給你下好的包即可。后面講到編程的時候,會寫怎么搭編程環(huán)境,很簡單的。

上面的步驟都執(zhí)行完了,環(huán)境算是好了,下面我們要測試下是否能成功運行kafka:

1.???啟動zookeeper server :bin/zookeeper-server-start.sh ../config/zookeeper.properties? & (用&是為了能退出命令行)

2. ? ?啟動kafka server: ?bin/kafka-server-start.sh ../config/server.properties ?&

3.????Kafka為我們提供了一個console來做連通性測試,下面我們先運行producer:bin/kafka-console-producer.sh --zookeeper localhost:2181 --topic test 這是相當(dāng)于開啟了一個producer的命令行。命令行的參數(shù)我們一會兒再解釋。

4. ? ?接下來運行consumer,新啟一個terminal:bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

5. ? ?執(zhí)行完consumer的命令后,你可以在producer的terminal中輸入信息,馬上在consumer的terminal中就會出現(xiàn)你輸?shù)男畔ⅰS悬c兒像一個通信客戶端。

具體可看《quick start》

如果你能看到5執(zhí)行了,說明你單機版部署成功了。下面解釋下兩條命令中參數(shù)的意思。--zookeeper localhost:2181 這個說明了去連本機2181端口的zookeeper server,--topic test,在kafka里,消息按topic來區(qū)分,我們這里的topic叫test,所以不管是consumer還是producer都指向了test。其他的參數(shù),我就截圖了,首先是producer的參數(shù):

Consumer的參數(shù):

這些參數(shù)你可以先看個大概,之后會在編程中使用到,都可以動態(tài)的配置。

好了單機版就部署完了,那是不是我把consumer的放到另一臺機器上就算分布式了呢。是的,前提是,你還能運行到上面的第5步。在講配置之前,我們還是將上篇寫的分布式來回顧一下,當(dāng)然我們簡化一下情況,按照實際部署的分析:

假設(shè)我只有兩臺機器,server1和server2。我現(xiàn)在想把zookeeper server和kafka server 和producer都放在一臺機器上server1,把consumer放在server2上。這當(dāng)然也叫分布式了,雖然機子不多,但是這個部署成功了,擴展是相當(dāng)?shù)娜菀住?/p>

我們還是按照那5個步驟來做,當(dāng)然你肯定能知道,3、4兩步的參數(shù)要改了,我們假設(shè)server1的IP是192.168.10.11 server2的IP是192.168.10.10:

1.??啟動zookeeper server :bin/zookeeper-server-start.sh ../config/zookeeper.properties? & (用&是為了能退出命令行)

2.??啟動kafka server:? bin/kafka-server-start.sh ../config/server.properties ?&

3.???Kafka為我們提供了一個console來做連通性測試,下面我們先運行producer:bin/kafka-console-producer.sh --zookeeper 192.168.10.11:2181 --topic test 這是相當(dāng)于開啟了一個producer的命令行。

4.???接下來運行consumer,新啟一個terminal:bin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning

5.???執(zhí)行完consumer的命令后,你可以在producer的terminal中輸入信息,馬上在consumer的terminal中就會出現(xiàn)你輸?shù)男畔ⅰ?/p>

這個時候你能執(zhí)行出第5步的效果么,是不是報了下面的錯了:

我來說原因,在這之前想請你再回去看看《kafka初步》,看看里面講分布式的內(nèi)容:

這里的kafka server就是broker,broker是存數(shù)據(jù)的,producer把數(shù)據(jù)給broker,consumer從broker取數(shù)據(jù)。那zookeeper是干嘛的,說的膚淺點兒,zookeeper就是他們之間的選擇分發(fā)器,所有的連接都要先注冊到zookeeper上。你可以把它想象成NIO,zookeeper就是selector,producer、consumer和broker都要注冊到selector上,并且留下了相應(yīng)的key。

所以問題就出在了kafka server的配置server.properties上。Kafka注冊到zookeeper上的信息不對,才導(dǎo)致了上面的錯誤。我們看config中server.properties的配置就可以知道:


# Hostname the broker will advertise to consumers. If not set, kafka will use the value returned # from InetAddress.getLocalHost(). If there are multiple interfaces getLocalHost # may not be what you want. #hostname=

默認的hostname如果你不設(shè)置,就是127.0.0.1,所以你把這個hostname設(shè)置成192.168.10.11即可,這樣你重啟下kafka server端,就能執(zhí)行第5步了。

成功配置的話,你能看到下面的效果,左邊的是producer,右邊的是consumer,看最下面兩行好了,前面的是我之前測試用過的:

如果你還是云里霧里的,建議你回頭去看看上篇文章,將kafka分布式基本原理的,kafka實際操作是要建立在對原理熟悉的情況下的。

搭建完了環(huán)境,后面就要開始寫程序去處理實際問題了。當(dāng)然再寫程序之前,下一篇我會先寫一點 kafka為什么會有如此高的性能,它是怎么保障這些性能的。

總結(jié)

以上是生活随笔為你收集整理的Kafka 分布式环境搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。