在大數(shù)據(jù)環(huán)境中,原始、散亂的數(shù)據(jù)通常存儲在關(guān)系、非關(guān)系和其他存儲系統(tǒng)中。但是,就其本身而言,原始數(shù)據(jù)沒有適當(dāng)?shù)纳舷挛幕蚝x來為分析師、數(shù)據(jù)科學(xué)家或業(yè)務(wù)決策人提供有意義的見解。
大數(shù)據(jù)需要可以啟用協(xié)調(diào)和操作過程以將這些巨大的原始數(shù)據(jù)存儲優(yōu)化為可操作的業(yè)務(wù)見解的服務(wù)。Azure數(shù)據(jù)工廠是為這些復(fù)雜的混合提取-轉(zhuǎn)換-加載(ETL)、提取-加載-轉(zhuǎn)換(ELT)和數(shù)據(jù)集成項目而構(gòu)建的托管云服務(wù)。
例如,假設(shè)某個游戲公司收集云中的游戲所生成的萬兆字節(jié)的游戲日志。該公司的目的是通過分析這些日志,了解客戶偏好、人口統(tǒng)計信息和使用行為。該公司的另一個目的是確定向上銷售和交叉銷售機會、開發(fā)極具吸引力的新功能、促進(jìn)企業(yè)發(fā)展,并為其客戶提供更好的體驗。
為了分析這些日志,該公司需要使用參考數(shù)據(jù),例如位于本地數(shù)據(jù)存儲中的客戶信息、游戲信息和市場營銷活動信息。公司想要利用本地數(shù)據(jù)存儲中的這些數(shù)據(jù),將其與云數(shù)據(jù)存儲中具有的其他日志數(shù)據(jù)結(jié)合在一起。
為了獲取見解,它希望使用云中的Spark群集(Azure HDInsight)處理加入的數(shù)據(jù),并將轉(zhuǎn)換的數(shù)據(jù)發(fā)布到云數(shù)據(jù)倉庫(如Azure Synapse Analytics)以輕松地基于它生成報表。公司的人員希望自動執(zhí)行此工作流,并每天按計劃對其進(jìn)行監(jiān)視和管理。他們還希望在文件存儲到blob存儲容器中時執(zhí)行該工作流。
Azure數(shù)據(jù)工廠是解決此類數(shù)據(jù)方案的平臺。它是基于云的ETL和數(shù)據(jù)集成服務(wù),可讓你創(chuàng)建數(shù)據(jù)驅(qū)動型工作流用于大規(guī)模協(xié)調(diào)數(shù)據(jù)移動和轉(zhuǎn)換數(shù)據(jù)。可以使用Azure數(shù)據(jù)工廠創(chuàng)建和計劃數(shù)據(jù)驅(qū)動型工作流(稱為管道),以便從不同的數(shù)據(jù)存儲引入數(shù)據(jù)。可以構(gòu)建復(fù)雜的ETL流程,用于通過數(shù)據(jù)流或使用Azure HDInsight Hadoop、Azure Databricks和Azure SQL數(shù)據(jù)庫等計算服務(wù)直觀轉(zhuǎn)換數(shù)據(jù)。
此外,還可以將轉(zhuǎn)換的數(shù)據(jù)發(fā)布到數(shù)據(jù)存儲(例如Azure Synapse Analytics),供商業(yè)智能(BI)應(yīng)用程序使用。最終,通過Azure數(shù)據(jù)工廠,可將原始數(shù)據(jù)組織成有意義的數(shù)據(jù)存儲和數(shù)據(jù)湖,以實現(xiàn)更好的業(yè)務(wù)決策。
工作原理
數(shù)據(jù)工廠包含一系列為數(shù)據(jù)工程師提供完整端到端平臺的互連系統(tǒng)。
連接和收集
企業(yè)擁有各種類型的數(shù)據(jù)(位于云、結(jié)構(gòu)化、非結(jié)構(gòu)化和半結(jié)構(gòu)化的本地分散源中),都以不同的時間間隔和速度到達(dá)。
構(gòu)建信息生產(chǎn)系統(tǒng)時,第一步是連接到所有必需的數(shù)據(jù)和處理源(例如軟件即服務(wù)(SaaS)服務(wù)、數(shù)據(jù)庫、文件共享、FTP Web服務(wù))。下一步是根據(jù)需要將數(shù)據(jù)移至中央位置進(jìn)行后續(xù)處理。
沒有數(shù)據(jù)工廠,企業(yè)就必須生成自定義數(shù)據(jù)移動組件或編寫自定義服務(wù),以便集成這些數(shù)據(jù)源并進(jìn)行處理。集成和維護(hù)此類系統(tǒng)既昂貴又困難。另外,這些系統(tǒng)通常還缺乏企業(yè)級監(jiān)視、警報和控制,而這些功能是完全托管的服務(wù)能夠提供的。
而有了數(shù)據(jù)工廠,便可以在數(shù)據(jù)管道中使用復(fù)制活動,將數(shù)據(jù)從本地和云的源數(shù)據(jù)存儲移到云的集中數(shù)據(jù)存儲進(jìn)行進(jìn)一步的分析。例如,可以先將數(shù)據(jù)收集在Azure Data Lake Storage中,以后再使用Azure Data Lake Analytics計算服務(wù)對數(shù)據(jù)進(jìn)行轉(zhuǎn)換。也可將數(shù)據(jù)收集在Azure Blob存儲中,在以后再使用Azure HDInsight Hadoop群集對其進(jìn)行轉(zhuǎn)換。
轉(zhuǎn)換和擴(kuò)充
將數(shù)據(jù)保存到云中的集中式數(shù)據(jù)存儲后,使用ADF映射數(shù)據(jù)流來處理或轉(zhuǎn)換收集的數(shù)據(jù)。數(shù)據(jù)工程師可以使用數(shù)據(jù)流來構(gòu)建和維護(hù)在Spark中執(zhí)行的數(shù)據(jù)轉(zhuǎn)換圖,而無需了解Spark群集或Spark編程。
如果你偏向于手動編寫轉(zhuǎn)換代碼,ADF支持使用外部活動在HDInsight Hadoop、Spark、Data Lake Analytics和機器學(xué)習(xí)等計算服務(wù)中執(zhí)行轉(zhuǎn)換。
CI/CD和發(fā)布
數(shù)據(jù)工廠完全支持使用Azure DevOps和GitHub實現(xiàn)數(shù)據(jù)管道的CI/CD。這樣,你就可以增量開發(fā)和交付ETL流程,然后發(fā)布成品。原始數(shù)據(jù)被優(yōu)化為業(yè)務(wù)就緒型可使用的窗體后,請將數(shù)據(jù)載入Azure數(shù)據(jù)倉庫、Azure SQL數(shù)據(jù)庫、Azure CosmosDB或業(yè)務(wù)用戶可從其商業(yè)智能工具中指向的任何分析引擎。
監(jiān)視
成功地構(gòu)建和部署數(shù)據(jù)集成管道后(提供優(yōu)化數(shù)據(jù)的業(yè)務(wù)值),請監(jiān)視計劃的活動和管道,以了解成功率和失敗率。Azure數(shù)據(jù)工廠通過Azure門戶上的Azure Monitor、API、PowerShell、Azure Monitor日志和運行狀況面板,對管道監(jiān)視提供內(nèi)置支持。
頂級概念
一個Azure訂閱可以包含一個或多個Azure數(shù)據(jù)工廠實例(或數(shù)據(jù)工廠)。Azure數(shù)據(jù)工廠由以下關(guān)鍵組件組成。
·管道
·活動
·數(shù)據(jù)集
·鏈接服務(wù)
·數(shù)據(jù)流
·Integration Runtime
這些組件組合起來提供一個平臺,供你在上面編寫數(shù)據(jù)驅(qū)動型工作流(其中包含用來移動和轉(zhuǎn)換數(shù)據(jù)的步驟)。
管道
數(shù)據(jù)工廠可以包含一個或多個管道。管道是執(zhí)行任務(wù)單元的活動的邏輯分組。管道中的活動可以共同執(zhí)行一項任務(wù)。例如,一個管道可能包含一組活動,這些活動從Azure Blob引入數(shù)據(jù),然后在HDInsight群集上運行Hive查詢,以便對數(shù)據(jù)分區(qū)。
這樣做的好處是,可以通過管道以集的形式管理活動,不必對每個活動單獨進(jìn)行管理。管道中的活動可以鏈接在一起來按順序執(zhí)行,也可以獨立并行執(zhí)行。
映射數(shù)據(jù)流
創(chuàng)建和管理可用于轉(zhuǎn)換任意大小的數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換邏輯圖。可以構(gòu)建可重用的數(shù)據(jù)轉(zhuǎn)換例程庫,并通過ADF管道以橫向擴(kuò)展方式執(zhí)行這些流程。數(shù)據(jù)工廠將在可按需擴(kuò)展和縮減的Spark群集上執(zhí)行邏輯。你根據(jù)不需要管理或維護(hù)群集。
活動
活動表示管道中的處理步驟。例如,可以使用復(fù)制活動將數(shù)據(jù)從一個數(shù)據(jù)存儲復(fù)制到另一個數(shù)據(jù)存儲。同樣,可以使用在Azure HDInsight群集上運行Hive查詢的Hive活動來轉(zhuǎn)換或分析數(shù)據(jù)。數(shù)據(jù)工廠支持三種類型的活動:數(shù)據(jù)移動活動、數(shù)據(jù)轉(zhuǎn)換活動和控制活動。
數(shù)據(jù)集
數(shù)據(jù)集代表數(shù)據(jù)存儲中的數(shù)據(jù)結(jié)構(gòu),這些結(jié)構(gòu)直接指向需要在活動中使用的數(shù)據(jù),或者將其作為輸入或輸出引用。
鏈接服務(wù)
鏈接服務(wù)十分類似于連接字符串,用于定義數(shù)據(jù)工廠連接到外部資源時所需的連接信息。不妨這樣考慮:鏈接服務(wù)定義到數(shù)據(jù)源的連接,而數(shù)據(jù)集則代表數(shù)據(jù)的結(jié)構(gòu)。例如,Azure存儲鏈接服務(wù)指定連接到Azure存儲帳戶所需的連接字符串。另外,Azure Blob數(shù)據(jù)集指定Blob容器以及包含數(shù)據(jù)的文件夾。
數(shù)據(jù)工廠中的鏈接服務(wù)有兩個用途:
代表數(shù)據(jù)存儲,此類存儲包括但不限于SQL Server數(shù)據(jù)庫、Oracle數(shù)據(jù)庫、文件共享或Azure blob存儲帳戶。有關(guān)支持的數(shù)據(jù)存儲的列表,請參閱復(fù)制活動一文。
代表可托管活動執(zhí)行的計算資源。例如,HDInsightHive活動在HDInsight Hadoop群集上運行。有關(guān)轉(zhuǎn)換活動列表和支持的計算環(huán)境,請參閱轉(zhuǎn)換數(shù)據(jù)一文。
觸發(fā)器
觸發(fā)器代表處理單元,用于確定何時需要啟動管道執(zhí)行。不同類型的事件有不同類型的觸發(fā)器類型。
管道運行
管道運行是管道執(zhí)行實例。管道運行通常是通過將自變量傳遞給管道中定義的參數(shù)來實例化的。自變量可手動傳遞,也可在觸發(fā)器定義中傳遞。
參數(shù)
參數(shù)是只讀配置的鍵值對。參數(shù)是在管道中定義的。所定義的參數(shù)的自變量是在執(zhí)行期間通過由觸發(fā)器創(chuàng)建的運行上下文傳遞的或通過手動執(zhí)行的管道傳遞的。管道中的活動使用參數(shù)值。
數(shù)據(jù)集是強類型參數(shù)和可重用/可引用的實體?;顒涌梢砸脭?shù)據(jù)集并且可以使用數(shù)據(jù)集定義中所定義的屬性。
鏈接服務(wù)也是強類型參數(shù),其中包含數(shù)據(jù)存儲或計算環(huán)境的連接信息。它也是可重用/可引用的實體。
控制流
控制流是管道活動的業(yè)務(wù)流程,包括將活動按順序鏈接起來、設(shè)置分支??梢栽诠艿兰墑e定義參數(shù),在按需或者通過觸發(fā)器調(diào)用管道時傳遞自變量。它還包括自定義狀態(tài)傳遞和循環(huán)容器,即For-each迭代器。
變量
可以在管道內(nèi)部使用變量來存儲臨時值,還可以將這些變量與參數(shù)結(jié)合使用,以在管道、數(shù)據(jù)流和其他活動之間傳遞值。