標籤:

Hadoop環境搭建筆記整理(六)——初識Kafka以及本階段總結

一、是什麼和做什麼

1.這裡老師沒有詳細講解做什麼。只能從安裝成功後的幾個測試案例粗略得知Kafka的用途。但前期作為一個安裝過程為主的文檔,沒有理清這些玩意兒的關係,就像上課的安排一樣。這些軟體安裝和調試完成大概一周半的時間。跑了兩個數據分析實例就換了個老師教。後面老師負責知識體系構建,所以從下一篇文檔開始我就會寫一些知識體系的東西,排版也會有所不同。寫的同時去梳理可能更有益於記憶。作為大數據的入門課程,我認為這不到四周的時間我學到的已經超乎我自己的想像。

2.Kafka是一種分散式的,基於發布/訂閱的消息系統。主要設計目標如下:

  • 以時間複雜度為O(1)的方式提供消息持久化能力,即使對TB級以上數據也能保證常數時間複雜度的訪問性能。
  • 高吞吐率。即使在非常廉價的商用機器上也能做到單機支持每秒100K條以上消息的傳輸。
  • 支持Kafka Server間的消息分區,及分散式消費,同時保證每個Partition內的消息順序傳輸。
  • 同時支持離線數據處理和實時數據處理。
  • Scale out:支持在線水平擴展。

從圖上看更容易理解,這就是一個連接生產者和消費者的消息交互平台。運行實例主要測試從生產者輸入的信息能否成功被消費者讀取。某種程度上它和Flume有點像。

二、安裝過程

1.kafka.apache.org/downlo

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

TAG:Kafka | 大數據 |