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


本文插图

图 5 使用开源技术构建的数据处理流水线
架构中的主要组件和技术选择如下:

  • 使用 HTTP/MQTT 终端节点获取数据 , 并提供结果 。 这里存在多种架构和技术可选 。
  • 使用发布 / 订阅消息队列获取海量流数据 。Kafka 目前是事实上的标准 , 其经实践考验 , 可扩展性满足高流量数据获取需求 。
  • 使用低成本高容量的数据仓储实现数据湖和数据仓库 。 可选技术包括 Hadoop HDFS 和 AWS S3 等 BLOB 存储云服务 。
  • 使用查询和目录基础设施 , 实现将数据湖转换为数据仓库 。 这里广泛选取的是 Apache Hive。
  • 使用 MapReduce 批处理引擎实现高通量处理 , 例如 ,Hadoop Map-Reduce 、 Apache Spark 等 。
  • 使用流计算实现对低延迟性有要求的处理 。 例如 ,Apache Storm 、 Apache Flink。 对于编写数据流计算 ,Apache Beam 不失为一种新选项 。 它可以部署在 Spark 批处理和 Flink 流处理上 。
  • 使用机器学习框架实现数据科学和机器学习 。 例如 , 普遍使用的 Scikit-Learn 、 TensorFlow 和 PyTorch 等实现机器学习 。
  • 使用低延迟数据仓储实现结果的存储 。 数据仓储上存在有很多经实践考验的选项 , 可根据数据类型、性能需求、数据规模和实现代价等做出选取 。
  • 可使用部署编排工具 。 例如 Hadoop YARN 、 Kubernetes / Kubeflow 等 。
规模和效率上的权衡 , 由以下杠杆调节:
  • 吞吐量取决于数据获取(即 REST / MQTT 终端节点和消息队列)的弹性、数据湖的存储容量 , 以及 MapReduce 批处理 。
  • 延迟取决于消息队列、流计算和存储计算结果数据库的效率 。
架构实例:无服务器 无服务器计算可避免在项目中引入 DevOps 代价 , 实现项目的快速启动 。 无服务器架构中的各种组件 , 可由选定的云服务提供商的无服务器组件替换 。 下图分别给出了 Amazon Web Services(AWS)、Microsoft Azure 和 Google Cloud 上典型的无服务器架构实现数据流水线 。 其中每个过程都能与上一节中阐释的通用架构紧密对应 。 用户以此为参考 , 可选取入围的技术 。
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 6 Amazon Web Services(AWS)的无服务器数据流水线架构
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 7 Microsoft Azure 的无服务器数据流水线架构
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 8 Google Cloud 的无服务器数据流水线架构
生产环境
[大数据]高通量低延迟的云环境大数据流水线架构
本文插图

图 9 对于生产环境 , 简单性往往优于完美
请读者注意 , 图中选择的三角形帐篷形状 , 并非需要最少粘合剂的方式 。 对于降低潜在的错误 , 至关重要的是如何给出所需的部分 , 以及整体操作的简单性 。
对于不具操作性的分析和机器学习 , 生产环境将成为它们的埋葬之地 。 如果用户未对 7x24 全天候监测流水线处理做出投资 , 使得在某些趋势阈值被突破时就发出警报 , 那么数据处理流水线可能会在没有引起任何人注意的情况下失效 。
请注意 , 工程和运营支出并非唯一的成本 。 在决定架构时 , 还应考虑时间、机会和压力成本 。
数据流水线的实操是一件非常棘手的事情 。 下面给出我历经波折获得的一些小经验: