[大数据]高通量低延迟的云环境大数据流水线架构( 二 )


准备:数据通过 ETL(抽取、转化和加载)操作清洗、确证、塑形和转化 , 以 BLOB 和流数据在数据湖中分门别类管理 。 准备好机器学习可用的数据 , 并存储在数据仓库中 。
计算:实现分析、数据科学和机器学习 。 计算可组合批处理和流处理 。 所得到的模型和洞察 , 无论是结构化数据还是流数据 , 继续存回数据仓库中 。
结果展示:通过仪表面板、电子邮件、短信息、推送通知和微服务等方式展示所得到的洞察 。 机器学习模型推理将通过微服务提供接口 。
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 3 数据流水线各处理过程
数据湖和数据仓库 在数据湖中 , 数据以其原始格式或初始形态存在 , 即按接收到的 BLOB 或文件格式 。 而数据仓库存储经清洗和转换的数据 , 以及数据的目录和模式 。 数据湖和数据仓库中的数据以多种形态存在 , 包括结构化(即关系模式)、半结构化、二进制和实时事件流 。
用户可以选择以不同的物理仓储分别维护数据湖和数据仓库 , 也可以通过 Hive 查询等数据湖接口物化数据仓库 。 具体如何选择 , 取决于用户在性能上的需求 , 以及成本约束等因素 。
无论采取何种方式 , 重要的是保持好原始数据 , 以便于审计、测试和调试 。
探索性数据分析(EDA,Exploratory Data Analysis) EDA 的目的是分析并可视化数据集 , 进而形成假设 。 可能已收集的数据对于实现 EDA 尚存差距 , 因此需要做进一步的收集、实验和验证新数据 。
这些操作可被视为一组聚焦于可能模型上的小规模机器学习实验 , 可用于对比整个数据集并实现调优 。
维护具有目录、模式和可访问查询语言接口(无需编写程序)的数据仓库 , 有助于实现高性能的 EDA 。
组件选取
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 4 体系架构需在性能和成本之间取得权衡
图中给出了六种三角型帐篷可选 , 从左上到右下所需的粘合剂成本依次降低 。 你会在实践中做出如何选取?请注意 , 三角形的底边要小于其它的边;浅蓝色部分是矩形 , 而不是正方形 。
数据流水线、数据湖和数据仓库不是什么新概念 。 过去 , 数据分析使用批处理程序完成的 , 例如 SQL 乃至 Excel 工作表 。 现在不同之处在于 , 可用的大数据推进了机器学习 , 进而增加了对实时洞察的需求 。
现已有多种体系结构可供选择 , 提供不同的性能和成本权衡 。 据我所知 , 从技术上考虑的最好选择 , 不一定是最适合生产环境的解决方案 。 用户必须仔细核对自身的需求:

  • 是否需要实时洞察或模型更新?
  • 对陈旧应用的忍耐程度如何?
  • 成本约束如何?
基于对上述问题的回答 , 用户必须在 Lambda 架构中的批处理和流处理上做出权衡 , 以匹配对处理通量和延迟上的需求 。 Lambda 架构由如下层级组成:
  • 批处理层:提供高通量、全面、经济的 MapReduce 批处理 , 但是延迟很高 。
  • 加速层:提供低延迟的实时流处理 , 但是在数据量很大时 , 实现代价可能会突破用户内存规模 。
  • 服务提供层:实现高吞吐量批处理输出(在准备就绪时)与流处理输出的合并 , 以预先计算的视图或即席查询的形式提供全面的结果 。
Lambda 架构基于的假设是源数据模型是仅追加(append-only)的 , 即已获取的事件会打上时间戳并追加到现有事件中 , 而且永远不会被覆盖 。
架构实例:云上技术栈的选取 下图给出了一种使用开源技术物化实现流水线各阶段的架构 。 为优化计算代价 , 通常会合并数据准备和计算阶段 。
[大数据]高通量低延迟的云环境大数据流水线架构


推荐阅读