Dagster:讓數據更接近業務價值的新的數據編排器
譯文譯者 | 李睿
審校 | 重樓
本文將分析一種新的數據編排器:Dagster。在行業專家看來,這是第一代數據編排器,它使數據管道更接近關鍵業務流程,而這些將真正成為關鍵任務解決方案的業務數據流程。為了描述Dagster的功能和用例,將提供一些有關模式的場景和一些歷史信息,這些信息對于理解它帶來的業務價值是十分必要的。
在過去的十年中,有許多圍繞著編排和編排模式的發展趨勢。以下將提供這些模式的簡單描述:
- 編排:它是一個由編排系統編排和集中的定義良好的工作流。編排系統就像一個樂隊,樂隊的指揮將設定節奏并指揮演奏人員正確演奏。編排有三個主要特點:
(1)提供集中式工作流,方便地可視化業務或數據流程。
(2)工作流由一個最關鍵的層管理。如果編排系統崩潰,就沒有業務服務,就像沒有樂隊指揮,音樂會也不會取得成功一樣。
(3)它們可以非常靈活地集成到不同的架構模式中,例如API、事件驅動、RPC或數據流程。
- 編排:它基于事件驅動或流架構,目標是架構中的每一個組件都可以獨立工作,并有自己的責任來決定必須采取的行動。編排有三個主要特點:
(1)它必須基于事件驅動或流模式。
(2)沒有單一和集中的層,因此不存在單點故障,除非只有單個消息代理。
(3)為理解流程提供更多的可擴展性、靈活性和復雜性。
編排器和業務流程管理軟件一直接近業務層,這提高了它們在企業戰略技術路線圖中的受歡迎程度。第一代業務流程管理(BPM)出現在2000年左右,是面向軟件工程師的技術。
在2014年到2018年期間,事件驅動和編排模式開始流行,首先是Netflix,然后是Apache Kafka等流媒體平臺的出現。
與軟件世界相比,數據世界的出現總是有些晚。盡管正朝著一個場景前進,但在這個場景中,操作和分析世界將不再是孤立的。當企業需要應用數據驅動的方法(數據是決策過程核心的一部分)時,分析層和操作層作為兩種不同的思維工作的架構和團隊拓撲就不起作用了。
數據世界發生了什么
當大數據的概念開始流行時,出現了第一批數據編排器,例如Apache Ozzie(2010年由雅虎公司開發),它基于DAG XML配置,是一個預定的工作流,專注于Hadoop生態系統。不久之后,基于Python的Apache Airflow(Airbnb在2015年推出)出現了。它提供了更多的功能,如從DAG XML配置遷移到編程配置,以及Hadoop生態系統之外的更多集成,但也是一個定時工作流系統。在兩者的中間出現了Luigi(2012年由Spotify公司開發):基于Python,但面向管道而不是DAG,但包括有趣的軟件最佳實踐,例如A/B測試。
<workflow-app name="useooziewf" xmlns="uri:oozie:workflow:0.1">
...
<decision name="mydecision">
<switch>
<case to="reconsolidatejob">
${fs:fileSize(secondjobOutputDir) gt 10 * GB}
</case> <case to="rexpandjob">
${fs:fileSize(secondjobOutputDir) lt 100 * MB}
</case>
<case to="recomputejob">
${ hadoop:counters('secondjob')[RECORDS][REDUCE_OUT] lt 1000000 }
</case>
<default to="end"/>
</switch>
</decision>
...
</workflow-app>
Apache Airflow是第一個真正意義上的數據編排器,但在人們看來,它有一些改進之處,使其成為一個非常關注傳統數據世界的產品,而不是關注數據正在成為企業決策中心的這一新現實。
- 其用戶界面很差,完全面向數據工程師。
- 主要面向執行任務,而不知道這些任務是做什么的。
- 一切都是一項任務,增加了可維護性和理解性方面的復雜性。
- 2021年底引入了傳感器的概念,傳感器是一種特殊類型的運算符,用于等待外部事件,如Kafka事件、JMS消息或基于時間的事件。
import requests
from airflow.decorators import dag, task
@dag(
dag_id="example_complex",
schedule_interval="0 0 * * *",
start_date=pendulum.datetime(2022, 1, 1, tz="UTC"),
catchup=False,
dagrun_timeout=datetime.timedelta(minutes=60),
)
def ExampleComplex():
...
@task
def get_data():
...
@task
def merge_data():
...
dag = ProcessEmployees()
所有這些編排解決方案的發展都有一個共同點:這些公司(雅虎、Airbnb或Spotify)在管理其數據管道的復雜性方面面臨的挑戰。
數據驅動:數據新時代
編碼器工具的第一個版本非常注重數據工程師的經驗,并基于傳統的分析和操作平臺架構,例如數據湖、數據中心或實驗數據科學工作區。
行業專家表示,他們在2017年左右開始進入數據世界的旅程。在此之前,一直致力于接近業務流程并基于事件驅動解決方案的操作任務關鍵型解決方案。在那一刻發現了一些工具,例如Oozie或Airflow,它們是ETL工具,專注于計劃任務/工作流,沒有云計算解決方案,基于企業復雜的實施和維護,可擴展性差,用戶體驗差。
他們當時的第一個想法是,這些是現在必須滿足的工具,但在未來幾年不會使用。如今,數據驅動的方法已經改變了一切,每天分析和操作工作負載之間的界限都比以往任何時候都更加分散。有許多基于分析和操作工作負載的關鍵業務流程。這些關鍵流程中的許多可能與幾年前的非關鍵數據管道非常相似。2020年,Zhamak Deghani發表了一篇關于數據網格原理的文章,她寫了一句特別重要的話:“我確實相信,在未來的某個時刻,我們的技術會發展,使這兩個層面更加緊密地結合在一起,但現在,我建議將它們的關注點分開。”
而專家的觀點是,這些平臺比他們想象的更接近,就業務價值而言,它們比數據網格本身的邏輯架構更容易在小范圍內實現。例如,考慮時尚零售行業和關鍵流程,例如分配、電子商務或物流解決方案。多年前,所有這些流程都是可操作的,其中許多都使用了SAP或Oracle等傳統應用程序,而如今,他們需要復雜的數據流程,包括大數據攝取、轉換、分析和機器學習模型,以提供實時建議和需求預測,從而實現數據驅動的決策。
當然,需要傳統的數據管道/工作流,基于獨立操作和分析平臺的傳統解決方案將繼續為一些報告、批分析流程、實驗和其他分析創新提供價值。但如今還有其他類型的數據處理;具有不同需求并提供更多業務價值的業務數據流程。需要提供以下功能的數據解決方案:
- 更好的軟件開發體驗和數據代碼管理,應用所有最佳實踐,例如隔離環境、單元測試、A/B、數據合同等。
- 友好而豐富的集成生態系統,不僅在大數據世界中,而且在通用數據世界中。
- 基于云的解決方案,提供易于擴展、低維護和易于與IAM解決方案集成。
- 不僅為開發人員,而且為數據科學家、數據分析師、業務分析師和運營團隊提供更好的用戶體驗。
Dagster簡介
Dagster是一個數據流編排平臺,它超越了人們所理解的傳統數據編排器。該項目由Nick Shrock于2018年啟動,是他在Facebook工作時發現的一種需求的結果。Dagster的目標之一是提供一種工具,消除管道開發和管道操作之間的障礙,但在這個過程中,開始將數據處理世界與業務流程聯系起來。
Dagster與以前的解決方案相比有了顯著的改進。
- 面向數據工程師、開發人員和數據/業務操作工程師:它的多功能性和抽象性允許以更面向開發人員的方式設計管道,應用軟件最佳實踐和管理數據,并將數據管道作為代碼。
- 遵循數據工程的優先原則方法,完整的開發生命周期:開發、部署、監視和可觀察性。
- 它包含了一個不同的新概念,即軟件定義資產。資產是在Dagster中建模并持久化在數據存儲庫中的數據對象或機器學習。
- Dagit UI是一個基于Web的界面,用于查看Dagster對象并與之交互。這是一個非常直觀,用戶友好的界面,允許非常簡單的操作。
- 這是一個開源的解決方案,同時提供SaaS云解決方案,加速解決方案的實施。
- 非常快速的學習曲線,使開發團隊能夠在早期交付價值。
了解Dagster的概念
以下將解釋一些基本概念,給出簡單的定義,并通過示例構建簡單的業務數據管道。
編排器的公共組件
在高層次上,這些是任何編排器的基本組件:
- 作業:主要執行單位和監控單位;用配置和參數實例化一個圖。
- 操作:基本上它們是想要執行的任務,包含操作,可以執行簡單的任務,例如執行數據庫查詢(攝取或檢索數據),啟動遠程作業(Spark, Python等),或發送事件。
- 圖:子圖中相互連接的操作的集合,操作可以組合成一個圖來完成復雜的任務。
軟件定義資產
資產是持久存儲中的對象,例如表、文件或持久機器學習模型。軟件定義資產是一個Dagster對象,它將資產與用于生成其內容的功能和上游資產結合在一起。
這是Python中的聲明性數據定義,允許:
- 將數據合同定義為代碼,以及如何在管道中使用它們。
- 通過數據投影定義實體的組成,無論其物理結構如何。
- 將用于計算資產的業務邏輯與用于讀取和寫入持久存儲的I/O邏輯解耦。
- 應用測試最佳實踐,包括在編寫單元測試時使用模擬的能力。
- 定義分區的能力為進程的運行和重新啟動流程打開了一個可能性的世界。有時,只需要重新處理由于某種原因處理不正確或不完整的分區。
一個驚人的能力是能夠使用外部工具,例如DBT、Snowflake、Airbyte、Fivetran和許多其他工具來定義資產。這是令人驚訝的,因為它能夠融入全球平臺,而不僅僅是大數據生態系統。
啟動作業的選項
在這種情況下,最大的區別是這些傳感器提供的功能:
- 調度:按固定時間間隔執行作業。
- 傳感器:允許基于一些外部事件(如Kafka事件、S3中的新文件、特定資產具體化或數據分區更新)運行。
- 分區:允許基于資產數據子集的更改運行,例如,在特定時間窗口內的數據集中的記錄。
- 回填:它提供了只在感興趣的分區集上重新執行數據管道的能力。例如,重新啟動管道,該管道將計算每個國家的商店銷售的聚合,但只計算具有美國商店數據的分區。
傳感器、分區、回填、IO管理器和資產提供的功能的組合代表了數據管道編排世界中非常重要的范式轉換。
IO管理器
它提供了與持久存儲庫的集成組件,允許持久化資產和操作輸出,并將其加載到S3、Snowflake或其他數據存儲庫。
這些組件包含與架構中使用的每個外部通道的所有集成邏輯。可以使用現有的集成,擴展它們以包含特定的邏輯,或者開發新的邏輯。
譜系
資產的使用提供了譜系、數據可觀測性和數據質量監控的基礎層。在專家看來,數據沿襲是一個非常復雜和關鍵的方面,現在已經超越了傳統的表,包括API、主題和其他數據源。雖然Dagster提供了強大的功能,但它應該是平臺整體譜系中的另一個來源,而不是真相的來源。
調試和可觀察性
Dagster的另一個與眾不同的功能是,當使用軟件定義資產時,它提供了數據可觀察性。數據操作員或數據工程師有幾個特征來分析數據管道:
- 管道狀態,操作狀態和定時。
- 帶有錯誤和信息跟蹤的日志。
- 資產可以包括顯示信息的元數據和訪問數據物化的鏈接。它甚至提供了將相關信息發送到不同渠道的能力,例如在S3中的報告中的松弛、事件或持久性。
這些功能允許工程師擁有自我自主權,而不會將編排器視為一個黑盒。
元數據
Dagster允許在所有級別添加元信息,最重要的是,數據操作或任何其他操作用戶都可以訪問它。擁有元數據是非常重要的,但它也必須是可用的,這就是Dagster發揮重要作用的地方。
操作團隊有較少的過程環境和更多的認知變化,因為他們不參與開發,但同時管理多個生產流。一旦數據工作流成為業務關鍵任務的一部分,就必須提供這些元信息。
關鍵業務流程的Dagster
Dagster允許擁有一個面向數據處理的工具,可以在關鍵路徑上將其集成到業務流程中,以提供最大的業務價值。考慮一下從倉庫到商店或其他渠道(如合作伙伴或電子商務)的庫存補充零售過程。這是一個從配送倉庫到商店補充物品的過程,目標是在正確的地方以最優的數量提供正確的產品,以滿足客戶的需求。
- 通過確保所有渠道都有產品,避免缺貨,改善客戶體驗。
- 通過避免補充銷售概率低的產品來提高盈利能力。
- 這是一個業務流程,其中分析和機器學習模型有很多影響。可以將其定義為數據驅動的業務流程。
庫存補充是一個復雜的業務關鍵操作過程,以需求預測和庫存清單為主要支柱:
- 需求預測需要一個先進的機器學習過程,基于歷史數據來預測未來需求。
- 庫存清單提供了每個地點(如商店、倉庫、分銷商等)的可用庫存數量。
- 銷售根據定價、降價等指標提供有關產品需求的信息。
- 這些流程可以每周、每天或一天多次啟動,這取決于是否從中央倉庫或例如靠近實體店的倉庫進行補貨。
這個流程需要一些近乎實時更新的信息,但它是以批處理或微批處理模式運行的數據過程。Dagster是第一個真正支持在操作層從純操作角度交付業務價值的數據編排器。
Dagster的常用案例
Dagster中還有其他更傳統的用例,例如:
- 具有不同來源的數據管道,并作為分析系統(如數據倉庫或數據湖)的目的地。
- 機器學習訓練模型。
- 整合機器學習模型的分析過程。
當然,Dagster代表了上述相同標準的這類過程的演變。
結論
預計未來幾年將是數據世界令人興奮的幾年,并且正在不斷發展,特別是在工具的構建方面,這些工具能夠對業務產生更真實、更緊密的影響。Dagster是朝著這個方向邁出的又一步。
而面臨的挑戰不是新的數據架構或復雜的分析系統,挑戰在于盡快提供真正的業務價值。風險在于認為Dagster這樣的工具和數據網格這樣的架構會給自己帶來價值。這些工具提供了多年前所沒有的功能,并允許設計滿足客戶需求的功能。
人們需要從所犯的錯誤中吸取教訓,運用持續改進和批判性思維的方法來做得更好。Dagster是一個很好的工具和偉大的創新,就像Dbt、Apache Kafka、DataHub Data Catalog等其他工具一樣,但如果相信一個工具可以解決所有的需求,那么將構建新一代的龐然大物。
Dagster雖然是一個很好的產品,但它只是補充解決方案以增加價值的另一部分。
原文標題:Dagster: A New Data Orchestrator To Bring Data Closer to Business Value,作者:Miguel Garcia