跳轉到主要內容
工程的博客

項目光速:更快、更簡單的流處理與Apache火花

分享這篇文章

流數據今天是一個關鍵麵積計算。它是快速決策的基礎係統產生的大量輸入數據,網絡帖子,是否銷售飼料,或傳感器數據,等。處理流數據也在技術上具有挑戰性的,它需要遠不同於和更複雜的比事件驅動的應用程序和批處理。

以滿足流處理需求,結構化流是在Apache火花™2.0中引入的。結構化流是一個具有可擴展性和容錯性流處理引擎建立在火花的SQL引擎。用戶可以使用SQL或表達邏輯數據集/ DataFrame API。運行管道的引擎將照顧增量,不斷和更新最終結果隨著流數據到達。結構化流一直是主流好幾年和1000年代是廣泛采用的組織,處理超過1 PB的數據(壓縮)每天獨自在磚平台上。Beplay体育安卓版本

采用加速和應用程序移動到流媒體的多樣性增加,新的需求出現。我們正在開始一個新的計劃代號為項目光速來滿足這些要求,將引發結構化流給下一代。需求解決的光速是鬥分為四個不同的類別:

  • 改進的延遲和確保它是可預測的
  • 增強功能與新的運營商處理數據和api
  • 提高生態係統支持連接器
  • 簡化部署、操作、監控和故障診斷

在這個博客中,我們將討論火花結構化流媒體的發展及其主要優點。然後我們將概述概述項目光速擬議中的新特性和功能。

增長引發的結構化流

火花結構化流被廣泛采用,因為早期的流媒體由於其易用性,性能、大生態係統,和開發者社區。流負載我們看到的多數是客戶遷移他們的批處理工作負載利用延遲越低,容錯,並支持增量處理流媒體提供。beplay体育app下载地址我們看到了巨大的采用從流媒體客戶開源火花和磚。beplay体育app下载地址以下圖表顯示了每周磚上的流媒體工作的數量在過去的三年裏,它已從數以千計4 +數百萬和仍在加速。

增長引發的結構化流

火花結構化流媒體的優點

幾個屬性的結構化流了今天流行的成千上萬的流媒體應用程序。

  • 統一——結構化流的最重要的優勢是,它使用相同的API作為火花DataFrames批處理,使過渡到實時處理批處理更簡單。用戶可以簡單地編寫一個DataFrame計算使用Python, SQL,或者引發其他受支持的語言,讓發動機運行它作為增量流媒體應用程序。計算將逐步運行新數據到達時,和隻有一次語義,從失敗中恢複自動運行時通過相同的引擎實現作為一個批處理計算,從而給出一致的結果。這種共享降低複雜性,消除了批處理和流媒體工作負載之間分歧的可能性,並降低運營成本(Lakehouse整合基礎設施是一個關鍵的好處)。此外,引發的許多其他內置庫可以被稱為流上下文,包括毫升庫。
  • 容錯和複蘇——結構化流檢查點狀態自動處理過程中。當發生故障時,它會自動恢複以前的狀態。故障恢複的非常快,因為它被限製為失敗的任務,而不是重新啟動整個流管道在其他係統中。此外,容錯使用可複製源和冪等彙支持端到端隻有一次語義。
  • 性能——結構化流提供了非常高的吞吐量和秒的延遲以更低的成本,充分利用SQL引擎性能優化的火花。係統還可以調整本身基於提供的資源從而交易成本,吞吐量和延遲和支持動態擴展的集群運行。這與係統,需要前期承諾的資源。
  • 靈活的操作——應用任意邏輯能力和操作的輸出流查詢使用foreachBatch,使能力執行操作,如插入寫入多個下沉,與外部數據源進行交互。超過40%的用戶在磚利用這個特性。
  • 有狀態的處理——支持狀態聚合,加入水印有界狀態和訂單處理。與(平)此外,任意的有狀態操作mapGroupsWithState RocksDB國家支持的存儲提供了高效、容錯狀態管理(如3.2火花)。

項目光速

的重要越來越感興趣流在企業和火花結構化流的事實標準在各種各樣的應用程序,項目光速將大力投資改善以下領域:

可預測的低延遲

Apache火花結構化流提供了一個平衡的性能在多個維度——吞吐量,延遲和成本。隨著結構化流中使用新的應用程序,我們分析客戶工作量指導改進尾延遲2 x。實現這一目標,一些措施我們將進行如下:

  • 抵消管理——我們的客戶的工作負載概要分析和性能實驗表明,抵消管理操作消耗高達30 - 50%的管道。這可以通過改善這些操作異步和可配置的節奏,從而減少了延遲。
  • 異步的檢查點——當前檢查點機製同步寫入到對象存儲在處理的一組記錄。這大大有助於延遲。這可以提高多達25%的重疊執行下一組的記錄和寫作的檢查點之前的群記錄。
  • 州檢查點頻率——火花結構化流檢查點狀態處理的一組記錄後,增加了端到端延遲。相反,如果我們讓它可調每N組檢查點,可以進一步減少延遲取決於選擇N。

增強的功能/事件處理數據

火花結構化流已經有豐富的功能表達主要的用例集。作為企業擴展湧入新的用例,需要額外的功能簡明地表達它們。項目光速推進功能在以下方麵:

  • 多個有狀態操作——目前,結構化流支持每個流的工作隻有一個有狀態的操作符。然而,一些用例需要多個國家運營商的工作如:

    • 鏈接時間窗聚合(如5分鍾暴跌窗口聚合之後1小時暴跌窗口聚合)
    • 鏈接stream-stream外平等加入(如左外連接B C)左外部連接
    • Stream-stream時間間隔加入時間窗聚合緊隨其後
    • 項目光速將支持此功能一致的語義。
  • 先進的窗口——火花結構化流提供基本的窗口,可以滿足大多數用例。先進的窗口將增加這個功能簡單,容易使用,直觀的API來支持任意窗口元素組,在窗口定義通用的處理邏輯,描述何時觸發處理邏輯能力和選擇驅逐窗口元素之前或之後處理邏輯。
  • 狀態管理——通過預定義的聚合器和連接狀態提供了支持。此外,專業api提供了直接訪問狀態和操作它。新功能,在光速,將把國家的發展模式隨著處理邏輯的變化和外部查詢狀態的能力。
  • 異步I / O——通常,ETL,需要加入一個與外部數據庫和microservices流。項目光速將引入一個新的API,管理連接到外部係統,批處理效率和處理異步請求。
  • Python API平價,而Python API是受歡迎的,它仍然缺乏原語進行有狀態的處理。光速將添加一個強大而簡單的API來存儲和操作狀態。此外,光速將為加強集成提供流行的Python數據處理軟件包像熊貓,方便開發人員。

連接器和生態係統

連接器更容易使用火花結構化流引擎處理的數據和處理數據寫入各種消息傳遞總線Apache卡夫卡和存儲係統,如三角洲湖。作為項目的一部分,光速,我們將在下列工作:

  • 新的連接器——我們將添加新的連接器工作與合作夥伴(例如,穀歌Pub / Sub,亞馬遜DynamoDB)使開發人員能夠輕鬆地使用火花結構化流與額外的消息傳遞引擎巴士和存儲係統他們喜歡。
  • 連接器的增強——我們將啟用新的功能和提高性能在現有的連接器。一些例子包括AWS我身份驗證的支持Apache卡夫卡連接器和增強的扇出支持亞馬遜運動連接器。

操作和故障排除

結構化流工作持續運行,直到顯式終止。由於不間斷的性質,有必要適當的工具和指標監控、調試和警報當超過一定閾值。對滿足這些目標,項目光速將改善以下:

  • 可觀察性——目前,度量生成結構化流管道監測需要編碼來收集和可視化。我們將統一度量收集機製並提供出口到不同的係統和格式的能力。此外,根據客戶輸入,我們將添加額外的故障診斷的指標。
  • Debuggability——我們將提供功能可視化管道和運營商如何分組和映射到任務執行人的任務正在運行。此外,我們將實現能力深入到具體的執行人,瀏覽日誌和各種指標。

接下來是什麼

在這個博客上,我們討論了火花結構化流的優點,以及它如何導致了廣泛的增長和采用。我們介紹了項目光速進步火花結構化流媒體實時時代隨著越來越多新用例和工作負載遷移流。

在隨後的博客,我們將擴大在各個類別的多個維度的提高火花結構化流性能,增強功能,操作和生態係統的支持。

項目光速將逐步推出合作和密切與社區合作。我們預計的大部分功能由明年初。

免費試著磚

相關的帖子

看到所有工程的博客的帖子
Baidu
map