kafka學習筆記1:測試環境搭建

fairjm發表於2017-09-24

本文來自 fairjm@ituring 轉截請註明出處


順便一提部落格搬家,從iteye搬到了部落格園http://www.cnblogs.com/fairjm/,主要部落格園有markdown,這樣兩邊同步就方便啦:)


最近因為架構中引入了kafka,一些之前在程式碼中通過RPC呼叫強耦合但是適合非同步處理的內容可以用kafka重構一下.
考慮從頭學一下kafka瞭解其特性和使用場景。

環境選擇

首先是測試環境的搭建,平時使用的是win,但kafka以及zk在win上會存在一些bug(例如 https://issues.apache.org/jira/browse/KAFKA-1194),最好還是在linux平臺上搭建. 虛擬機器是一個不錯的選擇但開銷比較大,日常使用的筆記本8G記憶體開啟虛擬機器不是很方便,bash on windows是個不錯的選擇. (另在Store中可以下載ubuntu等子系統,現在只限於insider)
enter image description here
在元件中開啟後重啟電腦更新.

環境搭建

重啟後,在命令列或者powershell中輸入bash進入環境.
enter image description here
但這裡的環境和外部的windows不互通,windwos裝了java也無法在bash中使用.
需要先安裝一些額外的元件.

java安裝

enter image description here
輸入後選擇一個即可(這裡選擇了openjdk-8-jre-headless)

zookeeper

kafka依賴zk
簡單的關係如下(圖片來源kafka權威指南):
enter image description here 所以使用kafka之前需要配置好zk.

cd ~
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 /usr/local/zookeeper
mkdir -p /var/lib/zookeeper
vim /usr/local/zookeeper/conf/zoo.cfg
/usr/local/zookeeper/bin/zkServer.sh start  

zoo.cfg的內容和zoo_sample.cfg大致相同,將dataDir換為/var/lib/zookeeper即可.
內容如下:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

啟動後zk在2181埠執行

kafka

kafka安裝過程類似.
這裡學習使用0.9.0.1版本,去年2月釋出.
和所看的書保持一致避免出現不相容問題導致書中例子無法執行阻礙進度(新版本的功能之後再額外學習).

wget http://mirror.bit.edu.cn/apache/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz
tar —zxf kafka 2.11-0.9.0.1.tgz
mv kafka 2.11-0.9.0.1 /usr/local/kafka
mkdir /tmp/kafka—logs
/usr/local/kafka/bin/kafka—server—start.sh -daemon /usr/local/kafka/config/server.properties

建立topic並驗證:

# /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1 --partitions 1 --topic test
Created topic "test".
# /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181
--describe --topic test
Topic:test    PartitionCount:1    ReplicationFactor:1    Configs:
    Topic: test    Partition: 0    Leader: 0    Replicas: 0    Isr: 0

同時zk的/brokers/topics下會多出一個test.

至此整個安裝過程就結束了.

上面的/usr/local/kafka/config/server.properties是broker的配置,其中一些配置的含義如下:

  • broker.id
    都必須要有一個id 預設是0
    在一個叢集裡必須唯一

  • port
    監聽的埠 預設是9092
    指定1024以下的埠要用root跑 但不建議

  • zookeeper.connent
    連線zk的地址 預設是localhost的2181
    格式是hostname:port/path
    預設path不寫是根

  • log.dirs
    log塊的儲存位置
    可以用,分隔存多個
    一個分割槽的日誌會存在一個路徑下

  • num.recovery.threads.per.data.dir
    用來啟動和結束時做日誌恢復相關
    和dirs的數量相關 如果是3 dirs數量是2 那會有6個執行緒

  • num.partitions
    一個新的topic會有多少個分割槽
    分割槽數只能比這個數字大 不能比這個小

相關文章