白皮書

利用 FPGA 加速 Kafka 生產商

概述

Apache Kafka是新興的通用流數據管道的核心。Kafka's作為流媒體平臺被許多高調採用,被LinkedIn,Netflix,Uber,ING以及超過三分之一的財富500強企業使用,並且還在不斷增長。在LinkedIn,每天大約有兩萬億條消息通過卡夫卡。根據 TechRepublic.com,排名前10位的旅遊公司中有6家,全球10大銀行中有7家,前10大保險公司中有8家和10大電信公司中有9家已經採用Kafka作為管理流媒體數據的中央平臺。在2017年紐約卡夫卡峰會上,Confluent報告稱,超過三分之一的財富500強企業已經部署了卡夫卡。

基本卡夫卡系統

卡夫卡有三個基本組成部分——生產者、經紀人和消費者。生產者將數據發佈到有關經紀人的主題,消費者訂閱主題。圖 1 顯示了一個基本的 Kafka 系統。

Kafka架構的眾多優勢之一是生產者和消費者的解耦。生產者和消費者的數據速率可能大不相同,但彼此之間卻沒有影響。Kafka的另一個關鍵優勢是體積小。Kafka 集群只有 90,000 多行代碼,可以比需要完整 Spark 節點的 Spark 流在更適度的硬體要求上實現。

圖1 –基本卡夫卡系統

加速卡夫卡生產商的發展

數據攝取到大數據系統的範圍從簡單到複雜。在圖2中,數據源1可以是捕獲網路流量的數據包。但是,數據源二可能是來自衛星星座的複雜地理空間圖像,而數據源三是西德克薩斯州風車農場的工業物聯網維護數據。

數據格式和數據速率的可變性使得問題難以擴展。能夠實時適應突發流量和新格式通常需要昂貴的成本,需要配置額外的 NIC 和處理器。圖 3 顯示了大多數 Kafka 集群中使用的基於處理器的典型體系結構。

圖 2 :使用英特爾 FPGA 的流數據攝取加速

數據速率可變性使得圖 3 中的系統難以規劃。在許多情況下,必須估計最大頻寬,然後進行預配。50% 或更多的多餘處理器和 NIC 將處於空閒狀態,等待數據速率的提高。

遷移到基於英特爾 FPGA 的解決方案時,將估計相同的最大頻寬,但圖 4 中簡化的系統在空閒時的功耗要低得多,並且總體上需要的佔用空間要少得多。圖 2 中的系統還將消除基於處理器的系統所需的流量控制和負載平衡管理,因為無論數據速率或數據格式如何,基於英特爾 FPGA 的方法都是確定性的。

英特爾 FPGA 是流式並行加速器,直接連接到銅纜、光纖和光纖線。與傳統 GPU 和 CPU 不同,英特爾 ® FPGA 可以在納秒內將任何格式的任何數據從線傳輸到記憶體,而無需網路介面卡 (NIC)。

這種攝取加速可將數據攝取到 Kafka 生產者的延遲降低 40 倍。它提供了同時即時處理流入數據的選項,例如通過實現機器學習,圖像識別,模式匹配,過濾,壓縮,加密等。因此,可以加速和豐富攝取的數據,以加快數據採集和數據分析的速度。

圖3:典型攝取途徑

用例一:內聯提取和轉換

FPGA 引入 Kafka 生產者的最基本用例如圖 4 所示。即使對於這個最基本的用例,FPGA也能為極其可變的速率提供低延遲和確定性。使用 OpenCL 提取和轉換數據的能力允許此用例處理 10 到 100 多個資料類型。

圖 4 內聯、低延遲、確定性、提取和轉換

用例二:內聯加密和解密

加密在處理器週期中非常昂貴,但在英特爾 FPGA 上卻得到了很好的理解。FPGA提供低延遲和確定性結果,而不依賴於數據速率。對於處理器,可變的數據速率可能會淹沒處理器資源,並導致瓶頸和/或開始丟棄數據包。

圖 5 內聯、低延遲、確定性、加密或解密

圖 6 內聯、低延遲、確定性壓縮或解壓縮

用例三:在線壓縮和解壓縮

FPGA在壓縮和解壓縮方面非常有效。在此用例中,FPGA用於在將數據傳遞到Kafka系統之前對其進行壓縮/解壓縮。

用例四:信息理論與加密/解密和壓縮/解壓縮流

香農定律正在應用於更多的流媒體用例,以確定流是否加密。香農定律計算數據包的熵,尋找隨機性與結構化位元組。許多加密位元組看起來(但不是全部)類似的結構化數據。圖 7 顯示了一個可能的流程,用於計算熵,嘗試解密,然後在發佈到 Kafka 主題之前進行解壓縮。即使解密和/或解壓縮無法成功完成,對加密流與解密流進行排序在行業中也有很多應用,例如財務和醫療保健等個人身份資訊。

圖 8 用於網路分析的 PCAP 的豐富主題路由

用例五:豐富主題路由

Kafka 靈活的主題架構,允許將攝取的數據放入許多主題中。這種靈活性意味著可以使用機器學習和模式匹配來路由/切換傳入的數據。以上面的圖 9 為例,其中顯示了正在捕獲的原始網路數據包 (PCAPS)。捕獲數據包時,使用PCRE表達式的複雜模式匹配可以路由到相應的主題。這允許 Kafka 消費者訂閱豐富的主題並繞過清理階段。對於許多網路分析應用程式,根據美國能源部桑迪亞和路易斯羅德實驗室發表的研究,處理實現了每瓦數網路操作的1000倍改進。

BittWare 385A Cloudera/Intel 示例

BittWare 385A 提供兩個網路埠,每個埠支持高達 40Gbe/秒。此 NIC 大小的卡可以取代現有的 NIC/CPU 組合,以顯著加速現有的 Kafka 網路並降低功耗。

Cloudera 和 Intel 已經驗證了這一點,可以加速 Kafka 到 Spark 的流式傳輸,同時在 FPGA 上執行數據擴充(圖 9)。

圖 9 使用 385A 的豐富數據

在上面的演示中,我們選擇了引擎雜訊特徵作為輸入數據流。它們通過UDP卸載引擎攝取和卸載,並放置在卡的OpenCL環境中。在卡上運行的 OpenCL 代碼對傳入的數據流執行即時格式化。然後,它執行FFT,特徵提取,並根據與已知引擎特徵的比較將信號分類為“正常”或“異常”。這些額外的數據位以及發動機信號的FFT被DMA輸入Kafka進行進一步處理。

此示例還突出顯示了 OpenCL 生成的庫的靈活性,這些庫可應用於傳入的流數據。這為最終使用者提供了巨大的自由度,以包括非常特定於應用程式的數據豐富或數據過濾形式。

520N:100 Gbe 與 Stratix10

BittWare 520N 四個網路埠支援一系列串行 I/O 協定,最高運行速度為 10/25/40/100Gz。520N 的總輸送量高達 400 Gbe/秒,可在卸載到 Kafka 框架之前豐富大量數據。

520N配備了功能強大的Stratix 10 FPGA,可提供無與倫比的性能。通過使用 OpenCL 將高輸送量、大量計算和可程式設計性相結合,可以在單個設備上對流數據執行複雜的數據擴充。

圖 10 使用 520N 的豐富數據

更多資訊和如何評估

BittWare和Intel PSG是Kafka加速的專家。BittWare擁有當前和計劃中的產品,以使用Arria 10和Stratix 10 FPGA加速Apache Kafka。請聯繫我們,討論您的需求並開發加速解決方案。