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