2016 年 1 月

第 31 卷,第 1 期

此文章由机器翻译。

大数据 - 使用 Azure Data Lake 和 Azure 数据工厂创建大数据管道

通过 Gaurav Malhotra |2016 年 1 月

Microsoft Azure 大数据产品/服务时 Azure 数据 Lake (ADL) 服务,以及创建端到端 (E2E) 大数据的能力管道使用 ADL 和 Azure 数据工厂 (ADF) 了曾宣布已展开本年度。在本文中,我将重点介绍使用 ADF 安排用于移动和分析大数据的一次性和重复任务。

ADL 使得通过提供了多种关键技术来处理大数据更简单、 更易于访问。U SQL 语言是 SQL 和 C# 支持并行执行的强大组合。可以在产品/服务,其中数百或数千个容器即可保留、 使用和发布一个作业的生存期中 ADL 分析云中运行 U SQL。很容易设置 ADL 与此云环境。使用 Azure 管理门户,您可以快速轻松地创建 ADL 帐户存储和分析,并设置了 ADF。在几分钟之内,通过几个按钮,单击你的 Azure 订阅中可以设置所有必需的帐户。

帐户设置完成后,您可以在 ADF 使用 Azure 管理门户、 Windows PowerShell、 C# SDK 和 Visual Studio 工具创建的端到端大数据管道。ADF 是一种基于云的数据集成服务,协调和自动执行移动和转换数据。ADF ADL 集成,您可以:

  • 将数据从给定源移到 ADL 存储区。
  • 创建作为一个处理步骤 ADL Analytics 服务运行 U SQL 的大数据 ADF 管道。

有多种常见的大数据方案该 ADL 和 ADF 的地址,包括客户改动分析、 个性化的产品建议和保险精算处理。一种很有趣给多个 Azure 客户正在分析 Web 服务或应用程序日志。在本文中,我将介绍您如何创建数据工厂管道通过首先将 Web 日志移到 ADL,然后运行 U SQL 脚本来处理这些分析 Web 日志。

Web 日志分析方案

常见的业务洞察力方案是分析 Web 日志以了解卷,并根据源的区域或世界各地的区域设置的用户请求的模式。这种分析可增强客户了解、 营销活动和产品路线图,包括本地化计划。日志发出的 Web 应用程序、 网络设备、 操作系统和智能或可编程设备的所有方式。数据流,如错误日志、 点击流检测和 Web 服务器日志,可以轻松地累积千兆字节为单位或每周兆兆字节的速率。Web 日志可以在任何形式的存储,包括 SQL Azure、 Azure Blob 存储、 Amazon Simple Storage Service (S3),并在本地和 Oracle 数据库中累积。快速而高效地分析这些日志它来发现使用模式和系统问题可帮助公司了解客户使用情况更好,并最终提高客户参与而满意度。

很容易地将这些 Web 日志存储在 ADL 存储中,弹性可以扩展以存储千兆字节的数据。当设置 ADL 存储帐户时,所需任何调整大小参数,该帐户只需增长以容纳加载到此文档的文件的大小。因为你只能为实际存储的内容付费,服务是经济高效、 和缺乏固定的限制帐户或文件的大小,再加上大规模吞吐能力,使其适合于执行大数据分析。此外,您不必重写代码,或根据存储的数据大小增加或减少将您的数据移动到另一个存储平台。

分析和聚合 Web 日志,基于区域,如某些分区是允许并行度高的活动。理想情况下是让分给单个服务器,可以分析、 转换和汇总这些记录的记录的子集。然后,这些部分的结果合并在多个并行阶段直到创建最终的聚合数据集。手动管理此过程是非常复杂且容易导致基于有关的系统和天到一天的数据的更改形状的信息不完整的次优执行。但是,这正是什么 ADL 分析和 U SQL 语言可以自动完成。U SQL 允许您 express 中的声明性类似 SQL 的查询语法,不需要指定任何并行指令您目标的聚合。编译器和计划程序然后找出该作业中固有的并行度和分配资源基于对并行度和最大资源使用率为指定的任何限制。使用 ADF,您可以轻松地构建管道通过指定此类 U SQL 任务;将它们与另一系列任务。添加活动,以将数据从您的 Web 服务器移到 ADL 存储区;并创建一个计划来定期处理的数据。创建管道和组件允许您重点关注业务逻辑而不是有关如何优化处理和存储大型数据集的简易性。

获取设置

您首先创建 ADL 存储和分析帐户并设置数据工厂。这些都是通过 Azure 管理门户。ADL analytics 帐户是可帮助您进行分组和管理查询和程序进行大数据分析的实体。您可以通过将您的帐户不同的 Azure 订阅相关联管理帐单,并选择定价层。有用于分组具有用于跟踪用途的其他资源的帐户的选项。甚至可以选择您的帐户所在的位置的数据中心区域可用于管理接近于本地数据。

ADL 存储区服务是一项服务可以从 HDFS 兼容的系统,其中包括商业智能 (BI) 工具和在本地应用程序访问的大数据存储。安装程序非常简单,无需指定在安装时的任何限制。作为与分析服务的重要选项是要存放的数据的地理区域。在数据存储的情况下这很关键,因为可能存在的业务要求相关的法律的符合性有关地区的公民数据的存储位置。可以单独创建 ADL 应用商店帐户,并将其用于其他服务,但最常见的情况是在迁移后 ADL 分析中创建一个帐户。图 1 显示了用于创建 ADL 帐户的屏幕。您提供帐户的名称,并选择你的订阅、 资源组和位置。创建新数据 Lake 存储选项,可以在同一时间并且与您的 Analytics 帐户相同的选项创建新的存储。

在 Azure 管理门户中创建 ADL 帐户
图 1 在 Azure 管理门户中创建 ADL 帐户

在此示例中,Web 日志数据存储在 Azure 存储空间,它使您可以在 Azure 上存储 blob 数据。此外可以通过门户创建 Azure 存储空间。是否使用 Azure Web 应用程序,或宿主的网站,获取您数据到 Azure 存储空间上的其他位置非常简单,并且意味着它将具有高可用性和持久性。在示例中使用的示例 Web 日志数据可以位于 bit.ly/1ONi8c5

图 2 显示方式,您可以设置 Azure 数据工厂。如您所见,设置这些基于云的服务的过程是非常简单。无需作为 ADL 服务使用同一个地理区域,数据工厂可以运行的任何区域中的服务。

设置 Azure 数据工厂
图 2 设置 Azure 数据工厂

数据工厂是数据存储区、 链接的服务和管道的组合。数据存储和链接的服务是通常已经存在于 ADF 之外的外部实体的定义。管道是 ADF 中活动的逻辑分组。他们习惯使用的活动组成一起执行一项任务的一个单元。您将看到我逐步介绍设置网络日志分析的数据工厂的更详细信息。

您可以创建使用 Azure 管理门户或 Visual Studio 这些实体。在门户中,在数据工厂视图中下, 一个作者和部署选项允许您选择各个组件的数据工厂的类型,并提供可以直接编辑和发布的 JSON 代码段 (请参阅 图 3)。或者,可以利用 Visual studio 的 ADF 工具,并使用项目格式,以识别并定义每个数据工厂的组件 (图 4)。项目然后还可以发布在您在 Azure 中的数据工厂中创建这些实体。

创建和部署要使用 Web 编辑器中的数据工厂
图 3 创作和部署使用 Web 编辑器中的数据工厂

创建和部署要使用的 Visual Studio 插件的数据工厂
图 4 创建和部署要使用的 Visual Studio 插件的数据工厂

将数据移到 Azure 数据 Lake 应用商店

Web 日志分析方案中的第一步是将数据移到 ADL 存储区。您可以将数据移到 ADL 存储到 ADF 管道中使用复制活动。为了执行复制操作,您需要创建链接的 ADF 服务、 数据集和管道。ADF 中链接的服务定义连接到外部资源所需的信息。链接的服务用于数据工厂中的两个目的。第一个是表示数据存储区包括,但不是局限于在本地 SQL Server、 Oracle 数据库、 文件共享或 Azure blob 存储帐户。第二个是代表可以承载一个活动的执行的处理资源。例如,HDInsight Hive 活动在 HDInsight Hadoop 群集上执行。在这种情况下,您需要创建两个链接的服务,一个对应于 Azure 存储帐户和第二个表示 ADL 存储区。

您还需要创建两个 ADF 数据集。数据集是 Azure 存储帐户或 ADL 存储区中的数据的逻辑参考。任何用户数据不存储在 ADF 本身,因此数据集定义所需的 ADF 以标识外部数据存储,包括表、 文件、 文件夹和文档中的数据结构。因为 ADF 不知道此数据的结构,您需要在此处定义,这样系统就知道哪些列和期望的类型。在这种情况下,您需要创建一个 Azure 存储帐户位置包含 Web 日志数据 (源) 所对应的数据集和第二个数据集对应于你想要移动 Web 日志 (接收器) ADL 存储区。

最后,有关发生这种情况的数据副本,您需要创建包含复制活动 ADF 管道。ADF 管道是活动,如数据副本,可以在不同的时间间隔运行,和 Hive、 Pig 或 U SQL 可以定期运行的脚本活动的逻辑分组 — 每隔 15 分钟、 小时、 每天或每月。ADF 中的复制活动是非常强大,允许您将在本地或云中的源和接收器,可以将不同的架构之间的数据复制。您可以指定一些参数,或接受默认值,以开始。你有更多地控制,并且可以优化的计划和处理错误条件的策略等内容。

尽管管道可以按重复计划运行,在本示例中它是只运行一次将数据移到 ADL 存储区。中的 JSON 代码段 图 5 显示调用 EgressBlobToDataLakePipeline 管道的定义。此管道不包含复制活动,将数据从 Azure Blob 存储移到 Azure 数据 Lake 应用商店。已计划在 08/08/2015年上运行,并且将只运行一次 (管道活动期的"开始"和"end"属性都相同)。

图 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 数据 Lake 应用商店。您可以了解有关在 Azure 数据工厂数据移动活动 bit.ly/1MNbIqZ, ,更多关于在 ADF 在中使用 AzureDataLakeStore 连接器 bit.ly/1MRwvVZ。现在您已准备好处理和分析 Web 日志。

使用 U SQL 活动创建一个管道

ADL 存储区中的数据,您现在可以运行 ADL Analytics 服务能够处理和分析 Web 日志的 U SQL 脚本。您可以创建管道,将使用来自 ADL 存储的数据、 在作为一个处理步骤 ADL Analytics 服务上运行 U SQL 脚本并生成 ADL 存储区中的输出。下游应用程序便可以使用直接从 ADL 应用商店处理的输出或者您可以选择将数据从 ADL 存储区复制到 Azure SQL 数据仓库如果商业智能应用程序正在使用 SQL 仓库作为后端存储。

为了处理 Web 日志,您需要重新创建链接的 ADF 服务、 数据集和管道。如果您想要创建第一次执行的数据移动,然后通过运行中单个 ADF U SQL 脚本执行数据分析的管道的序列,在上一步中创建了 ADL 存储链接服务,可以重用。或者,您可以创建新的数据工厂的只是执行数据分析。ADF 管道在这种情况下包含 Azure 数据分析 U SQL 活动和运行 U SQL 脚本,以确定英国 ("en-gb") 区域设置的所有事件和日期小于"02/2012年/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 中的 Parameters 节 (请参阅中的"Parameters"节 图 6)。此外可以指定其他属性,如 degreeOfParallelism 或在管道定义 ADL 分析服务上运行的作业的优先级。此 U SQL 脚本处理 Web 日志和返回所有事件"en gb"区域设置和日期小于"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);

监视大数据管线

数据工厂服务提供了存储、 处理和数据移动服务的可靠且完整视图。它有助于快速评估端到端数据管道运行状况、 找出问题并采取纠正措施,如果需要。您还会直观地可以跟踪操作沿袭以及关系之间跨您的源的任何数据,并查看执行作业、 系统运行状况和从单个监视仪表板的依赖关系的完整历史记录记帐。ADF 关系图视图 (请参阅 图 8) 在管理门户显示的数据工厂的运营沿袭。您可以看到两个管道和相应的数据集: EgressBlobToDataLakePipeline (复制数据从 Azure Blob 存储到 Azure 数据 Lake 存储区) 和 ComputeEventsByEnGbRegionPipeline (获取所有事件"en gb"区域设置和日期小于"02/2012年/19")。

Azure 数据工厂关系图视图
图 8 Azure 数据工厂关系图视图

中的 ADF 副本管道 图 8 将启动数据集的每日频率以及开始和结束管道定义中的参数都设置为 08/08/2015年 08/08/2015年上运行。因此,管道将仅对那一天运行,并且 U SQL 脚本只运行一次。您可以了解有关计划 ADF 管道 bit.ly/1lEVjuM。单击关系图视图中 EventsByEnGbRegionTable,以查看相应的活动执行和其状态 (请参阅 图 9)。

Azure 数据工厂活动视图
图 9 Azure 数据工厂活动视图

您可以看到在 ADF ComputeEventsByEnGbRegionPipeline 中的 U SQL 活动已成功运行,创建了一个 Result.tsv 文件 (/ datalake/output/Result.tsv) AzureDataLakeStore 帐户中。Result.tsv 包含所有 Web 日志事件"en gb"区域设置和日期小于 2012年/02/19。你还可以登录到管理门户和 Azure Data Lake 数据资源管理器用于直观显示生成的 Result.tsv 文件 (返回到 图 4) 处理的过程步骤 ADL 存储区中。

您可以在 Azure 数据工厂在找到 AzureDataLakeAnalyticsU SQL 活动有关的详细的文档 bit.ly/1WWtxuy

总结

按照所述的步骤操作,您可以构建使用 Azure 数据工厂,您可以将数据移到 Azure 数据 Lake 应用商店的端到端大数据管道。然后可以在 Azure Data Lake 分析服务上使用 U SQL 脚本来进行 Web 日志处理。生成系统根据您的需要,可以动态扩展,并且可以扩展以定期运行。你可以还执行进一步下游处理 Web 日志输出并将其移到另一个后端存储,使结果可供 Power BI 或您的组织使用的任何其他 BI 应用。此外,如果您愿意,您可以使用 ADF PowerShell cmdlet、 C# SDK 和 Visual Studio 插件若要生成使用 ADL 这些 E2E 大数据管道。Azure Data Lake 与 Azure 数据工厂一起占用通常与大数据在云中,确保您当前和未来的业务需要可以满足相关的复杂性。有关详细信息解决使用 Azure 服务的大型数据问题观看这一领域。


Gaurav Malhotra是 Azure 数据工厂团队的项目经理。他所在和发挥作用在华盛顿雷德蒙市与他联系。 gamal@microsoft.com

感谢以下的微软技术专家对本文的审阅: Omid Afnan、 Harish Kumar 和 Sachin Sheth
Omid Afnan 是 Azure 大数据团队致力于实现的分布式的计算系统和相关开发人员工具链中的首席项目经理。他在中国生活和工作。与他联系。 omafnan@microsoft.com

Harish Kumar Agarwal 是在 Azure 数据工厂团队的项目经理。他的联系方式 hariag@microsoft.com

Sachin Sheth 是 Azure Data Lake 团队的项目经理。您可以通过 sachins@microsoft.com