一,kafka概述
kafka是乙個高吞吐量的、永續性的、分布式發布/訂閱訊息系統。
它主要用於處理活躍的資料(登入、瀏覽、點選、分享、喜歡等使用者行為產生的資料)。
在流式計算中,kafka一般用來快取資料,storm通過消費kafka的資料進行計算。
kafka是乙個分布式訊息佇列:生產者、消費者的功能。它提供了類似於jms的特性,但是在設計實現上完全不同,此外它並不是jms規範的實現。
kafka對訊息儲存時根據topic進行歸類,傳送訊息者稱為producer,訊息接受者稱為consumer,此外kafka集群有多個kafka例項組成,每個例項(server)成為broker--伺服器節點。
無論是kafka集群,還是producer和consumer都依賴於zookeeper集群儲存一些meta資訊,來保證系統可用性
三大特點:
高吞吐量:可以滿足每秒百萬級別訊息的生產和消費——生產消費。需要硬體支撐
永續性:有一套完善的訊息儲存機制,確保資料的高效安全的持久化——中間儲存。
分布式:基於分布式的擴充套件和容錯機制;kafka的資料都會複製到幾台伺服器上。當某一台故障失效時,生產者和消費者轉而使用其它的機器——整體健壯性。
二,kafka核心元件
topic: kafka處理的訊息的不同分類。
broker:訊息**,kafka集群中的乙個kafka服務節點稱為乙個broker,主要儲存訊息資料
。存在硬碟中。每個topic都是有分割槽的。
partition:topic物理上的分組,乙個topic在broker中被分為1個或者多個partition,分割槽在建立topic的時候指定。
producer:訊息和資料的生產者,向kafka的乙個topic發布訊息。
consumer:訊息和資料的消費者,定於topic並處理其發布的訊息。
zookeeper:協調kafka的正常執行。
三,kafka集群部署
2,修改配置檔案。
//全域性唯一編號,不能重複3,分發安裝包broker.id=0
//監聽連線的埠,producer或consumer將在此埠建立連線
port=9092
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
ocket.send.buffer.bytes=102400
log.dirs=/home/kafka-logs
num.partitions=2
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
scp -r /export/servers/kafka_2.11-0.8.2.2 kafka02:/export/servers4,再次修改配置檔案然後分別在各機器上建立軟連
cd /export/servers/
ln -s kafka_2.11-0.8.2.2 kafka
依次修改各伺服器上配置檔案的的broker.id,分別是0,1,2不得重複。
5,啟動集群
依次在各節點上啟動kafka
bin/kafka-server-start.sh config/server.properties
四,kafka常用操作的命令
檢視當前伺服器中的所有topic五,通過j**a呼叫kafkabin/kafka-topics.sh --list --zookeeper server1:2181
建立topic
bin/kafka-topics.sh --create --zookeeper server1:2181 --replication-factor 1 --partitions 1 --topic test
replication-factor 備份個數
刪除topic,慎用,只會刪除zookeeper中的元資料,訊息檔案須手動刪除
sh bin/kafka-topics.sh --delete --zookeeper server1:2181 --topic test
需要server.properties中設定delete.topic.enable=true否則只是標記刪除或者直接重啟。
通過shell命令傳送訊息
kafka-console-producer.sh --broker-list server1:9092 --topic t
通過shell消費訊息
sh bin/kafka-console-consumer.sh --zookeeper server1:2181 --from-beginning --topic t
檢視消費位置
sh kafka-run-class.sh kafka.tools.consumeroffsetchecker --zookeeper zk01:2181 --group testgroup
檢視某個topic的詳情
sh kafka-topics.sh --topic test --describe --zookeeper zk01:2181
1,priduce**
package com;2,consumer**import j**a.util.properties;
import j**a.util.scanner;
import org.apache.kafka.clients.producer.callback;
import org.apache.kafka.clients.producer.kafkaproducer;
import org.apache.kafka.clients.producer.producerconfig;
import org.apache.kafka.clients.producer.producerrecord;
import org.apache.kafka.clients.producer.recordmetadata;
import org.apache.kafka.common.serialization.stringserializer;
/** * 模擬生產者傳送訊息,通過迴圈去傳送訊息給kafka
* **/public class producer
});num++; }}
}
package com;注意:**中的topic 要在linux虛擬機器中的存在,若沒有則建立。import j**a.util.collections;
import j**a.util.properties;
import org.apache.kafka.clients.consumer.consumerconfig;
import org.apache.kafka.clients.consumer.consumerrecord;
import org.apache.kafka.clients.consumer.consumerrecords;
import org.apache.kafka.clients.consumer.kafkaconsumer;
import org.apache.kafka.common.serialization.stringdeserializer;
/**kafka-topics.sh --list --zookeeper server1:2181
* **/public class consumer }}}
學習筆記 Kafka
kafka kafka把資料往磁碟上寫,但是在磁碟上存它的讀寫速度比記憶體快,這個依賴於預讀和後寫功能,但是這個預讀和後寫必須是按照順序的方式,若沒有順序的方式優化的話,不存在什麼預讀和後寫。特點 訊息持久化 能落到磁碟 通過o 1 的磁碟資料結構提供資料的持久化 高吞吐量 分布式 擴充套件能力強 ...
Kafka學習筆記
1.1簡介 apache kafka 是分布式發布 訂閱訊息系統 訊息中介軟體 它最初由 linkedin 公司開發,之後成為 apache 專案的一部分。kafka 是一種快速 可擴充套件的 設計內在就是分布式的,分割槽的和可複製的提交日誌服務。apache kafka 與傳統訊息系統相比,有以下...
kafka學習筆記
1.1 kafka的特性 controller在zookeeper註冊watch zookeeper管理kakfabroker集群。所有的kafkabroker節點一起去zookeeper上註冊乙個臨時節點,只有乙個能成功,成功註冊的節點稱之為 kafkabrokercontroller,其餘的稱之...