1. 程式人生 > >Kafka——安裝Kafka

Kafka——安裝Kafka

要事先行

選擇作業系統
Kafka 是使用Java 開發的應用程式, 所以它可以執行在Windows 、MacOS 和Linux 等多種作業系統上。本章將著重介紹如何在Linux 上安裝和使用Kafka ,因為把Kafka 安裝在Linux 系統上是最為常見的。

安裝Java
在學習zookeeper的時候已經安裝。

安裝Zookeeper
在昨天的文章裡,我們已經安裝。不過某些配置需要變化。
我們先輸入telnet localhost 2181檢視我們的zookeeper是否安裝正確。再輸入srvr
在這裡插入圖片描述
Zookeeper 群組( Ensemble)
Zoo keeper 叢集被稱為群組。Zookeeper 使用的是一致性協議,所以建議每個群組裡應該包含奇數個節點(比如3 個、5 個等),因為只有當群組裡的大多數節點(也就是越定人數)處於可用狀態, Zookeeper 才能處理外部的請求。
不過,也不建議一個群組包含超過7 個節點,因為Zookeeper 使用了一致性協議,節點過多會降低整個群組的效能。

群組需要有一些公共配置,下面列出了所有伺服器的清單,並且每個伺服器還要在資料目錄中建立一個myid 檔案,用於指明自己的ID 。如果群組裡伺服器的機器名是 zoo1.example.comzoo2.example.comzoo3.example.com ,那麼配置檔案可能是這樣的:
在這裡插入圖片描述
在這裡插入圖片描述
在這個配置中:

  • initLimit表示用於在從節點主節點之間建立初始化連線的時間上限
  • syncLimit 表示允許從節點與主節點處於不同步狀態的時間上限
    這兩個值都是tickTime的倍數,所以initLimit是10*2000ms ,也就是20s,而syncLimit是10秒。
  • 配置裡還列出了群組中所有伺服器的地址。伺服器地址遵循server.X=hostname:peePort:leaderPort的格式。
    • X表示伺服器的id,不一定要求從0開始,也不一定連續。
    • hostname表示伺服器的機器名或IP地址
    • peerPort:用於節點通訊的TCP埠
    • leederPort:用於首領選舉的TCP埠

除了公共的配置檔案外,每個伺服器都必須在data Dir 目錄中建立一個叫作myid 的檔案,檔案裡要包含伺服器ID , 這個ID 要與配置檔案裡配置的D 保持一致。完成這些步驟後,就可以啟動伺服器,讓它們彼此間進行通訊了。

如果還是不知道怎麼做,看看下面這個教程:
https://blog.csdn.net/yiifaa/article/details/77844402

偽叢集如下:
在這裡插入圖片描述

安裝Kafka Broker

配置好Java 和Zookeeper 之後,接下來就可以安裝Kafka了。
在這裡插入圖片描述
或者也可以修改kafka的server.properties檔案,把log的目錄修改為自己想要的目錄。

server.properties引數說明
https://blog.csdn.net/lizhitao/article/details/25667831

一且Kafka 建立完畢,就可以對這個叢集做一些簡單的操作來驗證它是否安裝正確,比如建立一個測試主題,釋出一些訊息,然後讀取它們。(必須先開啟zookeeper,開啟kafka,然後才create主題)
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181116164655762.png
往測試主題上釋出訊息:
在這裡插入圖片描述
從測試主題上讀取訊息:
在這裡插入圖片描述

broker配置

Kafka 有很多配置選項,活及安裝和調優的方方面面。

常規配置

  • broker.id
    每個broker 都需要有一個識別符號,使用 broker.id 來表示。它的預設值是0 ,也可以被設定成其他任意整數。這個在整個Kafka 叢集裡必須是唯一的。
  • port
    如果使用配置樣本來啟動Kafka ,它會監聽9092 埠。修改port配置引數可以把它設定成其他任意可用的埠。要注意,如果使用1024 以下的埠,需要使用root 許可權啟動Kafka ,不過不建議這麼做。
  • zookeeper.connect
    用於儲存broker元資料的Zookeeper地址是通過zookeeper.connect來指定的。
  • log.dirs
    日誌存放目錄。

主題的預設配置
暫略。

硬體的選擇

Kafka 本身對硬體沒有特別的要求,它可以執行在任何系統上。不過,如果比較關注效能,那麼就需要考慮幾個會影響整體效能的因素:磁碟吞吐量和容量、記憶體、網路和CPU 。在確定了效能關注點之後,就可以在預算範圍內選擇最優化的硬體配置。

窮,暫略

Kafka叢集

單個Kafka 伺服器足以滿足本地開發或POC 要求,不過叢集也有它的強大之處。使用叢集最大的好處是可以跨伺服器進行負載均衡,再則就是可以使用複製功能來避免因單點故障造成的資料丟失。在維護Kafka 或底層系統時,使用叢集可以確保為客戶端提供高可用性。
在這裡插入圖片描述

需要多少個broker
一個Kafka 叢集需要多少個broker 取決於以下幾個因素。
首先,需要多少磁碟空間來保留資料,以及單個broker 有多少空間可用。如果整個叢集需要保留10TB 的資料, 每個broker可以儲存2 TB ,那麼至少需要5 個broker。如果啟用了資料複製,那麼至少還需要一倍的空間。
第二個要考慮的因素是叢集處理請求的能力。如果單個broker 的網路介面在高峰時段可以達到80 % 的使用量,並且有兩個消費者,那麼消費者就無桂保持峰值,除非有兩個broker 。如果叢集啟用了複製功能,則要把這個額外的消費者考慮在內。因磁碟吞吐量低和系統記憶體不足造成的效能問題,也可以通過擴充套件多個broker 來解決。

broker配置
要把一個broker 加入到叢集裡,只需要修改兩個配置引數。
首先,所有broker 都必須配置相同的zookeeper.connect, 該引數指定了用於儲存元資料的Zookeeper 群組和路徑。
其次,每個broker 都必須為 broker.id 引數設定唯一的值。

作業系統調優
暫略

生產環境的注意事項

暫略