建構資料湖泊

本文將探索如何在 Google Cloud Platform (GCP) 上建構資料湖泊。有了資料湖泊,機構就能彈性地以資料格式擷取業務營運所有環節的資訊。長期下來,資料可能會累積到 PB 甚或 EB 規模。不過由於可將儲存與運算作業分隔開來,因此現在能以更經濟實惠的方式儲存所有這些資料。

擷取並儲存資料之後,您可以使用各種處理技術,從中擷取深入分析內容。資料倉儲技術已成為進行商業分析的標準做法。不過,若要採用這個方法,就必須針對大家熟知的資料類型 (例如訂單、訂單詳情、庫存等),擬定十分嚴謹的結構定義。如果您僅採用傳統的資料倉儲技術來建構分析工具,可能就難以處理不符合明確結構定義的資料,因為這類資料往往會遭捨棄並永久遺失。

不過,從資料倉儲技術轉換至資料湖泊的「儲存所有資料」做法,只有在仍能從所有資料中擷取深入分析內容時才適用。數據資料學家、工程師和分析師通常會希望用自選的分析工具,處理和分析資料湖泊中的資料。此外,資料湖泊必須支援從多個資料來源擷取大量資料。

考量上訴因素後,以下說明如何在 GCP 上建構資料湖泊。下圖描述資料湖泊解決方案的關鍵階段。

資料湖泊解決方案中的關鍵階段

本文將詳細探索各個階段,並說明 Google Cloud Platform 如何為您提供協助。

儲存資料:將 Cloud Storage 視為資料湖泊

基於以下多個原因,Cloud Storage 非常適合做為中央儲存空間存放區。

優異效能和持久耐用:採用 Cloud Storage 後,您可以先開始儲存一些小型檔案,再讓資料湖泊成長至 EB 規模。如果搭配其他服務 (如 Cloud Pub/Sub) 一起使用,Cloud Storage 可支援大量擷取新資料,以及大量使用已儲存的資料。對資料湖泊而言,效能固然重要,但持久耐用卻更為關鍵,而 Cloud Storage 便是為了達成 99.999999999% 的耐用性而設計。

同步一致性:Cloud Storage 能夠從許多其他物件儲存空間中脫穎而出的主要關鍵,就是能在各種情境下達到同步一致性,例如寫入後的讀取作業、列出值區與物件,以及授予資源存取權。如果無法達成這種一致性,您就必須先實作複雜且耗時的變通方法,才有辦法判斷何時可以處理資料。

符合成本效益:Cloud Storage 提供不同價格的多種儲存空間級別,以兼顧不同存取模式和可用性需求。此外,本服務也提供您一些彈性,可在成本和資料存取頻率之間取得平衡。在不影響效能的情況下,您可以使用穩定一致的 API 存取不同儲存空間級別中的資料。舉例來說,您可以使用生命週期政策,將不常使用的資料封存至 Cloud Storage Nearline 或 Cloud Storage Coldline,供日後存取;也能以短至亞秒的延遲時間,收集訓練資料以進行機器學習。

彈性處理:Cloud Storage 以原生方式整合多項強大的 GCP 服務,例如 BigQueryCloud Dataproc (Hadoop 生態系統)、適用於無伺服器數據分析的 Cloud DataflowCloud Video IntelligenceCloud Vision,以及 Cloud Machine Learning Engine,讓您靈活選用適合分析資料的工具。

中央存放區:Cloud Storage 提供一個集中位置,用來儲存和存取來自不同團隊和部門的資料,藉此打破資料的隔閡,同時維持資料的同步性。

安全無虞:由於資料湖泊專門用來儲存所有類型的資料,因此企業會期望我們提供有效的存取控制功能,確保資料不會落入他人手中。Cloud Storage 提供多種機制,讓您針對資料資產實作精細的存取控制。

資料擷取

資料湖泊架構必須能從不同的來源擷取各種資料量,這些來源包括物聯網 (IoT) 感應器、網站上的點擊流活動、線上交易處理 (OLTP) 資料、內部部署資料等。在本節中,您將瞭解 Google Cloud Platform 如何支援多種擷取使用案例。

Cloud Pub/Sub 和 Cloud Dataflow:您可以依據資料量擴大或縮小規模,直接擷取即時資料並將擷取的資料儲存至 Cloud Storage。

Storage 移轉服務:移動大量資料很少會像發出單一指令如此直接明瞭。您必須處理各式各樣的問題,像是排定定期的資料移轉作業、同步處理來源和接收器間的檔案,或使用篩選器移動特定檔案。 Storage 移轉服務提供完善的機制來完成這些工作。

gsutil:如要進行一次性轉移作業或手動進行轉移作業,您可以考慮使用適用於 Windows、Linux 和 Mac 的開放原始碼指令列工具 gsutil。這項工具支援多執行緒轉移作業、已處理的轉移作業、複合式平行上傳作業、重試和續傳功能。

Transfer Appliance:視您的網路頻寬而定,如果要將大量資料遷移到雲端進行分析,使用 Transfer Appliance 在離線狀態進行遷移或許較為省時。

請參閱更詳盡的擷取選項總覽,以及選用擷取選項時須考量的關鍵決策標準。

處理和分析

擷取並儲存資料後,接下來就是將資料用於分析。在某些情況下,您可以在資料擷取後,隨即將資料儲存在大家熟知的結構定義中,以簡化就地查詢。舉例來說,如果您以 Avro 格式將傳入的資料儲存在 Cloud Storage 中,就可以執行以下操作:

  • 在 Cloud Dataproc 上使用 Hive 對資料發出 SQL 查詢。
  • 對 BigQuery 資料直接發出查詢
  • 將資料載入 BigQuery,然後進行查詢。

不過,您不一定都能在擷取和儲存資料時,就將資料形塑成大家熟知的結構定義。事實上,選擇維護資料湖泊 (而非資料倉儲) 的主要原因,就是為了儲存現有的所有資料,方便日後擷取深入分析內容。視原始資料的性質和要執行的分析類型而定,這個工作流程可能十分簡易,不過也可能相當複雜。下圖提供概要總覽。

資料湖泊工作流程的概要總覽

資料探勘及發掘

由於大部分儲存在資料湖泊中的資料無法立即使用,因此您必須先探勘資料以獲取潛在價值。Jupyter Notebook 是用來發掘原始資料的熱門工具。因此,GCP 提供了名為 Cloud Datalab 的全代管 Jupyter Notebook 服務。

Cloud Datalab 已預先安裝多種常用的數據資料程式庫,例如 TensorFlow 和 NumPy。除了 Cloud Datalab 之外,您還可以使用 Cloud Dataproc 中的傳統 Hadoop 生態系統工具,以及透過 Cloud Dataflow 完全以無伺服器模式執行分析。功能強大的 SQL 式分析則可透過 Cloud Dataprep by Trifacta 轉換原始資料,並將轉換後的資料載入 BigQuery。

瞭解資料湖泊中部分原始資料的潛在分析價值後,您就可以將這些資料提供給更廣大的目標對象使用。

設計與部署工作流程

部分資料更加普及後,就能建立起更明確的資料市集,如上圖所示。您可以利用經自動化調度管理的資料管道,將原始資料轉換為下游程序和使用者可用的格式,藉此將資料市集維持在最新狀態。這些管道會因資料性質和使用的分析類型而有所不同。以下提供幾種常見的分析工作流程,並說明如何在 GCP 上實作這些流程。

轉換原始資料並載入 BigQuery

下圖為簡易且常見的工作流程,您可以透過擷取、轉換及載入 (ETL) 程序擷取資料至 BigQuery 資料倉儲。接下來,您可以使用 SQL 查詢資料。Cloud Dataprep 這項視覺化工具可用來清理和準備資料,適合用於簡易的 ETL 工作;若將 Apache Beam 搭配 Cloud Dataflow 使用,則可讓涉及更多面向的 ETL 工作更有彈性。

將資料載入 BigQuery 的工作流程

批次分析

如要使用 Hadoop 生態系統中的產品進行批次分析,請在獨立的 Cloud Storage 位置中儲存轉換後的資料。接下來,您可以透過 Spark、Spark SQL、SQL on Hive 和類似工具,使用 Cloud Dataproc 對資料進行查詢。修正後的資料常採用 Apache Avro、Apache Parquet 和 Apache ORC 等格式。下圖概略說明這個工作流程。

使用 Hadoop 產品進行批次分析

即時分析

如果您想要採用 SQL 的便捷管道,在 BigQuery 上進行串流處理可讓您在執行擷取作業時就對資料進行查詢。採用 Cloud Pub/Sub 和 Cloud Dataflow 並搭配 Beam 一起使用,可提供進階的串流處理功能,讓使用者將資料儲存到 BigQuery 之前,便能執行匯總、區間設定和篩選作業。如要進行時間序列分析,您可以將已擷取的資料儲存到 Cloud BigTable,以便快速進行分析。下圖說明這個工作流程。

將資料儲存在 Cloud BigTable 以進行即時分析

機器學習技術

機器學習技術可因資料湖泊中的大量資料而獲益良多。在識別出有用的訓練資料、相關資料準備步驟,以及機器學習網路架構後,您便可依下圖所示來調度管理這些步驟。Cloud Machine Learning Engine 可讓您輕鬆修正模型,然後使用模型進行批次和線上預測。

調度管理機器學習所用資料

並非所有機器學習使用案例都需要設計並訓練自訂模型。GCP 針對語音、視覺、影片智慧和自然語言處理提供預先訓練模型。如有上述用途,請將相關輸入內容 (例如音訊、圖片或影片) 傳送到相應的 GCP 服務。接下來,您就可以擷取寶貴的中繼資料,並將中繼資料儲存在 BigQuery 等服務中,以便進一步執行查詢和分析作業。下圖說明這個流程。

使用預先訓練的機器學習模型

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Architectures