2016 年 1 月

第 31 卷,第 1 期

本文章是由機器翻譯。

巨量資料 - 使用 Azure 資料湖與 Azure Data Factory 建立巨量資料管線

Gaurav Malhotra |2016 年 1 月

今年的 Microsoft Azure 的巨量資料方案已經過擴充,當 Azure 資料湖 (ADL) 服務,以及建立端對端 (E2E) 巨量資料的能力管線使用 ADL 並發表 Azure Data Factory (ADF)。在本文中,我會反白顯示 ADF 排程來移動和分析巨量資料的一次性和重複工作使用。

ADL 可提供數個重要技術,處理巨量資料更簡單且更容易存取。U SQL 語言是強大的 SQL 和 C# 支援平行執行的組合。您可以執行 U SQL ADL 分析定域機組供應項目,其中數百或數千個容器保留、 使用和發行存留期間的單一作業中。設定與 ADL 此定域機組環境很簡單。使用 Azure 管理入口網站,您可以快速並輕鬆地建立 ADL 帳戶的儲存體和分析,並佈建 ADF。分鐘內,按一下幾個按鈕,您可以設定 Azure 訂閱中的所有必要的帳戶。

帳戶佈建完成後,您可以建立端對端巨量資料管線中使用 Azure 管理入口網站、 Windows PowerShell、 C# SDK 和 Visual Studio 工具的 ADF。ADF 是雲端架構資料整合服務,來協調以及自動移動和轉換資料。ADF ADL 整合可讓您:

  • 將資料從指定的來源移至 ADL 存放區。
  • 建立巨量資料 ADF 管線執行 U SQL ADL 分析服務上處理步驟。

有一些常見的巨量資料案例該 ADL 和 ADF 的位址,包括客戶流失分析、 個人化的產品建議和保險的處理。一個 Azure 客戶的有趣的是正在分析 Web 服務或應用程式記錄檔。在本文中,我將告訴您如何建立資料處理站管線來分析 Web 記錄,先將 Web 記錄移到 ADL,然後執行 [U SQL 指令碼來處理它們。

Web 記錄分析案例

常見的商務洞察力案例是分析 Web 記錄,瞭解磁碟區,以及根據原始的地區或世界各地的地區設定的使用者要求的模式。這類分析,加強客戶了解、 行銷活動,包括當地語系化計劃的產品規劃。記錄檔所發出的 Web 應用程式、 網路裝置、 作業系統及所有裝置的方式智慧型或可程式化。資料流,例如錯誤記錄檔中,點選流檢測和 Web 伺服器記錄檔,可以輕鬆地累積 gb 或 tb 一週的速率。Web 記錄會累積在任何形式的儲存體,包括 SQL Azure、 Azure Blob 儲存體、 Amazon 簡單儲存體服務 (S3),並在內部和 Oracle 資料庫中。快速且有效率地分析這些記錄檔來探索使用模式和系統的問題有助於公司了解更佳的客戶使用量,最後客戶的參與和滿意度的磁碟機。

很容易將這些 Web 記錄檔儲存在 ADL 存放區,可以彈性調整來儲存數 pb 的資料。佈建時 ADL 市集帳戶,需要任何調整參數,此帳戶只成長以容納檔案載入至它的大小。您只要支付實際儲存的內容,因為服務是符合成本效益和缺乏固定限制帳戶或檔案大小加上大量的產能功能,使其適合用來進行巨量資料分析。此外,您不需要重寫程式碼或將資料移至不同的儲存體平台,因為儲存的資料大小增加或減少。

剖析和彙總 Web 記錄,根據特定資料分割,如 「 區域,是允許高度平行處理的活動。理想的情況下是可以剖析、 轉換及彙總這些記錄的個別伺服器伺服陣列的記錄的子集。然後,這些部分的結果文件中合併多個平行階段建立最終的彙總資料集之前。手動管理這個程序是非常複雜,而且容易產生次佳的執行,根據系統和變更圖形的第一天的資料從一天的完整資訊。不過,這正是 ADL 分析和 U SQL 語言做什麼自動。U SQL 可讓您表達您的目標彙總,不需要指定任何平行處理原則的指示詞的宣告式類似 SQL 的查詢語法。編譯器和排程器,然後找出作業中固有的平行處理原則程度,並配置資源為基礎的平行處理原則和任何指定的最大資源使用量的限制。使用 ADF,您可以輕鬆地建置管線藉由指定這類 U SQL 」 工作。經由其他一連串的工作。將活動新增到將資料從 Web 伺服器移至 ADL 存放區。並建立排程來定期處理資料。簡化建立管線和元件可讓您專注於商務邏輯而不是如何最佳化處理和儲存大型資料集。

取得設定

首先建立 ADL 存放區和分析帳戶和佈建的資料處理站。這是所有透過 Azure 管理入口網站。ADL 分析帳戶是實體,可協助您進行分組和管理查詢和執行巨量資料分析,您執行的程式。您可以管理計費與不同的 Azure 訂閱產生關聯,您的帳戶,並選擇定價層。有群組與其他資源,以供追蹤帳戶的選項。您甚至可以選擇的區域資料中心,讓您的帳戶存在,其可用於管理鄰近的內部資料。

ADL 儲存區服務是一項服務可從 HDFS 相容的系統,包括商業智慧 (BI) 工具和內部部署應用程式存取的巨量資料的儲存體。安裝程式是非常簡單,且您沒有指定於安裝時期任何限制。做為分析服務時,重要的選項是您想要儲存的資料的地理區域。在資料存放區,這很重要,因為可能會商務需求相關法律的相容性地區的公民的相關資料的儲存位置。ADL 存放區帳戶可供分別建立及使用的其他服務,但最常見的案例是搭配 ADL 分析建立帳戶。[圖 1 顯示建立 ADL 帳戶的畫面。您提供帳戶名稱,然後選擇您的訂閱、 資源群組和位置。建立新的資料湖存放選項可讓您建立新的存放區,同時並分析帳戶相同的選項。

在 Azure 管理入口網站中建立 ADL 帳戶
[圖 1 在 Azure 管理入口網站中建立 ADL 帳戶

在此範例中,Web 記錄資料會儲存在 Azure 儲存體,可讓您在 Azure 上儲存的 blob 資料。您也可以透過入口網站建立 Azure 儲存體。您是否使用 Azure Web 應用程式,或是網站上裝載的其他位置,將資料到 Azure 儲存體很簡單,而且表示會有高可用性和耐久性。在此範例中使用的範例 Web 記錄資料,請參閱 bit.ly/1ONi8c5

[圖 2 示範如何佈建 Azure data factory。如您所見,這些雲端服務所設定的程序是非常簡單。您不需要使用相同的地理區域為 ADL 服務 — data factory 可以使用任何區域中的服務作業。

佈建 Azure Data Factory
[圖 2 佈建 Azure Data Factory

資料處理站的資料存放區、 連結的服務和管線的組合。資料存放區和連結的服務是一種通常已經存在於之外 ADF 的外部實體的定義。管線是 ADF 中活動的邏輯群組。它們用於活動群組成一個單位,一起執行的工作。您會看到這我引導部落格分析的資料處理站所設定的詳細。

您可以建立使用 Azure 管理入口網站或 Visual Studio 這些實體。在網站中,在 [Data Factory] 檢視中,製作和部署選項可讓您選取的個別元件的資料處理站型別,並提供可以直接編輯並發佈的 JSON 程式碼片段 (請參閱 [圖 3)。或者,您可利用 Visual Studio 的 ADF 工具並用專案格式來識別並定義每個 data factory 的元件 ([圖 4)。專案可以再也發行至 azure data factory 中建立這些實體。

[製作和部署 Data Factory 使用 Web 編輯器
[圖 3 撰寫和部署 Data Factory 使用 Web 編輯器

[製作和部署 Data Factory 使用 Visual Studio 外掛程式
[圖 4 撰寫和部署 Data Factory 使用 Visual Studio 外掛程式

將資料移至 Azure 資料湖存放區

Web 記錄分析案例的第一個步驟是將資料移至 ADL 存放區。ADF 管線中使用 「 複製活動,您就可以將資料移至 ADL 存放區。若要執行複製作業,您需要建立 ADF 連結服務、 資料集和管線。ADF 中的連結的服務定義來連線到外部資源所需的資訊。連結的服務會使用 Data Factory 中的兩種用途。第一個要表示包含資料存放區,但不是限於的內部部署 SQL Server、 Oracle 資料庫、 檔案共用或 Azure blob 儲存體帳戶。第二個是代表可裝載活動執行的處理資源。例如,HDInsight Hive 活動在 HDInsight Hadoop 叢集上執行。在此情況下,您需要建立兩個連結的服務,各自對應到第二個 Azure 儲存體帳戶代表 ADL 存放區。

您也需要建立兩個 ADF 資料集。資料集是在 Azure 儲存體帳戶或 ADL 存放區中資料的邏輯參考。任何使用者資料不儲存在 ADF 本身,所以 ADF 來識別外部資料存放區,包括資料表、 檔案、 資料夾和文件中的資料結構所需的資料集定義。因為 ADF 不知道此資料結構,您需要在這裡定義它,讓系統知道哪些資料行和預期的類型。在此情況下,您需要建立一個資料集對應至包含 Web 記錄資料 (來源) 的 Azure 儲存體帳戶位置和對應至您要將 Web 記錄檔 (接收) ADL 存放區的第二個資料集。

最後,進行資料複本,您需要建立 ADF 管線包含複製活動。ADF 管線是活動,例如資料複本,可以執行在不同的時間間隔,以及可以定期執行的 Hive、 Pig 或 U SQL 指令碼活動的邏輯群組 — 每隔 15 分鐘,每小時、 每天或每月。複製活動在 ADF 功能非常強大,而且可讓您在內部或雲端來源和接收器可能會有不同的結構描述之間複製資料。您可以指定一些參數,或接受預設值,以開始。您有很多控制項,並可以微調排程和處理錯誤情況的原則。

雖然管線可以定期重複執行,目前的範例中執行一次將資料移至 ADL 存放區。在 JSON 程式碼片段 [圖 5 示範呼叫 EgressBlobToDataLakePipeline 管線的定義。此管線包含複製活動將資料從 Azure Blob 儲存體移至 Azure 資料湖存放區。它是排定為 2015/08/08 上執行,並只會執行一次 (管線作用期間的 「 開始 」 和 「 結束 」 屬性都相同)。

[圖 5 EgressBlobToDataLakePipeline 範例管線的定義

{
  "name": "EgressBlobToDataLakePipeline",
  "properties": {
    "description": "Egress data from blob to azure data lake",
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource",
            "treatEmptyAsNull": true
          },
          "sink": {
            "type": "AzureDataLakeStoreSink",
            "writeBatchSize": 10000,
            "writeBatchTimeout": "00:10:00"
          }
        },
        "inputs": [
          {
            "name": "RawBlobDemoTable"
          }
        ],
        "outputs": [
          {
            "name": "DataLakeTable"
          }
        ],
        "policy": {
          "timeout": "10:00:00",
          "concurrency": 1,
          "executionPriorityOrder": "NewestFirst",
          "retry": 1
        },
        "scheduler": {
          "frequency": "Day",
          "interval": 1
        },
        "name": "EgressDataLake",
        "description": "Move data from blob to azure data lake"
      }
    ],
    "start": "2015-08-08T00:00:00Z",
    "end": "2015-08-08T01:00:00Z",
    "isPaused": false
  }
}

ADF 管線中的複製活動成功完成時,Web 記錄檔已從 Azure Blob 儲存體移至 Azure 資料湖存放區。您可以進一步了解在 Azure Data Factory 資料移動活動 bit.ly/1MNbIqZ, ,並深入了解在 ADF 中使用 AzureDataLakeStore 連接器 bit.ly/1MRwvVZ。現在您已準備好處理和分析網站記錄。

U SQL 活動建立管線

ADL 存放區中的資料,您現在可以執行 U SQL 指令碼處理和分析 Web 記錄 ADL 分析服務。您可以建立管線,將會使用來自 ADL 存放區的資料、 處理步驟 ADL 分析服務上執行的 U SQL 指令碼,產生的輸出 ADL 存放區中。下游應用程式可以使用直接從 ADL 存放區處理的輸出,或您可以選擇將資料從 ADL 存放區複製到 Azure SQL 資料倉儲如果您的 BI 應用程式使用 SQL 倉儲做為後端存放區。

為了處理 Web 記錄,您必須重新建立 ADF 連結服務、 資料集和管線。您可以重複使用上一個步驟中建立,如果您想要建立一連串的第一次執行資料移動,並執行中單一 ADF U SQL 指令碼,以執行資料分析管線 ADL 存放區連結服務。或者,您可以建立新的資料處理站只會執行資料分析。ADF 管線在此情況下包含 Azure 資料分析 U SQL 活動,並執行 U SQL 指令碼,以判斷英國 ("en-us gb 」) 的地區設定的所有事件和日期早於"2012年/02/19 的值。 」 [圖 6 包含 ComputeEventsByEnGbRegionPipeline,定義這類 U SQL 活動來執行 Web 記錄檔處理管線的 JSON 定義。

[圖 6 ComputeEventsByEnGbRegionPipeline 範例管線的定義

{
  "name": "ComputeEventsByEnGbRegionPipeline",
  "properties": {
    "description": "This is a pipeline to compute events for en-gb locale
      and date less than 2012/02/19.",
    "activities": [
      {
        "type": "DataLakeAnalyticsU-SQL",
        "typeProperties": {
          "scriptPath": "scripts\\usql\\SearchLogProcessing.txt",
          "scriptLinkedService": "StorageLinkedService",
          "degreeOfParallelism": 3,
          "priority": 100,
          "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
          }
        },
        "inputs": [
          {
            "name": "DataLakeTable"
          }
        ],
        "outputs": [
          {
            "name": "EventsByEnGbRegionTable"
          }
        ],
        "policy": {
          "timeout": "06:00:00",
          "concurrency": 1,
          "executionPriorityOrder": "NewestFirst",
          "retry": 1
        },
        "scheduler": {
          "frequency": "Day",
          "interval": 1
        },
        "name": "EventsByRegion",
        "linkedServiceName": "AzureDataLakeAnalyticsLinkedService"
      }
    ],
    "start": "2015-08-08T00:00:00Z",
     "end": "2015-08-08T01:00:00Z",
    "isPaused": false
  }
}

U SQL 指令碼中的 [圖 7 管線執行所在的指令碼/usql 資料夾中 (在管線 JSON 中的 scriptPathproperty 中 [圖 5) Azure Blob 儲存體帳戶對應到已部署 StorageLinkedService。值 @ 中並且 @out 指令碼中傳遞參數動態 ADF 所使用的管線 JSON 中的參數區段 (請參閱 「 參數 」 一節 [圖 6)。您也可以指定其他屬性,例如 degreeOfParallelism 或在您的管線定義 ADL 分析服務上執行之工作的優先順序。這個 U SQL 指令碼處理 Web 記錄,會傳回"gb en-us"地區設定的所有事件和日期小於"2012年/02/19 的值。 」

[圖 7 U SQL 指令碼 SearchLogProcessing.txt

@searchlog =
  EXTRACT UserId          int,
          Start           DateTime,
          Region          string,
          Query           string,
          Duration        int?,
          Urls            string,
          ClickedUrls     string
  FROM @in
  USING Extractors.Tsv(nullEscape:"#NULL#");
@rs1 =
   SELECT Start, Region, Duration
   FROM @searchlog
WHERE Region == "en-gb";
@rs1 =
  SELECT Start, Region, Duration
  FROM @rs1
  WHERE Start <= DateTime.Parse("2012/02/19");
OUTPUT @rs1  
  TO @out
    USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

監視巨量資料管線

Data Factory 服務提供可靠且完整的儲存、 處理和資料移動服務檢視。它可協助快速評估端對端資料管線健康情況、 找出問題並採取修正動作,如有需要。您可以也以視覺化方式追蹤跨任何來源資料之間的作業歷程和關聯性,並查看工作執行、 系統健全狀況和相依性,從單一監視儀表板的完整歷程記錄處理。ADF 圖表檢視 (請參閱 [圖 8) 在管理入口網站會顯示作業的歷程資料處理站。您可以看到兩個管線和對應的資料集: EgressBlobToDataLakePipeline (複製資料從 Azure Blob 儲存體到 Azure 資料湖存放區),並 ComputeEventsByEnGbRegionPipeline (取得所有事件"gb en-us"地區設定和日期小於"2012年/02/19")。

Azure Data Factory 圖表檢視
[圖 8 Azure Data Factory 圖表檢視

ADF 複製管線中的 [圖 8 會開始資料集有 「 每日頻率以及開始和結束管線定義中的參數均設定為 2015/08/08,08/08/2015年上執行。因此,管線將只會針對該日執行,並只執行一次執行 U SQL 指令碼。您可以進一步了解排程 ADF 管線 bit.ly/1lEVjuM。按一下 [圖表] 檢視中 EventsByEnGbRegionTable,若要查看對應的活動執行和其狀態 (請參閱 [圖 9)。

Azure Data Factory 活動檢視
[圖 9 Azure Data Factory 活動檢視

您可以看到在 ADF ComputeEventsByEnGbRegionPipeline U SQL 活動已順利執行,並建立 Result.tsv 檔案 (/ datalake/output/Result.tsv) AzureDataLakeStore 帳戶中。Result.tsv 包含"gb en-us"地區設定的所有 Web 記錄事件和日期 2012年/02/19 的值大於或等於。您可以登入管理入口網站,並以視覺化方式檢視產生的 Result.tsv 檔案中使用 Azure 資料湖資料總管 (返回 [圖 4) 做為處理程序中步驟 ADL 存放區中。

您可以在 Azure Data Factory 中找到有關 AzureDataLakeAnalyticsU SQL 活動的詳細文件 bit.ly/1WWtxuy

總結

依照所述的步驟,您可以建置端對端巨量資料管線中使用 Azure Data Factory 可讓您將資料移至 Azure 資料湖存放區。然後,您可以使用 Azure 資料湖分析服務 U SQL 指令碼來執行 Web 記錄檔處理。產生的系統可以動態調整根據您的需求,並可以擴充來重複執行。您可以也進一步的下游 Web 記錄檔輸出的處理作業,並將它移到另一個後端存放區,讓結果可供 Power BI 或您的組織使用任何其他 BI 應用程式。此外,您也可以使用 ADF PowerShell cmdlet、 C# SDK 和外掛程式的 Visual Studio 建置這些 E2E 巨量資料管線,使用 ADL。Azure 資料湖,搭配 Azure Data Factory,只是除掉通常確保,您目前和未來的企業必須符合在雲端、 巨量資料與相關的複雜性。如需使用 Azure 服務解決巨量資料的詳細資訊,特別注意這個空間。


Gaurav Malhotra是 Azure Data Factory 團隊的專案經理。他存在於也在美國華盛頓州 Redmond 的運作方式與他連絡 gamal@microsoft.com

感謝以下的微軟技術專家對本文的審閱: Omid Afnan、 Harish Kumar 和 Sachin Sheth
Omid Afnan 是使用實作上的分散式的計算系統和相關的開發人員工具鏈結 Azure 大數據小組的首席程式經理。他會存在,及在中國運作。與他連絡 omafnan@microsoft.com

Harish Kumar Agarwal 是 Azure Data Factory 小組程式經理。他可以到達 hariag@microsoft.com

Sachin Sheth 是 Azure 資料湖小組的專案經理。您可以連線到他 sachins@microsoft.com