大数据体系结构旨在处理对传统数据库系统太大或过于复杂的数据的引入、处理和分析。
大数据体系结构样式 的
大数据解决方案通常涉及以下一种或多种工作负荷:
- 静态大数据的批处理。
- 动态实时处理大数据。
- 对大数据的交互式探索。
- 预测分析和机器学习。
大多数大数据体系结构包括以下部分或全部组件:
数据源:所有大数据解决方案都以一个或多个数据源开头。 示例包括:
- 应用程序数据存储,例如关系数据库。
- 应用程序生成的静态文件,例如 Web 服务器日志文件。
- 实时数据源,例如 IoT 设备。
数据存储:批处理操作的数据通常存储在分布式文件存储中,可以采用各种格式保存大量大型文件。 此类存储通常称为 数据湖。 实现此存储的选项包括 Azure Data Lake Store 或 Azure 存储中的 Blob 容器。
批处理:由于数据集太大,因此大数据解决方案通常必须使用长时间运行的批处理作业来处理数据文件,以便筛选、聚合,否则准备数据进行分析。 通常,这些作业涉及读取源文件、处理源文件以及将输出写入新文件。 选项包括使用数据流、Microsoft Fabric 中的数据管道。
实时消息引入:如果解决方案包含实时源,则体系结构必须包含捕获和存储实时消息以供流处理的方法。 这可能是一个简单的数据存储,其中传入的邮件被放入文件夹中进行处理。 但是,许多解决方案需要消息引入存储来充当消息的缓冲区,并支持横向扩展处理、可靠传递和其他消息队列语义。 选项包括 Azure 事件中心、Azure IoT 中心和 Kafka。
流处理:捕获实时消息后,解决方案必须通过筛选、聚合和其他准备数据进行分析来处理它们。 然后,处理过的流数据将写入输出接收器。 Azure 流分析提供托管流处理服务,该服务基于对未绑定流运行的永久运行的 SQL 查询。 另一个选项是在 Microsoft Fabric 中使用实时智能,这样就可以在引入数据时运行 KQL 查询。
分析数据存储:许多大数据解决方案准备数据进行分析,然后使用分析工具以结构化格式提供处理的数据。 用于为这些查询提供服务的分析数据存储可以是金球式的关系数据仓库,如大多数传统商业智能(BI)解决方案或具有奖牌体系结构(铜牌、白银和黄金)的 Lakehouse 所示。 Azure Synapse Analytics 为大规模基于云的数据仓库提供托管服务。 或者,Microsoft Fabric 提供了可分别使用 SQL 和 Spark 查询的选项-仓库和 Lakehouse。
分析和报告:大多数大数据解决方案的目标是通过分析和报告来深入了解数据。 为了允许用户分析数据,体系结构可能包括数据建模层,例如 Azure Analysis Services 中的多维 OLAP 多维数据集或表格数据模型。 它还可能支持自助服务 BI,在 Microsoft Power BI 或 Microsoft Excel 中使用建模和可视化技术。 分析和报告也可以采用数据科学家或数据分析师的交互式数据浏览形式。 对于这些方案,Microsoft Fabric 提供了一些工具,例如笔记本,用户可以选择 SQL 或所选编程语言。
业务流程:大多数大数据解决方案包括重复的数据处理操作,封装在工作流中,用于转换源数据、在多个源和接收器之间移动数据、将处理的数据加载到分析数据存储,或将结果直接推送到报表或仪表板。 若要自动执行这些工作流,可以使用 Azure 数据工厂或Microsoft结构管道等业务流程技术。
Azure 包含许多可在大数据体系结构中使用的服务。 它们大致分为两类:
- 托管服务,包括 Microsoft Fabric、Azure Data Lake Store、Azure Synapse Analytics、Azure 流分析、Azure 事件中心、Azure IoT 中心和 Azure 数据工厂。
- 基于 Apache Hadoop 平台的开源技术,包括 HDFS、HBase、Hive、Spark 和 Kafka。 Azure HDInsight 服务中提供了这些技术。
这些选项并非互斥,许多解决方案将开源技术与 Azure 服务相结合。
何时使用此体系结构
需要以下条件时,请考虑此体系结构样式:
- 在卷中存储和处理数据对于传统数据库来说太大。
- 转换非结构化数据进行分析和报告。
- 实时捕获、处理和分析无限数据流,或延迟较低。
- 使用 Azure 机器学习或 Azure 认知服务。
好处
- 技术选择。 可以在 HDInsight 群集中混合和匹配 Azure 托管服务和 Apache 技术,以利用现有的技能或技术投资。
- 通过并行
性能。 大数据解决方案利用并行度,实现可扩展到大量数据的高性能解决方案。 - 弹性缩放。 大数据体系结构中的所有组件都支持横向扩展预配,以便你可以将解决方案调整为小型或大型工作负荷,并仅为使用的资源付费。
- 与现有解决方案的互操作性。 大数据体系结构的组件也用于 IoT 处理和企业 BI 解决方案,使你能够跨数据工作负载创建集成解决方案。
挑战
- 复杂性。 大数据解决方案可能非常复杂,其中包含许多组件来处理来自多个数据源的数据引入。 构建、测试和排查大数据进程的问题可能很困难。 此外,在多个系统之间可能存在大量配置设置,必须使用这些设置来优化性能。
- 技能组。 许多大数据技术高度专业化,并且使用框架和语言,这些框架和语言并非更常规的应用程序体系结构的典型。 另一方面,大数据技术正在演变基于更成熟的语言构建的新 API。
- 技术成熟度。 大数据中使用的许多技术正在演变。 虽然 Hive 和 spark 等核心 Hadoop 技术已经稳定下来,但增量或冰山等新兴技术引入了广泛的变化和增强功能。 与其他 Azure 服务相比,Microsoft Fabric 等托管服务相对较年轻,并且可能会随着时间的推移而发展。
- 安全。 大数据解决方案通常依赖于将所有静态数据存储在集中式 Data Lake 中。 保护对此数据的访问可能具有挑战性,尤其是在多个应用程序和平台必须引入和使用数据时。
最佳做法
利用并行度。 大多数大数据处理技术在多个处理单元之间分配工作负荷。 这要求以可拆分格式创建和存储静态数据文件。 HDFS 等分布式文件系统可以优化读取和写入性能,实际处理由多个群集节点并行执行,从而减少了整个作业时间。 强烈建议使用可拆分的数据格式,例如 Parquet。
分区数据。 批处理通常按定期计划进行,例如每周或每月。 根据与处理计划匹配的临时时间段对数据文件和数据结构(如表)进行分区。 这样可以简化数据引入和作业计划,并更轻松地排查故障。 此外,在 Hive、spark 或 SQL 查询中使用的分区表可以显著提高查询性能。
应用读取中的架构语义。 使用 Data Lake 可以组合多种格式的文件存储,无论是结构化、半结构化还是非结构化文件。 使用 读取架构 语义,该语义在处理数据时(而不是存储数据时)将数据投影到数据上。 这会在解决方案中构建灵活性,并防止数据验证和类型检查导致的数据引入过程中出现瓶颈。
就地处理数据。 传统的 BI 解决方案通常使用提取、转换和加载(ETL)过程将数据移到数据仓库中。 对于较大的卷数据以及更多格式,大数据解决方案通常使用 ETL 的变体,例如转换、提取和加载(TEL)。 使用此方法,在分布式数据存储中处理数据,将其转换为所需的结构,然后再将转换后的数据移动到分析数据存储。
平衡利用率和时间成本。 对于批处理作业,必须考虑两个因素:计算节点的按单位成本,以及使用这些节点完成作业的每分钟成本。 例如,批处理作业可能需要 8 小时,四个群集节点。 但是,事实证明,作业仅在前两小时内使用所有四个节点,之后只需要两个节点。 在这种情况下,在两个节点上运行整个作业会增加作业总时间,但不会加倍,因此总成本会减少。 在某些业务方案中,较长的处理时间可能比使用未充分利用的群集资源的成本更高。
单独的资源。 尽可能将基于工作负荷的资源分开,以避免像一个工作负荷一样使用所有资源,而另一个工作负荷正在等待。
协调数据引入。 在某些情况下,现有业务应用程序可能会将数据文件直接写入 Azure 存储 Blob 容器,其中下游服务(如 Microsoft Fabric)可以使用这些文件。 但是,通常需要协调从本地或外部数据源引入到 Data Lake 中的数据。 使用业务流程工作流或管道(例如 Azure 数据工厂或 Microsoft Fabric 支持)以可预测且集中管理的方式实现此目的。
早期清理敏感数据。 数据引入工作流应尽早清理敏感数据,以避免将其存储在 Data Lake 中。
IoT 体系结构
物联网(IoT)是大数据解决方案的专用子集。 下图显示了 IoT 的可能逻辑体系结构。 此图强调体系结构的事件流式处理组件。
IoT 体系结构的
云网关 使用可靠、低延迟的消息传送系统在云边界引入设备事件。
设备可能会直接将事件发送到云网关,或通过 现场网关。 现场网关是专用设备或软件,通常与设备并置,接收事件并将其转发到云网关。 现场网关还可以预处理原始设备事件,执行筛选、聚合或协议转换等功能。
引入后,事件会经历一个或多个 流处理器, 可以将数据(例如,路由到存储)或执行分析和其他处理。
下面是一些常见的处理类型。 (这个列表肯定并不详尽。
将事件数据写入冷存储,以便进行存档或批处理分析。
热路径分析,在(近)实时分析事件流,以检测异常,识别滚动时间窗口的模式,或在流中发生特定条件时触发警报。
处理来自设备的特殊类型的非遥测消息,例如通知和警报。
机器学习。
带阴影的灰色框显示 IoT 系统的组件,这些组件与事件流不直接相关,但此处包含用于完整性。
设备注册表 是预配设备的数据库,包括设备 ID 和设备元数据(例如位置)。
预配 API 是用于预配和注册新设备的常见外部接口。
某些 IoT 解决方案允许 命令和控制消息 发送到设备。
本部分提供了 IoT 的高级视图,需要考虑许多微妙之处和挑战。 有关详细信息,请参阅 IoT 体系结构。