Hadoop環境搭建筆記整理(六)——初識Kafka以及本階段總結
一、是什麼和做什麼
1.這裡老師沒有詳細講解做什麼。只能從安裝成功後的幾個測試案例粗略得知Kafka的用途。但前期作為一個安裝過程為主的文檔,沒有理清這些玩意兒的關係,就像上課的安排一樣。這些軟體安裝和調試完成大概一周半的時間。跑了兩個數據分析實例就換了個老師教。後面老師負責知識體系構建,所以從下一篇文檔開始我就會寫一些知識體系的東西,排版也會有所不同。寫的同時去梳理可能更有益於記憶。作為大數據的入門課程,我認為這不到四周的時間我學到的已經超乎我自己的想像。
2.Kafka是一種分散式的,基於發布/訂閱的消息系統。主要設計目標如下:
- 以時間複雜度為O(1)的方式提供消息持久化能力,即使對TB級以上數據也能保證常數時間複雜度的訪問性能。
- 高吞吐率。即使在非常廉價的商用機器上也能做到單機支持每秒100K條以上消息的傳輸。
- 支持Kafka Server間的消息分區,及分散式消費,同時保證每個Partition內的消息順序傳輸。
- 同時支持離線數據處理和實時數據處理。
- Scale out:支持在線水平擴展。
從圖上看更容易理解,這就是一個連接生產者和消費者的消息交互平台。運行實例主要測試從生產者輸入的信息能否成功被消費者讀取。某種程度上它和Flume有點像。
二、安裝過程
1.http://kafka.apache.org/downloads.html
2.解壓(版本號僅為示例)
a.下載後把安裝包方放在目錄/home 目錄下,並移動
$tar -zxf kafka_2.11-0.9.0.1.tgz
$mv kafka-0.9.0.1 /...
b.為了方便運行 Kafka 相關腳本,將 Kafka 的 bin 路徑加入到/etc/profile中,設置如下內容(分發到各節點後,在各節點上做同樣設置):
export KAFKA_HOME=/.../kafka-x.x.x.x
export PATH=$PATH:$KAFKA_HOME/bin
設置完畢後使用如下命令使配置生效:
$source /etc/profile
c.修改 Kafka 的配置文件
在 Kafka 的根目錄下建立 log 目錄用於存放日誌文件:
$mkdir /.../kafka-0.9.0.1/logs/
修改$KAFKA_HOME/config/server.properties 配置文件內容(僅列出重要配置):
################ Log Basics################
#kafka 存放消息文件的路徑
log.dirs=/.../kafka-0.9.0.1/logs/
################ ZooKeeper#################
ZooKeeper 集群連接地址信息
zookeeper.connect=localhost:2181
3. 部署驗證
進入解壓目錄(在此為/.../kafka_2.11-0.9.0.1/bin),先啟動zookeeper服務。可以在命令的結尾加個&符號,這樣服務就可以在後台運行
再啟動kafka
./kafka-server-start.sh/.../kafka_2.11-0.9.0.1/config/server.properties &
ps -ef | grep kafka查看,觀察到zookeeper和kafka服務已啟動
創建一個叫"test1234"的topic,它只有一個分區,一個副本:
[root@centos7 bin]#./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1--partitions 1 --topic test1234
可以用list查看創建的topic,當前創建了4個topic
[root@centos7 bin]# ./kafka-topics.sh--list --zookeeper localhost:2181
發送消息。運行producer並在控制台中輸一些消息,這些消息將被發送到服務端
[root@centos7 bin]# ./kafka-console-producer.sh--broker-list localhost:9092 --topic test1234
在另一個終端開啟consumer,可以讀取到剛才發出的消息並輸出。
[root@centos7 bin]#./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test1234--from-beginning
三、注意事項
1.在開啟Zookeeper的前提下打開kafka。
2.Topic在邏輯上可以被認為是一個queue,每條消費都必須指定它的Topic,可以簡單理解為必須指明把這條消息放進哪個queue里。為了使得Kafka的吞吐率可以線性提高,物理上把Topic分成一個或多個Partition,每個Partition在物理上對應一個文件夾,該文件夾下存儲這個Partition的所有消息和索引文件。
四、其他的小小的結束語
寫完六篇的感覺就是,果真好記性不如爛筆頭,很多東西隔幾天就會迅速遺忘。學習大數據倒是對linux系統和虛擬機抱有很大興趣的我打算假期跑個mac看看。下面大概還有三四篇講體系,包括真實的hadoop集群搭建的都是在烏班圖伺服器版系統上進行的。五周受益匪淺。然後大膽的想法是用虛擬機試試去裝Tensorflow。哈哈搭環境成癮。不過更多的應該去補足開發上缺的東西吧。今天就到這裡。
推薦閱讀:
※數據分析會騙人么?
※數據分析不只Tableau,這款國產工具也能扛上一扛!
※我們每天面對的屏幕正悄悄改變世界
※大數據學習筆記:Hadoop之HDFS(下)
※Pyspark實例——Spark On YARN將HDFS的數據寫入Redis