大資料面試之Kafka

2021-10-07 04:52:32 字數 2735 閱讀 3528

1、producer:訊息的生產者,主要是用於生產訊息的。主要是接入一些外部的資料來源,從外部獲取資料,比如說我們可以從flume獲取資料,還可以通過ftp傳入資料等,還可以通過kafka的api生產資料,通過push的方式,主動的將資料推送到kafka的topic當中去  

2、topic:主題,裡面是一類訊息的抽象的集合,說白了這下面就是用來裝各種資料的

3、paritition:訊息的分割槽。為了解決資料儲存的橫向擴充套件的問題,所以將乙個topic分為多個partition,每個partition儲存topic當中的部分部署。為了解決partition丟失的問題,引入了副本機制,可以將乙個partition複製多分出來儲存

4、broker:在kafka當中一台伺服器,叫做乙個broker

5、consumer:訊息的消費者,主要去消費topic當中的資料的,主動會去pull拉取topic當中的訊息

6、zookeeper:為了解決消費者消費的時候,確定乙個topic當中有多少個分割槽,分割槽分別都在哪一台機器上,引入zk來儲存這些資料

7、kakfa的消費模型,在kakfa當中消費有組的概念。同一時間,乙個組當中,只能有乙個執行緒去消費乙個paritition當中的資料

8、kakfa消費必要的三個條件

第乙個條件:確定哪乙個topic

第三個條件:訊息消費的offset偏移量

參考

參考[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-w5hysjzg-1592146543764)(

緩衝和削峰:上游資料時有突發流量,下游可能扛不住,或者下游沒有足夠多的機器來保證冗餘,kafka在中間可以起到乙個緩衝的作用,把訊息暫存在kafka中,下游服務就可以按照自己的節奏進行慢慢處理。

解耦和擴充套件性:專案開始的時候,並不能確定具體需求。訊息佇列可以作為乙個介面層,解耦重要的業務流程。只需要遵守約定,針對資料程式設計即可獲取擴充套件能力。

冗餘:可以採用一對多的方式,乙個生產者發布訊息,可以被多個訂閱topic的服務消費到,供多個毫無關聯的業務使用。

健壯性:訊息佇列可以堆積請求,所以消費端業務即使短時間死掉,也不會影響主要業務的正常進行。

非同步通訊:很多時候,使用者不想也不需要立即處理訊息。訊息佇列提供了非同步處理機制,允許使用者把乙個訊息放入佇列,但並不立即處理它。想向佇列中放入多少訊息就放多少,然後在需要的時候再去處理它們。

isr:in-sync replicas 副本同步佇列

ar:assigned replicas 所有副本

isr是由leader維護,follower從leader同步資料有一些延遲(包括延遲時間replica.lag.time.max.ms和延遲條數replica.lag.max.messages兩個維度, 當前最新的版本0.10.x中只支援replica.lag.time.max.ms這個維度),任意乙個超過閾值都會把follower剔除出isr, 存入osr(outof-sync replicas)列表,新加入的follower也會先存放在osr中。ar=isr+osr。

produer:訊息的生產者,往topic當中生產訊息  

consumer:訊息的消費者,從topic當中消費訊息

broker:kafka的伺服器

zookeeper:kafka依賴於zk儲存一些topic以及partition的資訊

topic:一類訊息的高度抽象集合,乙個topic下面由多個paritition組成

partition:訊息的分割槽,每個paritition儲存了一部分topic的資料,乙個partition包含多個segement。乙個segement又包含兩部分,.log檔案和.index檔案

segement:包含兩個檔案.log 檔案 .index檔案

.log:記錄了我們的資料,檔案是順序讀寫的

.index檔案:記錄了.log檔案的索引

kafka的複製機制既不是完全的同步複製,也不是單純的非同步複製。完全同步複製要求all alive follower都複製完,這條訊息才會被認為commit,這種複製方式極大的影響了吞吐率。而非同步複製方式下,follower非同步的從leader複製資料,資料只要被leader寫入log就被認為已經commit,這種情況下,如果leader掛掉,會丟失資料,kafka使用isr的方式很好的均衡了確保資料不丟失以及吞吐率。follower可以批量的從leader複製資料,而且leader充分利用磁碟順序讀以及send file(zero copy)機制,這樣極大的提高複製效能,內部批量寫磁碟,大幅減少了follower與leader的訊息量差。
參考

優點:

①支援跨資料中心的訊息複製;

②單機吞吐量:十萬級,最大的優點,就是吞吐量高;

④時效性:ms級;

⑤可用性:非常高,kafka是分布式的,乙個資料多個副本,少數機器宕機,不會丟失資料,不會導致不可用;

⑥訊息可靠性:經過引數優化配置,訊息可以做到0丟失;

⑦功能支援:功能較為簡單,主要支援簡單的mq功能,在大資料領域的實時計算以及日誌採集被大規模使用。

缺點:

①由於是批量傳送,資料並非真正的實時; 僅支援統一分區內訊息有序,無法實現全域性訊息有序;

②有可能訊息重複消費;

③依賴zookeeper進行元資料管理,等等。

參考

面試題面試題

面試題

大資料之Kafka面試題總結

100w位元組 zk是乙個開放原始碼的高效能協調服務,用於kafka的分布式應用 不可以,不可以越過zk直接聯絡kafka broker,一旦zk停止工作,它就不能服務客戶端的請求 zk主要用於集群中不同節點之間的通訊,在kafka中,他被用於提交偏移量,因此節點失效了,可以從它之前提交的偏移量獲取...

大資料常見面試題之kafka

四.kafka到sparkstreaming怎麼保證資料完整性,怎麼保證資料不重複消費?五.kafka的消費者高階和低階api區別 六.kafka怎麼保證資料消費一次且僅消費一次 七.kafka保證資料一致性和可靠性 八.spark實時作業宕掉,kafka指定的topic資料堆積怎麼辦 九.kafk...

大資料開發之kafka安裝

安裝kafka前需要安裝zookeeper,參考 二 解壓安裝包 root hlh001 software tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 三 修改解壓後的名稱 root hlh001 module mv kafka 2.11 0.11.0...