数智资源网
首页 首页 大数据 查看内容

Apache处理实时数据的正确姿势

木马童年 2020-10-16 13:37 14 0

在数十亿设备“永远在线”的未来,存储原始数据供日后分析将不再是一种选择,用户更需要实时的准确响应,对故障和上下文相关条件的预测,一定要求数据在到达数据库之前进行实时处理。 “云将扩展”可以满足实时处理 ...

在数十亿设备“永远在线”的未来,存储原始数据供日后分析将不再是一种选择,用户更需要实时的准确响应,对故障和上下文相关条件的预测,一定要求数据在到达数据库之前进行实时处理。

“云将扩展”可以满足实时处理流数据的需求是很可口的,但是一些简单的示例表明,它永远无法满足对无限数据流进行实时响应的需求。在这些情况下(从移动设备到IoT),需要一种新的范例。

尽管云计算依赖于“先存储后分析”的大数据方法,但用户更加迫切需要一种能够轻松处理无数、嘈杂和大量数据流的软件框架,以便它们能够实时响应、洞察预测。

例如,与推特Firehose相比,加利福尼亚州每天从其交通基础设施中产生的流数据更多。Uber,Lyft和FedEx等消费者预测和城市交通更需要大量数据的实时分析,学习和预测。其中处理时间不可避免有着大约半秒的延迟。

一个功能强大的编程范例,则能让应用程序在以下情况下更简单即时便捷的处理无限的数据流:

数据量巨大,或者移动原始数据的成本很高。

数据由分布广泛的资产(例如移动设备)生成。

数据具有短暂的价值,分析迫不及待。

始终拥有最新的见解是至关重要的,而推断是不会做的。

一、发布和订阅

事件驱动系统领域中的关键架构模式是pub/sub或publish/subscribe消息传递的概念。这是一种异步通信方法,其中消息从发布者(产生数据的任何内容)传递到订阅者(处理数据的应用程序。发布/订阅可将任意数量的发件人与一组未知的使用者分离。

在发布/ 订阅中,源将主题的事件发布到代理,代理将消息的接收顺序存储。单个应用程序订阅一个或多个主题,并且代理转发匹配的事件。Apache  Kafka和Pulsar以及CNCF NATS是发布/订阅系统。

用于发布/订阅的云服务包括Google发布/订阅,AWS Kinesis,Azure服务总线,Confluent  Cloud等。而这些系统不运行订户应用程序,它们只是将数据传递给主题订户。

流数据通常包含事件,这些事件是对应用程序或基础结构状态的更新。在选择用于处理数据的体系结构时,数据发布系统(例如pub /  sub框架)的作用受到限制。使用者应用程序的“方式”超出了pub /  sub系统的范围。这给开发人员管理留下了巨大的复杂性。所谓的流处理器是一种特殊的订户,它可以动态分析数据并将结果返回给同一代理。

二、Apache Spark

Apache Spark是用于大规模数据处理的统一分析引擎。通常,Apache Spark  Streaming用作流处理器,例如:为机器学习模型提供新数据。

Spark  Streaming将数据分成多个小批,每个小批均由Spark模型或其他系统独立分析。事件流被分组为迷你批以进行分析,但是流处理器本身必须具有弹性:

流处理器必须能够随数据速率扩展,甚至可以跨服务器和云,并且还可以平衡实例之间的负载,以确保弹性和其他应用程序层需求。

它必须能够分析以不同速率报告的源中数据,这意味着它必须是有状态的或者将状态存储在数据库中。

当将Spark Streaming用作流处理器时,通常使用后一种方法,当需要超低延迟响应时,可能会导致性能问题。

一个相关的项目Apache Samza提供了一种方法,可以处理实时事件流,并使用Hadoop Yarn或Apache  Mesos进行弹性伸缩来管理计算资源。

三、解决数据缩放问题

重要的是要注意,甚至Samza也无法完全缓解应用程序开发人员对数据处理的需求。扩展数据速率意味着处理事件的任务需要在许多实例之间进行负载平衡,并且在实例之间共享所得到的应用程序层状态的唯一方法是使用数据库。

但是,在应用程序的任务之间状态协调发展到数据库的那一刻,必然会对性能产生连锁反应。所以数据库的选择至关重要。随着系统的扩展,数据库的集群管理将成为下一个潜在的瓶颈。

这可以通过有状态、有弹性且可以代替流处理器使用的替代方案来解决。在应用程序级别(在每个容器或实例内)这些解决方案通过流更新即时构建并发,互连的“  Web代理”的状态模型。

代理是并发的“纳米服务”,它们消耗单个来源的原始数据并维护其状态。代理程序相互链接以根据数据中发现的源之间的真实关系(例如遏制性和邻近性)共享状态。

因此,代理形成并发服务的图,可以分析并发服务的状态以及它们链接到的代理的状态。每个代理都为单个数据源提供纳米服务,该服务将从原始数据转换为状态并进行分析、学习。

这些解决方案通过允许代理程序(现实世界中的数字双胞胎)可以广泛分布来简化应用程序体系结构,即使维护在应用程序层相互链接的分布式图形也是如此。

这是因为链接是映射到解决方案和代理本身的当前运行时执行实例的URL。这样应用程序可以无缝扩展实例,而无需担心DevOps代理消耗数据并维护状态。他们还会计算自己以及其他代理的状态。由于代理是有状态的,因此不需要数据库,并且洞察力以内存速度计算。

四、使用开源读取世界数据

我们查看数据的方式正在发生巨大变化:

现实世界不再以数据库作为记录系统,数字孪生可以连续传输其状态。幸运的是,开源社区以丰富的用于处理实时事件的项目画布引领着这一潮流。

从最活跃的社区是Apache Kafka,Pulsar和CNCF NATS的pub / sub到持续处理流数据的分析框架,包括Apache  Spark,Flink,Beam,Samza和Apache许可的SwimOS和Hazelcast,开发人员拥有最广泛的软件系统选择。

原始数据 数据库 数据流 移动设备 云计算 大数据
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...