探索事件中心捕获
通过 Azure 事件中心,可以自动捕获所选 Azure Blob 存储或 Azure Data Lake Storage 帐户中事件中心的流数据,并且更灵活地指定时间或大小间隔。 设置捕获很快,无需管理费用即可运行它,并且它会随着事件中心标准层的吞吐单位或高级层的处理单位自动扩展。
事件中心捕获可让用户在同一个流上处理实时和基于批处理的管道。 这意味着可以构建随着时间的推移随用户的需要增长的解决方案。
事件中心捕获的工作原理
事件中心 (Event Hubs) 是一种用于遥测数据输入的持久性时间保留缓冲区,类似于分布式日志。 扩展 Event Hubs 的关键在于分区消费者模型。 每个分区是独立的数据段,并单独使用。 根据可配置的保留期,随着时间的推移此数据会过时。 因此,给定的事件枢纽永远不会“过载”。
事件中心捕获功能允许您指定自己的 Azure Blob 存储账户和容器,或 Azure 数据湖存储账户,以存储捕获的数据。 这些帐户可以与事件中心在同一区域中,也可以在另一个区域中,从而增加了事件中心捕获功能的灵活性。
已捕获数据以 Apache Avro 格式写入;该格式是紧凑、便捷的二进制格式,并使用内联架构提供丰富的数据结构。 这种格式广泛用于 Hadoop 生态系统、流分析和 Azure 数据工厂。 在本文后面提供了有关如何使用 Avro 的详细信息。
捕获窗口
事件中心捕获功能使您能够设置一个窗口来控制捕获。 此窗口是具有“首次生效策略”的最小大小和时间配置,这意味着遇到的第一个触发器会引发捕获操作。 每个分区独立捕获并在捕获时写入已完成的块 blob,以遇到捕获间隔的时间命名。 存储命名约定如下所示:
{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}
请注意,日期值前面填充零;示例文件名可能是:
https://mystorageaccount.blob.core.windows.net/mycontainer/mynamespace/myeventhub/0/2017/12/08/03/03/17.avro
扩展至吞吐量单位
事件中心流量由吞吐量单位控制。 单一吞吐量单位允许每秒 1 MB 或每秒 1,000 次事件的流入量和两倍的流出量。 标准事件中心可以配置 1 到 20 个吞吐量单位,可以使用增加配额支持请求来购买更多吞吐量单位。 超出购买吞吐量单位的使用将受到限制。 事件中心捕获直接从内部事件中心存储复制数据,绕过吞吐量单位流出量配额并保存你的流出量以供其他处理读取器使用,例如流分析或 Spark。
配置后,用户发送第一个事件时,事件中心捕获会自动运行,并持续保持运行状态。 为了让下游处理更便于了解该进程正在运行,事件中心会在没有数据时写入空文件。 此过程提供可预测的步调和标记,可以为批处理器提供信息。