跳转至内容

大数据/新闻媒体的实用DevOps

来自Wikibooks,开放世界中的开放书籍

用例描述

[编辑 | 编辑源代码]

新闻和媒体领域在处理来自社交媒体的大量数据流方面是一个要求很高的行业。ATC SA作为全球领先的新闻和媒体领域ICT应用品牌之一,开发了NewsAssset——一款定位于新闻和媒体领域的商业产品。NewsAsset是一款定位于新闻和媒体领域的商业产品,由位于希腊的SME雅典技术中心(Athens Technology Center)品牌化。NewsAsset套件构成了一种创新的信息管理解决方案,为新闻生产环境中敏感信息的存储、管理和交付提供了一个完整且安全的电子环境。该平台提出了一种分布式多层架构引擎来管理数据存储,该引擎由媒体项目组成,例如文本、图像、报告、文章、视频等。创新的软件工程实践,如大数据技术、模型驱动工程(MDE)技术、云计算流程和面向服务的办法已经渗透到媒体领域。新闻机构已经感受到了这些技术提供的功能带来的影响(例如处理能力、信息的透明分发、复杂的分析、快速响应等),促进了下一代产品、应用和服务的开发。特别是考虑到数字世界中存在的有趣的媒体和突发事件,这些技术可以提供高效的处理并为记者提供附加值。同时,像社交网络、传感器网络和与互联网连接的其他一些举措等异构来源正在以惊人的速度持续不断地向互联网世界提供各种真实数据:描述突发事件的媒体项目、道路上的交通速度;下雨或下雪时道路的湿滑指数;按位置划分的空气污染水平;等等。随着越来越多的此类来源进入数字世界,记者将能够访问越来越多的来源的数据,这不仅有助于灾难报道,还可以用于各种新闻报道。随着这种趋势的发挥,当世界某个地方发生灾难时,人们会使用Twitter、Facebook、Instagram等社交网络来观察新闻生态系统并试图了解损坏的范围以及实时存在的情况。许多目击者会拍摄灾难照片并发布,解释正在发生的事情。随后,新闻机构意识到社交媒体内容对于灾难新闻报道变得越来越有用,并且只有在采用上述创新技术的情况下才能从这一未来趋势中获益。因此,NewsAsset面临的挑战是赶上这一发展并提供能够处理媒体行业发展新情况的服务。此外,在DICE项目期间,我们确定了“假新闻”领域的一个巨大的商业机会。更具体地说,我们使用DICE工具开发了特定模块(News Orchestrator应用程序的一部分),用于一个新的创新产品,该产品通过API连接到我们的NewsAsset套件或可以作为独立解决方案出售。这个新产品被称为TruthNest(www.truthnest.com)。TruthNest是ATC实施的一项服务,用于评估在社交媒体上发现的信息的可信度。TruthNest用户能够捕获来自社交网络的数据流,然后他们能够分析单个帖子并根据验证过程的几个维度获得见解。

用例场景

[编辑 | 编辑源代码]

TruthNest是一款在线综合工具,可以快速准确地发现、分析和验证在社交媒体中出现的报道事件、新闻和多媒体内容的可靠性和真实性,接近实时。最终用户可以通过单击激活一系列分析事件来实现所需的结果,从而在几秒钟内验证单个帖子的可信度。更具体地说,TruthNest用户将能够引入来自社交网络的数据流,然后能够分析并获得有关验证过程的几个维度的见解。此外,他们还能够在TruthNest内部创建和监控新的“智能”数据流。

TruthNest屏幕截图

TruthNest的一个重要模块,该模块是从头开始开发的,是“趋势话题检测器”。“趋势话题检测器”为最终用户提供了一个可视化环境,显示了来自社交媒体,更具体地说是来自Twitter的突出趋势。在此阶段需要特别说明的是,只有“趋势话题检测器”模块是使用DICE工具开发的,而TruthNest的其他组件则是使用传统工具和方法开发的,因为这些工具和方法一直被ATC的工程和开发团队使用。

“趋势话题检测器”详细描述

[编辑 | 编辑源代码]

趋势话题检测器以聚类模块为中心。它创建与提交的搜索条件相关的推文集群。这些集群是通过根据推文中的共同术语对找到的推文进行分组来形成的。该模块跟踪在Twitter上发布的推文的一部分,因为Twitter流式API存在限制。虽然它目前仅限于Twitter流API,但它可以接收来自多个社交媒体(YouTube、Flickr等)的输入,但尚未实现。

话题检测器屏幕截图

聚类模块的主管道实现为一个Storm拓扑,其中顺序bolt对抓取过程执行特定操作。这些bolt包括实体提取(使用Stanford NER分类器)和minHash计算以估计形成的集合的相似度。推文术语被提取并索引到正在运行的Solr实例中。最常用的术语是在5分钟的滚动窗口中计算的,并且默认情况下会形成20个集群。一个标签(通常是推文的文本)被分配给每个集群。结果存储在Mongo数据库中。该模块高度可配置,并提供集群的近乎实时的计算。

话题检测器拓扑

如何使用聚类模块

[编辑 | 编辑源代码]
  1. 用户通过用户界面设置搜索词。默认语言为英语,其他语言未正式支持。一些趋势话题集群计算设置也可用(例如窗口计算时间)。
  2. 流程初始化,并通知用户当前分析的推文数量。显示一个图表(折线图),每隔几秒钟更新一次,显示流进度。如果找到推文,则在10分钟后显示第一个趋势话题集群。显示一组20个趋势话题集群。趋势话题集群是可点击的,用户可以查看组成它们的项目。
  3. 趋势话题集群每五分钟重新计算一次,其内容也会更新。用户可以查看详细信息(例如集群随时间的演变)。
  4. 用户可以搜索趋势话题集群并标记最重要的集群。还提供了一个收藏夹过滤器。
  5. 用户可以启动/停止趋势话题集群、编辑和删除它。他可以保存趋势话题集群并在以后重新启动它。
  6. 创建的趋势话题集群的数量及其活动周期存在限制。通常,集群会在24小时后停止。

DICE工具

[编辑 | 编辑源代码]
DICE工具 对我们用例的益处
DICE IDE 大多数DICE工具计划逐步集成到一个公共位置(DICE IDE)这一事实使得各种DICE工具之间的交互非常有效,因为大多数工具都依赖于DICE Profile模型。例如,DICE验证工具需要一个DTSM模型作为输入,该模型用一些关于NewsAsset DIA并行化水平的质量特征进行适当的注释,并且验证过程可以从DICE IDE内部触发。这样,DICE IDE不仅涵盖了我们DIA的设计时建模需求,而且将结果工件有效地链接到与DevOps方法其他阶段相关的工具,例如部署和监控。
DICER DICER工具使我们能够表达NewsAsset应用程序的基础设施需求和约束,并自动生成要在云环境中使用的部署蓝图。我们根据节省时间(相对于从头开始手动设置基础设施所需的时间)和DICER提供的自动化程度来评估DICER工具的实用性。请注意,在计算DICER执行时间总时间时,我们包括了DICE部署服务部署生成的蓝图所需的时间。
部署服务

整个过程非常快速,与之前手动安装 Storm 集群及其所有依赖项(Zookeeper 等)以及 Storm 应用程序和持久化层的所有依赖项相比,节省了近 80% 的时间。TOSCA 蓝图允许预先细化 Storm 特定的配置参数,这一点非常方便,因为我们可以通过应用重新配置来尝试不同的 Storm 集群设置,从而产生新的测试环境,直到我们找到对我们的拓扑结构而言性能和吞吐量最有效的设置。
监控平台 能够监控 NewsAsset 部署的拓扑结构对于识别任何潜在的瓶颈甚至通过例如添加更多并行化来优化性能和吞吐量是必要的。我们已经安装了监控平台核心模块(ELK 堆栈、DMon 核心),然后我们使用最新部署服务版本的功能之一,在基础设施/应用程序部署阶段自动在监控平台的核心服务上注册 Storm 集群节点。监控不仅可以在每个(Storm 集群)节点上执行,也可以在每个应用程序级别上执行,这意味着我们可以区分与节点硬件规格相关的问题和与应用程序内部机制相关的问题,例如 Storm 内部消息缓冲区的大小。
故障注入 由于 NewsAsset 的拓扑结构涉及云部署,因此在受控环境中尽早地测试故障的后果(而不是在应用程序投入生产后)至关重要。对于 NewsAsset DIA 而言,其组成的拓扑结构必须可靠,因为其执行的处理的性质:例如,如果某个时间点发生突发事件,则由于网络故障/重新分区而丢失一些社交网络消息可能会影响在此期间识别的热门话题的质量。因此,拥有像故障注入这样的工具可以帮助我们测试应用程序在可靠性和容错性方面的表现。NewsAsset 应用程序还需要尽可能消除任何单点故障。我们使用故障注入工具随机停止/终止各种类型的 Storm 进程(nimbus、supervisor 和 worker 进程),以及 Storm 集群的整个节点,并检查这些操作如何影响拓扑结构的正确执行。最后,我们使用故障注入工具为 Storm 集群 VM 生成高内存和 CPU 使用率,以模拟高内存/CPU 负载。拓扑结构的各种处理 bolt 并没有受到太大影响,因为它们都不太依赖 CPU 或内存。我们计划继续使用故障注入工具进行实验,特别是模拟高带宽负载,因为热门话题检测拓扑结构大量使用了 Twitter Stream API。
质量测试 质量测试工具的验证 KPI 指的是手动测试周期所需时间减少 30% 以上。为此,已经执行了计时评估,将 ATC 工程师手动执行拓扑结构压力测试所需的时间与质量测试工具执行类似任务所需的时间进行了比较。在我们的用例场景中,只有 5 次迭代/实验实现了目标,并且每个测试周期的减少量达到了 34%。如果需要更多测试周期,则减少量可能会更高。另一个重要的发现是,可以使用质量测试工具完全自动化负载测试过程。
配置优化 通常,典型的 Storm 部署包含各种影响 nimbus、supervisor 以及拓扑结构行为的配置属性。对于开发人员来说,选择配置属性的最佳值以微调 Storm 拓扑结构执行是一项非平凡的任务。这通常是该领域专家完成的一项复杂任务。此外,每个基于 Storm 的应用程序都有其自身的特性(I/O 绑定或 CPU 绑定或两者兼而有之),在尝试候选最佳值时应仔细考虑这些特性,因此遵循通用的设置模板不是一种选择。此外,每次尝试优化某些属性时更新配置并在集群上重新加载配置所需的开销和时间都很大。

为了评估将配置优化工具应用于新闻协调器依赖的 Storm 配置带来的改进,ATC 工程师监控了拓扑结构的吞吐量和延迟。与默认配置相比,性能影响提高了两倍以上,这是一个显著的改进。这一成就是在仅 100 次迭代后实现的,总共执行了 16 个小时(100 * 10 分钟)。相应的验证 KPI 已得到充分解决,导致吞吐量和延迟指标均提高了 30% 以上。

仿真工具 可扩展性、瓶颈检测和仿真/预测分析是新闻协调器 DIA 的一些核心需求。DICE 仿真工具承诺它可以执行基于 Storm 的 DIA 的性能评估,这将允许在生产云环境中部署之前预测系统的行为。新闻协调器工程师经常花费大量时间和精力来根据目标运行时执行上下文配置和调整拓扑结构配置。引入一个可以高效地执行此类要求苛刻任务的工具将明显提高开发人员的生产力,并促进他们的测试需求。仿真工具的相应验证 KPI 指的是螺栓利用率的预测误差小于 30%。应在仿真工具生成的成果与 Storm 框架公开的指标接口监控的成果之间进行比较。通过这种方式,将预测/模拟结果与通过将新闻协调器拓扑结构部署在运行在云上的 4 个节点的 Storm 集群上监控到的实际结果进行了验证。

结果表明,对于一些螺栓(大约超过一半),预测误差确实非常小,小于 10%,可以相当准确地预测螺栓的容量。有趣的是,仿真工具无法预测其容量或至少以可接受的精度预测其容量的螺栓的特征是什么。新闻协调器拓扑结构的螺栓工作流程中有一个棘手的部分:一些螺栓不会持续地消费和分析社交项目,而是每当预定义的时间窗口到期时(该时间窗口反映了新闻协调器工程师希望检测新闻主题的频率,配置为 5 分钟)就会触发其执行。因此,事实证明,对于主题检测和 minhash 聚类螺栓,平均执行时间难以计算,从而影响了仿真工具结果的精度。此外,其中一些螺栓本质上利用率较低,主要是因为与总实验时间相比,它们执行的时间有限。在这些情况下,还观察到仿真工具结果与实际监控值之间的偏差超过了关于预测的 30% 的阈值。对于 ATC 工程师来说,在帮助他们优化和评估新闻协调器 DIA 的工具堆栈中拥有像 DICE 仿真工具这样的工具是一个显著的优势。新闻协调器 DIA 中添加的每个新功能都可能导致系统性能方面出现不希望有的不平衡。能够在实际部署到云基础设施之前验证对 DIA 的性能影响,可以灵活地预先微调拓扑结构配置并采取纠正措施(即通过增加螺栓并行性进行扩展),而不会浪费否则实际部署到云上所需的资源(成本和精力)。

华夏公益教科书