1. 程式人生 > >CentOS7安裝和使用kafka

CentOS7安裝和使用kafka

轉載請註明出處 :CentOS7安裝和使用kafka

環境準備

安裝kafka之前我們需要做一些環境的準備
1、centOS7系統環境
2、jdk環境
3、可用的zookeeper叢集服務

安裝jdk

參考文章
linux軟體(一)—CentOS安裝jdk

安裝Kafka

官網下載Kafka 安裝包,解壓安裝:

tar zxvf kafka_2.11-2.0.0.tgz 
mv kafka_2.11-2.0.0.tgz 
cd kafka

解壓好既安裝完成。

安裝zookeeper服務

方案一使用kafka自帶的kafka

適用於測試等小型場景或者單點kafka
使用kafka安裝包中的指令碼啟動單節點Zookeeper 例項:

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

方案二獨立安裝zookeeper服務

最靈活的方式,適用於單點和多節點kafka

下載ZooKeeper

要在您的計算機上安裝ZooKeeper框架,請訪問以下連結並下載最新版本的ZooKeeper。
http://zookeeper.apache.org/releases.html
現在,最新版本的ZooKeeper是3.4.6(ZooKeeper-3.4.6.tar.gz)。

提取tar檔案

使用以下命令提取tar檔案

$ cd opt/
$ tar -zxf zookeeper-3.4.6.tar.gz
$ cd zookeeper-3.4.6
$ mkdir data

建立配置檔案

使用命令vi conf/zoo.cfg 開啟名為 conf/zoo.cfg 的配置檔案,並將所有以下引數設定為起點。

$ vi conf/zoo.cfg
tickTime=2000
dataDir=/path/to/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2

一旦配置檔案成功儲存並再次返回終端,您可以啟動zookeeper伺服器。

啟動ZooKeeper伺服器

$ bin/zkServer.sh start

執行此命令後,您將得到如下所示的響應 -

$ JMX enabled by default
$ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
$ Starting zookeeper ... STARTED

啟動CLI進入操作命令介面

$ bin/zkCli.sh

輸入上面的命令後,您將被連線到zookeeper伺服器,並將獲得以下響應。

Connecting to localhost:2181
................
................
................
Welcome to ZooKeeper!
................
................
WATCHER::
WatchedEvent state:SyncConnected type: None path:null
[zk: localhost:2181(CONNECTED) 0]

停止Zookeeper伺服器

連線伺服器並執行所有操作後,可以使用以下命令停止zookeeper伺服器 -

$ bin/zkServer.sh stop

成功安裝ZooKeeper。

##方案三使用hadoop叢集cdh等套件中的zookeeper

如果已經有hadoop叢集,一般都已經有zookeeper叢集服務了。
例如zookeeper叢集服務ip如下:

192.168.11.90:2181
192.168.11.91:2181
192.168.11.92:2181

kafka可以直接配置使用。
如下:
配置zookeeper
config/server.properties是kafka安裝目錄中的配置檔案

vim config/server.properties

裡面的 zookeeper.connect
修改為:

zookeeper.connect=192.168.11.90:2181,192.168.11.91:2181,192.168.11.92:2181

使用kafka

啟動伺服器

通過以下命令來啟動伺服器

$ bin/kafka-server-start.sh config/server.properties

伺服器啟動後,您會在螢幕上看到以下響應:

$ bin/kafka-server-start.sh config/server.properties
INFO KafkaConfig values:
request.timeout.ms = 30000
log.roll.hours = 168
inter.broker.protocol.version = 0.9.0.X
log.preallocate = false
security.inter.broker.protocol = PLAINTEXT
....

建立topic

使用kafka-topics.sh 建立單分割槽單副本的topic test:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
檢視topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181
test
或者 使用ip建立
bin/kafka-topics.sh --create --zookeeper 192.168.11.90:2181/kafka100 --topic topic-test3 --replication-factor 2 --partitions 4 --config key=value

生產訊息

使用kafka-console-producer.sh 傳送訊息:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

然後輸入想要傳送的訊息例如

>Hello world!
>Hello Kafka!

消費訊息

使用kafka-console-consumer.sh 接收訊息並在終端列印:
老版本的kafka使用如下命令消費

bin/kafka-console-consumer.sh --zookeeper 192.168.11.90:2181 --topic test --from-beginning

新版本kafka使用如下消費(注意埠)

bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.90:9092 --topic test --from-beginning

輸出如下:

可能遇到的問題–zookeeper is not a recognized option
原因
對於消費者,kafka中有兩個設定的地方:對於老版本的消費者,由–zookeeper引數設定;對於新版本的消費者,由–bootstrap-server引數設定
如果使用了–zookeeper引數,那麼consumer的資訊將會存放在zk之中
檢視的方法是使用bin/zookeeper-client,然後

ls /consumers/[group_id]/offsets/[topic]/[broker_id-part_id]

這個是檢視某個group_id的某個topic的offset

如果使用了–bootstrap-server引數,那麼consumer的資訊將會存放在kafka之中

《Kafka權威指南》中是這樣描述的

停止伺服器

執行所有操作後,可以使用以下命令停止伺服器

$ bin/kafka-server-stop.sh config/server.properties

叢集配置

單機多broker 叢集配置

利用單節點部署多個broker。 不同的broker 設定不同的id,監聽埠及日誌目錄。 例如:

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

編輯配置:

config/server-1.properties:
    broker.id=1
    port=9093
    log.dir=/tmp/kafka-logs-1

啟動Kafka服務:

bin/kafka-server-start.sh config/server-1.properties &

啟動多個服務,按上文類似方式產生和消費訊息。序號1對應增加。

多機多broker 叢集配置

分別在多個節點按上述方式安裝Kafka,配置啟動多個Zookeeper 例項。 例如: 在192.168.11.90,192.168.11.91,192.168.11.92三臺機器部署,Zookeeper配置如下:

initLimit=5
syncLimit=2
server.1=192.168.11.90:2888:3888
server.2=192.168.11.91:2888:3888
server.3=192.168.11.92:2888:3888

分別配置多個機器上的Kafka服務 設定不同的broke id,zookeeper.connect設定如下:

zookeeper.connect=192.168.11.90:2181,192.168.11.91:2181,192.168.11.92:2181

轉載請註明出處 :CentOS7安裝和使用kafka

參考連結:
http://kafka.apache.org/quickstart

https://www.w3cschool.cn/apache_kafka/apache_kafka_installation_steps.html

https://www.mtyun.com/library/how-to-install-kafka-on-centos7

https://segmentfault.com/a/1190000012730949

https://colobu.com/2014/08/06/kafka-quickstart/