Kafka 分散式環境搭建
這篇文章將介紹如何搭建kafka環境,我們會從單機版開始,然後逐漸往分散式擴充套件。單機版的搭建官網上就有,比較容易實現,這裡我就簡單介紹下即可,而分散式的搭建官網卻沒有描述,我們最終的目的還是用分散式來解決問題,所以這部分會是重點。
Kafka的中文文件並不多,所以我們儘量詳細點兒寫。要交會你搭建分散式其實很簡單,手把手的教程大不了我錄個視訊就好了,可我覺得那不是走這條路的方 式。只有真正瞭解原理,並且理解的透徹了才能最大限度的發揮一個框架的作用。所以,如果你不瞭解什麼事kafka,請先看:《kafka初步》
我們從搭建單機版的環境開始說起,如果你喜歡看英文版:這裡有官方的《quick start》
單機版的部署很簡單,我就講幾點比較重要的,首先kafka是用scala編寫的,可以跑在JVM上,所以我們並不需要單獨去搭建scala的環境,後面會涉及到程式設計的時候我們再說如何去配置scala的問題,這裡用不到,當然你要知道這個是跑在linux上的。第二,我用的是最新版0.7.2的版本,你下載完kafka你可以開啟它的目錄瀏覽一下:
我就不介紹每個包裡的內容是幹嘛的,我就著重說一點,你在這個資料夾裡只能找到3個jar包,並且這3個還不能用於後面的程式設計,而且你也沒法在裡面找到pom這樣用於構建的xml。也別急,也別滿世界找,這些依賴庫得等你把它放到linux上才會出現(當然需要命令)。
搭建單機版環境,簡單的說有那麼幾步:
1. 安裝java環境,我用的是最新的版本jdk7的
2. 將下載下來的kafka扔到linux上,並解壓。我用的red het server的linux。
3. 接下來就是下載kafka的依賴包和構建kafka的環境。注意,這一步需要電腦聯網。具體命令就是官網介紹的./sbt update和 ./sbt package。
4. 執行完上面這步大概會花個10多分鐘吧,我在自己家裡ubuntu沒有成功,報了下載不到jline的錯。單位裡用虛擬機器ubuntu成功了,我深刻懷疑是網的問題。上面這不執行完了有兩點要注意,一是sbt幫你下載完了所有依賴庫,但是這些jar都是分散在各個目錄下的,注意區分。二是,這些jar一部分是kafka的程式設計包,一部分是scala的環境包,上面說了沒必要自己去搭scala的環境道理就在這邊,你自己去下一個2.9的scala,但人家kafka只支援2.8、2.7。所以程式設計的時候就用sbt給你下好的包即可。後面講到程式設計的時候,會寫怎麼搭程式設計環境,很簡單的。
上面的步驟都執行完了,環境算是好了,下面我們要測試下是否能成功執行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 這是相當於開啟了一個producer的命令列。命令列的引數我們一會兒再解釋。
4. 接下來執行consumer,新啟一個terminal:bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
5. 執行完consumer的命令後,你可以在producer的terminal中輸入資訊,馬上在consumer的terminal中就會出現你輸的資訊。有點兒像一個通訊客戶端。
具體可看《quick start》
如果你能看到5執行了,說明你單機版部署成功了。下面解釋下兩條命令中引數的意思。--zookeeper localhost:2181 這個說明了去連本機2181埠的zookeeper server,--topic test,在kafka裡,訊息按topic來區分,我們這裡的topic叫test,所以不管是consumer還是producer都指向了test。其他的引數,我就截圖了,首先是producer的引數:
Consumer的引數:
這些引數你可以先看個大概,之後會在程式設計中使用到,都可以動態的配置。
好了單機版就部署完了,那是不是我把consumer的放到另一臺機器上就算分散式了呢。是的,前提是,你還能執行到上面的第5步。在講配置之前,我們還是將上篇寫的分散式來回顧一下,當然我們簡化一下情況,按照實際部署的分析:
假設我只有兩臺機器,server1和server2。我現在想把zookeeper server和kafka server 和producer都放在一臺機器上server1,把consumer放在server2上。這當然也叫分散式了,雖然機子不多,但是這個部署成功了,擴充套件是相當的容易。
我們還是按照那5個步驟來做,當然你肯定能知道,3、4兩步的引數要改了,我們假設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 這是相當於開啟了一個producer的命令列。
4. 接下來執行consumer,新啟一個terminal:bin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning
5. 執行完consumer的命令後,你可以在producer的terminal中輸入資訊,馬上在consumer的terminal中就會出現你輸的資訊。
這個時候你能執行出第5步的效果麼,是不是報了下面的錯了:
我來說原因,在這之前想請你再回去看看《kafka初步》,看看裡面講分散式的內容:
這裡的kafka server就是broker,broker是存資料的,producer把資料給broker,consumer從broker取資料。那zookeeper是幹嘛的,說的膚淺點兒,zookeeper就是他們之間的選擇分發器,所有的連線都要先註冊到zookeeper上。你可以把它想象成NIO,zookeeper就是selector,producer、consumer和broker都要註冊到selector上,並且留下了相應的key。
所以問題就出在了kafka server的配置server.properties上。Kafka註冊到zookeeper上的資訊不對,才導致了上面的錯誤。我們看config中server.properties的配置就可以知道:
1
2
3
4
|
#
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如果你不設定,就是127.0.0.1,所以你把這個hostname設定成192.168.10.11即可,這樣你重啟下kafka server端,就能執行第5步了。
成功配置的話,你能看到下面的效果,左邊的是producer,右邊的是consumer,看最下面兩行好了,前面的是我之前測試用過的:
如果你還是雲裡霧裡的,建議你回頭去看看上篇文章,將kafka分散式基本原理的,kafka實際操作是要建立在對原理熟悉的情況下的。
搭建完了環境,後面就要開始寫程式去處理實際問題了。當然再寫程式之前,下一篇我會先寫一點 kafka為什麼會有如此高的效能,它是怎麼保障這些效能的。
轉載: http://www.open-open.com/lib/view/open1354349590601.html
相關文章
- Hadoop環境搭建(二)分散式Hadoop分散式
- hadoop完全分散式環境搭建Hadoop分散式
- Hbase偽分散式環境搭建分散式
- Hadoop 及Spark 分散式HA執行環境搭建HadoopSpark分散式
- Hadoop框架:叢集模式下分散式環境搭建Hadoop框架模式分散式
- hadoop3.1.0 HDFS快速搭建偽分散式環境Hadoop分散式
- OAuth2.0分散式系統環境搭建OAuth分散式
- hadoop之旅2-centerOS7: 搭建分散式hadoop環境HadoopROS分散式
- Hadoop入門(一)之Hadoop偽分散式環境搭建Hadoop分散式
- Windows下Kafka2.8環境搭建教程WindowsKafka
- 《Kafka筆記》2、環境搭建、Topic管理Kafka筆記
- 分散式基礎&專案環境搭建_學習筆記分散式筆記
- Elasticsearch+Fluentd+Kafka搭建分散式日誌系ElasticsearchKafka分散式
- 分散式事務 TCC-Transaction 原始碼分析 —— 除錯環境搭建分散式原始碼除錯
- kafka系列二:多節點分散式叢集搭建Kafka分散式
- kafka生產環境規劃-kafka 商業環境實戰Kafka
- 【Kafka】基於Windows環境的Kafka有關環境(scala+zookeeper+kafka+視覺化工具)搭建、以及使用.NET環境開發的案例程式碼與演示KafkaWindows視覺化
- 分散式系統與叢集環境分散式
- JEESZ分散式框架開發環境部署分散式框架開發環境
- Kafka Eagle分散式模式Kafka分散式模式
- 分散式訊息Kafka分散式Kafka
- 環境搭建
- [原始碼解析] TensorFlow 分散式環境(5) --- Session原始碼分散式Session
- [原始碼解析] TensorFlow 分散式環境(4) --- WorkerCache原始碼分散式
- [Hadoop踩坑]叢集分散式環境配置Hadoop分散式
- 從零搭建嵌入式開發環境開發環境
- 分散式流平臺Kafka分散式Kafka
- Kafka分散式查詢引擎Kafka分散式
- 搭建JEESZ分散式架構1--CentOs下安裝jdk7(環境準備)分散式架構CentOSJDK
- gogs環境搭建Go
- App環境搭建APP
- mac搭建環境Mac
- Kubernetes環境搭建
- swoft 環境搭建
- Flutter環境搭建Flutter
- 搭建Java環境Java
- Supervisor 環境搭建
- react環境搭建React
- FNA環境搭建