Kafka技術帶你玩轉大資料!

2021-07-22 21:09:39 字數 2249 閱讀 1809

與大資料相關的工具與技術,除了常聽到的hadoop、spark、r之外,還有乙個比較陌生的——kafka。今天,大聖眾包威客平台(www.dashengzb.cn

)便來披露kafka的逆天技術,看看它是怎樣玩轉大資料的。

一、kafka在大資料的生態系統中別具價值

作為一種高吞吐量的分布式發布訂閱訊息系統——apachekafka(下稱kafka),它可以處理消費者規模的**中的所有動作流資料。這些資料,通常是在吞吐量的要求下,通過處理日誌和日誌聚合等方式來解決的。kafka補全了像hadoop的一樣的日誌資料和離線分析系統,但又要求實時處理的限制;另外,它還可以通過hadoop的並行載入機制來統一線上和離線的訊息處理,實現通過集群機來提供實時的消費。正是這種補全hadoop「缺陷」的特性,使得kafka在大資料的生態系統中別具價值。

二、kafka的應用,增長明顯

近幾年來,隨著大資料產業的蓬勃發展,kafka的應用也有了明顯的增長。包括uber、twitter、netflix、linkedin、yahoo、cisco、goldmansachs等,都逐漸成為了它最新的客戶。

以前,以上大部分被提及的公司在最初階段,總是整合多個專用系統。現在,它們利用kafka作為資料中轉樞紐來實時消費所有型別的資料,使得同份kafka資料可以被匯入到不同的專用系統中。正如下圖所示的構架作為流式資料平台,讓新系統能通過訂閱kafka,輕易地獲取它想要的資料,所以我們可以輕鬆地引入額外的專用系統,進入到這系統構架中。這正是kafka的專用系統資料匯入特性。

三、kafka有卓越的特性

kafka是個高可擴充套件的生產消費者系統,利用這個系統,使用者可以發布大量的訊息,同時也能實時訂閱消費訊息,這也是當前大資料時代企業資訊發展的一種特徵。

作為一款能在商業硬體上儲存高容量的資料而設計的分布式系統,kafka被設計成能支援多訂閱的系統,它的同份發布的資料集能被消費多次。值得一提的是,它有乙個很大的優勢——天生儲存資料到磁碟,在沒有效能損耗的條件下,能同時傳送訊息到實時和批處理消費者手中。另外,kafka內建的資料冗餘,因而可以保障高可用性,以用於關鍵任務的資料發布消費。kafka帶有卓越的特性。

四、kafka能實現高吞吐率

正如上文所說,kafka是需要處理海量訊息的分布式訊息系統,它的設計初衷就是把所有的訊息都寫入速度低容量大的硬碟中,以此來換取更強的儲存能力。那麼,kafka是怎樣實現超高的吞吐率的呢?

1.順序讀寫

根據kafka官方給出的測試資料(raid-5,7200rpm):順序i/o:600mb/s,隨機i/o:100kb/s,我們可以知道,kafka順序讀寫時不需要硬碟磁頭的尋道時間,只需很少的扇區旋轉時間,所以速度遠快於隨機讀寫。另外,kafka的訊息是不斷追加到檔案中的,這個特性使kafka可以充分利用磁碟的順序讀寫效能。

2.零拷貝

先讓大家看乙個簡單的檔案系統的操作流程。這個程式是工作在使用者空間的,而檔案和網路socket則屬於硬體資源,兩者之間有乙個核心空間。在作業系統內部,整個過程為:

在linuxkernel2.2之後出現了一種叫做"零拷貝(zero-copy)"系統呼叫機制,就是跳過「使用者緩衝區」的拷貝,建立乙個磁碟空間和記憶體的直接對映,資料不再複製到「使用者態緩衝區」。這樣,系統上下文切換減少為2次,提公升了一倍的效能。

3.檔案分段

kafka的佇列topic被分為了多個區(partition),每個partition又分為多個段(segment),所以乙個佇列中的訊息實際上是儲存在n多個片段檔案中的。通過這個巧妙的分段方式,使得每次檔案操作都是對乙個小檔案進行操作,所以非常輕便,而且也增加了並行處理的能力。

?4.批量傳送

允許進行批量傳送訊息是kafka的一大特點——kafka先將訊息快取在記憶體中,然後一次請求批量傳送出去。比如可以指定快取的訊息達到某個量的時候就發出去,或者快取了固定的時間後傳送出去。這種策略大大減少了服務端的i/o次數。

5.資料壓縮

擁有高吞吐量這種特性,使kafka在大資料生態系統中扮演著越來越重要的角色。而工具與技術的進步,有反過來促使大資料產業的進步。乙個全新的高速發展的未來,正離我們越來越近。

來吧,1分鐘帶你玩轉Kafka

摘要 kafka讓人又愛又恨?來吧,一分鐘帶你玩轉它 說起kafka,許多使用者對它是又愛又恨。kafka是一種分布式的 基於發布 訂閱的訊息系統,其極致體驗讓人欲罷不能,但操心的運維 複雜的安全策略 可靠性易用性的缺失 算不上極致的效能發揮 並不豐富的訊息服務功能,仍需要使用者付出諸多的背後工作。...

大資料技術 kafka和flume的對比

摘要 1 kafka和flume都是日誌系統。kafka是分布式訊息中介軟體,自帶儲存,提供push和pull訪問資料功能。flume分為agent 資料採集器 collector 資料簡單處理和寫入 storage 儲存器 三部分,每一部分都是可以定製的。比如agent採用 rpc thrift ...

大資料(Kafka) 原理

在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調 kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic...