在现实环境中部署大数据分析、数据科学和机器学习应用,分析优化和模型训练仅占全部工作量的25%,约50%的工作用于准备适用于分析和开展机器学习的数据,其余25%的工作是实现易于使用的模型推理和洞察分析。数据流水线将各个过程组织在一起,为机器学习这列重载而神奇的列车提供轨道。只有基于正确配置的流水线,方能确保项目的长期正常运行。
本文将从以下四个维度展开,阐释数据流水线及实现各步骤的可选组件:
图1 需求愿景就是从最有利的角度给出观察
构建数据分析平台和机器学习应用的切实用户可归为三类,即数据科学家、工程人员和业务管理人员。
数据科学家的目标是针对给定的问题和可用的数据,给出鲁棒性最好且计算复杂度适中的模型。
工程人员的目标是为用户构建可信赖的产品。工作创新之处在于构建新产品,或是以新的运行方式运行现有的产品,实现无需人工干预的7X24不间断运行。
业务管理人员的目标是向用户交付有价值产品。这正是科学和工程所要达成的目标。
本文聚焦于工程人员,并兼顾其它两方面,特别是从处理机器学习应用所需海量数据的角度。由此,数据流水线所需的工程特征为:
图2 成功的机器学习必需具备运作润滑的数据流水线
数据只有在被转化为具备可操作性的洞察,进而洞察得到及时得交付使用,其价值方能体现出来。
数据流水线实现端到端的操作组,其中包括数据收集、洞察转换、模型训练,洞察交付和应用模型。无论何时何处,只要业务目标有需求,流水线就会立刻运转起来。
和新油田一样,数据虽然价值不斐,但未经加工则不能真正得以应用。必须深加工为天然气、塑料、化学制品等方式,才能创造出有利可图的有价实物。因此数据必须拆解分析后,才能体现出自身的价值。 ——Clive Humby,英国数学家,乐购会员卡架构师
数据流水线主要包括五个过程,可分组为三个阶段:
采集:移动应用、Web网站、Web应用、微服务和IoT设备等数据源设施,按指令采集相关数据。
获取:受控数据源将数据推送到各种设定的数据入口点,例如HTTP、MQTT和消息队列等。也有一些任务从Google Analytics等服务导入数据。数据具有两种形态,即BLOB和流数据。所有数据将汇总到同一数据湖中。
准备:数据通过ETL(抽取、转化和加载)操作清洗、确证、塑形和转化,以BLOB和流数据在数据湖中分门别类管理。准备好机器学习可用的数据,并存储在数据仓库中。
计算:实现分析、数据科学和机器学习。计算可组合批处理和流处理。所得到的模型和洞察,无论是结构化数据还是流数据,继续存回数据仓库中。
结果展示:通过仪表面板、电子邮件、短信息、推送通知和微服务等方式展示所得到的洞察。机器学习模型推理将通过微服务提供接口。
图3 数据流水线各处理过程
在数据湖中,数据以其原始格式或初始形态存在,即按接收到的BLOB或文件格式。而数据仓库存储经清洗和转换的数据,以及数据的目录和模式。数据湖和数据仓库中的数据以多种形态存在,包括结构化(即关系模式)、半结构化、二进制和实时事件流。
用户可以选择以不同的物理仓储分别维护数据湖和数据仓库,也可以通过Hive查询等数据湖接口物化数据仓库。具体如何选择,取决于用户在性能上的需求,以及成本约束等因素。
无论采取何种方式,重要的是保持好原始数据,以便于审计、测试和调试。
EDA的目的是分析并可视化数据集,进而形成假设。可能已收集的数据对于实现EDA尚存差距,因此需要做进一步的收集、实验和验证新数据。
这些操作可被视为一组聚焦于可能模型上的小规模机器学习实验,可用于对比整个数据集并实现调优。
维护具有目录、模式和可访问查询语言接口(无需编写程序)的数据仓库,有助于实现高性能的EDA。
图4 体系架构需在性能和成本之间取得权衡
图中给出了六种三角型帐篷可选,从左上到右下所需的粘合剂成本依次降低。你会在实践中做出如何选取?请注意,三角形的底边要小于其它的边;浅蓝色部分是矩形,而不是正方形。
数据流水线、数据湖和数据仓库不是什么新概念。过去,数据分析使用批处理程序完成的,例如SQL乃至Excel工作表。现在不同之处在于,可用的大数据推进了机器学习,进而增加了对实时洞察的需求。
现已有多种体系结构可供选择,提供不同的性能和成本权衡。据我所知,从技术上考虑的最好选择,不一定是最适合生产环境的解决方案。用户必须仔细核对自身的需求:
基于对上述问题的回答,用户必须在Lambda架构中的批处理和流处理上做出权衡,以匹配对处理通量和延迟上的需求。Lambda架构由如下层级组成:
Lambda架构基于的假设是源数据模型是仅追加(append-only)的,即已获取的事件会打上时间戳并追加到现有事件中,而且永远不会被覆盖。
下图给出了一种使用开源技术物化实现流水线各阶段的架构。为优化计算代价,通常会合并数据准备和计算阶段。
图5 使用开源技术构建的数据处理流水线
架构中的主要组件和技术选择如下:
规模和效率上的权衡,由以下杠杆调节:
无服务器计算可避免在项目中引入DevOps代价,实现项目的快速启动。无服务器架构中的各种组件,可由选定的云服务提供商的无服务器组件替换。下图分别给出了Amazon Web Services(AWS)、Microsoft Azure和Google Cloud上典型的无服务器架构实现数据流水线。其中每个过程都能与上一节中阐释的通用架构紧密对应。用户以此为参考,可选取入围的技术。
图6 Amazon Web Services(AWS)的无服务器数据流水线架构
图7 Microsoft Azure的无服务器数据流水线架构
图8 Google Cloud的无服务器数据流水线架构
图9 对于生产环境,简单性往往优于完美
请读者注意,图中选择的三角形帐篷形状,并非需要最少粘合剂的方式。对于降低潜在的错误,至关重要的是如何给出所需的部分,以及整体操作的简单性。
对于不具操作性的分析和机器学习,生产环境将成为它们的埋葬之地。如果用户未对7x24全天候监测流水线处理做出投资,使得在某些趋势阈值被突破时就发出警报,那么数据处理流水线可能会在没有引起任何人注意的情况下失效。
请注意,工程和运营支出并非唯一的成本。在决定架构时,还应考虑时间、机会和压力成本。
数据流水线的实操是一件非常棘手的事情。下面给出我历经波折获得的一些小经验:
本文的要点总结如下:
希望本文对读者能有所帮助。读者在生产环境中建立可靠的数据流水线有哪些技巧?欢迎在评论中分享。
作者简介:
Satish Chandra Gupta是Slang Labs的合伙创始人之一。Slang Labs正在构建一个使程序开发者可以轻松快速地将多语言、多模式语音增强体验(VAX)添加到移动和Web应用中的平台。设想Alexa或Siri这样的助手,可以运行在用户的应用内部,并针对用户应用量身定制,听上去多么令人兴奋。
原文链接:
Architecture for High-Throughput Low-Latency Big Data Pipeline on Cloud
领取专属 10元无门槛券
私享最新 技术干货