大資料環境搭建之Kafka偽分散式環境搭建步驟詳解
文章目錄
Kafka簡介
Kafka是一個訊息中介軟體(http://kafka.apache.org/),可以提供高吞吐量、高容錯、高效能的大型系統訊息傳送。Kafka的資料是持久的,有序的(同一分割槽),且可以指定讀取位置。資料是分散式儲存的,通過zookeeper同步。有關Kafka更詳細介紹參照前述文章。
其他訊息中介軟體有 ActiveMQ和RabbitMQ等。
環境準備
Linux:CentOS
Zookeeper:Kafak內建了zookeeper
Kafka: Scala 2.11-kafka_2.11-1.0.0.tgz(asc,sha512)
下載連結http://kafka.apache.org/downloads
解壓安裝
將安裝檔案加壓到/opt/目錄
tar -zxf kafka_2.11-1.0.0.tgz /opt
配置檔案
進入解壓後的Kafka目錄
cd /opt/kafka_2.11-1.0.0
1、配置config目錄下的server.properties檔案
broker.id=0 #叢集內不能重複
listeners= PLAINTEXT://:9092
#日誌放入tmp目錄
log.dirs=/tmp/kafka-logs
zookeeper.connect=bigdata:2181
注:如果zookeeper有三臺叢集
zookeeper.connect=bigdata01:2181,bigdata02:2181,bigdata03:2181
2、Kafka偽分散式配置
config目錄下配置多個server.properties檔案,新增以下配置檔案後,一共有三個server.properties檔案。因為在一臺機器上啟動,所以埠號不一樣。如果是叢集啟動,都使用9092。
cd config
cp server.properties server-1.properties
cp server.properties server-2.properties
server-1.properties內容:
broker.id=1
listeners=PLANTEXT://:9093
log.dirs=/tmp/kafka-logs-1
server-2.properties內容:
broker.id=2
listeners=PLANTEXT://:9094
log.dirs=/tmp/kafka-logs-2
服務啟動
因為啟動命令後介面都會列印相關日誌,新起一個視窗進行後續命令
1、啟動內建的zookeeper
#kafka目錄下執行
./bin/zookeeper-server-start.sh config/zookeeper.properties
如果要後臺執行,不列印日誌:
#如果要後臺執行,即使關閉視窗程序也不會中斷
nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null 2>&1 &
2、啟動kafka
#末尾新增&後,即時Ctrl+C後,程序還是在的,只要不關閉視窗
./bin/kafka-server-start.sh config/server.properties &
./bin/kafka-server-start.sh config/server-1.properties &
./bin/kafka-server-start.sh config/server-2.properties &
啟動以後三個視窗不要關閉,關閉後進程將中斷。
zookeeper如果前臺執行,關閉視窗會出現TIME_WAIT,過段時間程序沒有了
可用如下命令檢視端口占用程式的程序號
netstat -lnp | grep 2181
netstat -lntup
Topic相關操作
先建立一個topic,再發送此topic的訊息。
kafka-topics.sh命令可以建立、描述、改變、刪除一個topic,本文僅介紹前兩個命令,後兩個謹慎使用。
指定Topic名稱為"firsttopic" 、分割槽數量(和叢集數量相等)為3,複製數量為2.
./bin/kafka-topics.sh --create --zookeeper bigdata:2181 --topic firsttopic --partitions 3 --replication-factor 2
檢視剛才建立的topic的描述
./bin/kafka-topics.sh --describe --zookeeper bigdata:2181 --topic firsttopic
檢視有多少topic
./bin/kafka-topics.sh --zookeeper bigdata:2181 --list
控制檯生產者
啟動控制檯生產者
./bin/kafka-console-producer.sh --topic firsttopic --broker-list bigdata:9092
控制檯消費者
新建一個視窗,啟動控制檯消費者
./bin/kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic firsttopic
在生成者視窗輸入訊息“test”,按回車,消費者視窗會打印出訊息。
如果要從頭開始消費:
./bin/kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic firsttopic --from-beginning