kafka概述與安裝
Kafka概述
hadoop -> 離線計算(hdfs/mapreduce) yarn
zookeeper -> 分散式協調(動物管理員)
hive -> 資料倉庫(離線計算/sql)easy coding
flume -> 資料採集
sqoop -> 資料遷移 mysql -> hdfs/hive hdfs/hive->mysql
azkaban -> 任務排程工具
hbase -> 資料庫(nosql) 列式儲存 讀寫速度
實時:
kafka
storm
Apache Kafka® is a distributed streaming platform. What exactly does that mean?
A streaming platform has three key capabilities:
Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
Store streams of records in a fault-tolerant durable way.
Process streams of records as they occur.
Kafka is generally used for two broad classes of applications:
Building real-time streaming data pipelines that reliably get data between systems or applications
Building real-time streaming applications that transform or react to the streams of data
kafka是什麼
在流計算中,kafka主要功能是用來快取資料,storm可以通過消費kafka中的資料進行流計算。
是一套開源的訊息系統,由Scala寫成。支援javaAPI的。
kafka最初由LinkedIn公司開發,2011年開源。
2012年從Apache畢業。
是一個分散式訊息佇列,kafka讀訊息儲存採用Topic進行歸類。
角色
傳送訊息:Producer(生產者)
消費訊息:Consumer(消費者)
為什麼要使用訊息佇列
1、解耦
為了避免出現問題
2、拓展性
可增加處理過程
3、靈活
面對訪問量劇增,不會因為超負荷請求而完全癱瘓。
4、可恢復
一部分元件失效,不會影響整個系統。可以進行恢復。
5、緩衝
控制資料流經過系統的速度。
6、順序保證
對訊息進行有序處理。
7、非同步通訊
akka,訊息佇列提供了非同步處理的機制。允許使用者把訊息放到佇列,不立刻處理。
kafka架構設計
kafka依賴於zookeeper,用zk儲存元資料資訊。
搭建kafka叢集要先搭建zookeeper叢集。
zk在kafka中的作用
儲存kafka叢集節點狀態資訊和消費者當前消費資訊。
kafka叢集安裝
配置
vi conf/server.properties
Server Basics下
broker.id=0 #每臺機器的id不同即可
delete.topic.enable=true #是否允許刪除主題
Log Basics下
log.dirs=..../logs #執行日誌儲存位置
num.partitions=1
Zookeeper下
zookeeper.connect=bigdata:2181 #
vi /etc/profile
export KAFKA_HOME=
export PATH=
scp到叢集的其他機器 $PWD
broker.id=1
broker.id=2
啟動
zkServer.sh start
bin/kafka-server-start.sh config/server.properties &
關閉
kafka-server-stop.sh