kafka的简单概述及基本命令
一、Kafka簡介,什么是kafka
Kafka:消息隊列,緩存數據
kafka是一個分布式消息隊列,流式計算中,一般用來緩存數據
在流式計算中,Kafka一般用來緩存數據,SparkStream/Flink/Storm通過消費Kafka的數據進行計算。
1)Apache Kafka是一個開源消息系統,由Scala寫成。是由Apache軟件基金會開發的一個開源消息系統項目。
2)Kafka最初是由LinkedIn開發,并于2011年初開源。2012年10月從Apache Incubator畢業。該項目的目標是為處理實時數據提供一個統一、高通量、低等待的平臺。
3)Kafka是一個分布式消息隊列。Kafka對消息保存時根據Topic進行歸類,發送消息者稱為Producer,消息接受者稱為Consumer,此外kafka集群有多個kafka實例組成,每個實例(server)成為broker。
4)無論是kafka集群,還是producer和consumer都依賴于zookeeper集群保存一些meta信息,來保證系統可用性。
二、傳統的消息隊列
點對點:生產者推送隊列 ?消費者拉取消息 發送反饋 消息被刪除
發布訂閱:生產者推送隊列 ?隊列將消息推送給訂閱的消費者 消息不會被刪除
Kafka:基于訂閱發布 ?生產者推送隊列 消費者主動拉取
三、kafka組件
生產者 producer
消費者 consumer
Broker 每臺kafka相當于broker
Topic 就是一個隊列
partition 分區
replication副本
四、kafka寫入數據流程
1.?從zookeeper找到leader
2.?將數據返回leader
3.?Leader 將數據寫入到本地 發送ack
4.?Follower 同步數據 發送ack
五、分區規則:
1.?指定了partition,則直接使用
2.?未指定partition 但指定key,通過對key的vlaue進行hash出一個partition
3.?Partition 和 key 都未指定,使用輪詢選出一個partition
未指定分區
Key 不為 null ?abs取絕對值
Math.abs(key.hashcode)%numberpartitions
指定分區
? 向指定分區寫入數據
六、自定義分區器
七、數據保存
數據保存到topic中的分區中 ?(物理上是一個目錄)
順序寫入磁盤
Index 文件
Log文件
八、數據存儲策略
基于時間 :周期性的從文件末尾刪除過期的數據(默認一周)7天
基于大小 : 周期性的將超過最大值的 (默認1G)數據文件重命名 生成新的文件,刪除舊的文件
?
九:kafka命令
控制臺生產者: kafka-console-producer.sh --topic test --broker-list hadoop:9092控制臺消費者: kafka-console-consumer.sh --topic test --bootstrap-server hadoop:9092 --from-beginning主題:(topic) 創建主題 kafka-topics.sh --create --topic test --zookeeper hadoop:2181 --partitions 3 --replication-factor 3查看主題 kafka-topics.sh --describe --topic test --zookeeper hadoop:2181查看主題列表 kafka-topics.sh --list --topic test --zookeeper hadoop:2181 kafka-topics.sh --list --zookeeper hadoop:2181刪除主題 kafka-topics.sh --delete --zookeeper hadoop:2181 --topic first?
需要知識文檔的博友請在下方留言評論......
總結
以上是生活随笔為你收集整理的kafka的简单概述及基本命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加拿大钱币叫什么 加拿大的货币是什么
- 下一篇: Kafka集群部署详细步骤(包含zook