【译】Spark Streaming 框架在 5G 中的应用

简介: 原文链接: Applying the Spark Streaming framework to 5G 我们已经很长时间没有更新流处理框架的相关博客(apache-storm-vs-spark-streaming 和 apache-storm-performance-tuners),这次想分享一下我们关于当前流处理引擎及其在 5G 和 IoT 场景适用性的一些观点。

原文链接: Applying the Spark Streaming framework to 5G

编译:明柏,阿里巴巴计算平台事业部EMR团队技术专家,Apache Spark Contributor,目前从事 Spark 内核优化相关的工作,在分布式系统和大数据调度也有较为深入的了解和实践。

我们已经很长时间没有更新流处理框架的相关博客(apache-storm-vs-spark-streamingapache-storm-performance-tuners),这次想分享一下我们关于当前流处理引擎及其在 5G 和 IoT 场景适用性的一些观点。

在发展 5G 和 IoT 场景的准备阶段,爱立信研究了各种可扩展和灵活的流处理框架,以解决数据流水线问题以及提升整体性能。我们通过机器学习流数据进行自适应学习和智能决策从而实现各个领域的自动化。其中使用机器学习算法从流数据中逐步学习模型和获取信息是一个巨大的挑战。

在这篇文章中,我们将讨论 AI 在流数据中的挑战以及如何使用流处理框架(主要是 Spark Streaming 框架)来解决这些问题。

Spark Streaming框架

以下内容分为输入,处理(ETL 和 ML)和输出阶段。 我们还会介绍为了高效的控制和优化,在流处理框架中使用的各种机器学习和数据分析技术。


test

输入阶段:

尽管有不同的输入源(如文件、数据库和各种端点),这个阶段重要的是如何在Spark Streaming 框架下高效地使用 Apache Kafka。 除了默认的基于接收端的方法之外,还有一种解决了性能和重复问题的 direct 技术。在我们的电信领域中,网络探测的数据速率可以达到1TB/秒,direct 方式很好的解决了这个问题。除了性能之外,我们还需要一种简单的方式来维护复杂的电信系统中的分发技术并且满足 99.9999% 的准确率,这对故障情况也提出了极大的要求。而 direct 技术可以降低了处理故障的复杂性,并减少了跨系统重复数据的维护数量。

处理阶段:

提取,转化和加载(ETL):
在过去实践流处理时,通常讨论的是在 executors 上并行运行的 Bolts,我们的主要任务是确定部署拓扑,以获得均匀的分布和可用资源的最大利用率。然后,我们开始讨论 micro-batches 及其与纯流处理相比更出色的效率和容错能力。此外,我们还会经常讨论将批处理和流处理结合在一个查询的 Lambda 架构。目前,由于 Spark Streaming 框架的日益流行,行业已经开始转向甚至将宽表也被视为流数据并增量处理的 Structured Stream Querying。Structured Stream Querying 允许我们以更高优先级处理新到达的数据以响应查询。

在电信领域,我们有各种各样的转换,比如数字映射、清理、空值替换、变量转换等等。因为不涉及 micro-batch 操作,我们使用 Apache Flink 以纯流方式处理所有这些操作。而对于诸如缺失值替换、最后N个值的平均值等操作(任何需要历史数据的操作),我们使用Spark Streaming 的 Structural Querying。


test

机器学习(ML):

在我们的电信领域,我们需要以流的方式创建训练模型和测试数据。我们尝试了各种方法在新的数据流入时更新模型,发现分层模型更容易实现模型增量更新。这些分层数据模型可以很容易地使用 Spark Streaming 框架进行部署,因为它内部支持对这些模型准备的 micro-batch 处理。我们也了解到,利用 Apache Flink 的灵活性和纯流特性,强化学习的实现很容易完成,而且与其他框架相比,这些实现的性能指标具有很强的竞争力。

Sink 阶段:

在数据处理层之后,我们可以将数据存储到各种选项中,例如永久数据存储、分布式内存、返回到消息总线或者只是可视化数据点。 在我们的内部研究中,我们将已处理的数据存储在相对 partition tolerance 更重视 availablity 的 Cassandra(No-SQL数据存储)中。鉴于在通信应用使用 Apache Cassandra 的经验,我们发现它可以通过微调来满足一致性和可用性的场景。当你不能提高 hbase 可用性时,可以尝试使用 Cassandra 并通过调整一致性来实现。

我们还需要将数据存储在“最佳”站点中。资源可能由存储 A 中的站点 A 上的执行者创建,但是客户端应用程序总是从站点 B 查询它,这将要求我们确定在站点 B 上存储资源的位置,以确保数据的本地性,这个我们是通过 Sink Level 的内部优化实现的。

在本文中,我阐述了流处理框架中的一些问题和最佳的使用方式。流系统上的数据管道的介绍应该有助于对您的系统进行性能调优。至于流引擎如何支持 5G 网络切片和物联网数据,这些都将在我们的下一篇博客中讨论。请继续关注!

与此同时,可以回顾我们的其他博客: Apache Storm Performance TunersApache Storm vs. Spark Streaming

_

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
3月前
|
5G 调度 vr&ar
5g技术的应用
5g技术的应用
26 0
|
4天前
|
分布式计算 大数据 数据处理
【Flink】Flink跟Spark Streaming的区别?
【4月更文挑战第17天】【Flink】Flink跟Spark Streaming的区别?
|
1月前
|
存储 分布式计算 Spark
实战|使用Spark Streaming写入Hudi
实战|使用Spark Streaming写入Hudi
39 0
|
1月前
|
机器学习/深度学习 分布式计算 监控
典型的Spark应用实例
典型的Spark应用实例
42 1
|
3月前
|
分布式计算 监控 数据处理
Spark Streaming的容错性与高可用性
Spark Streaming的容错性与高可用性
|
3月前
|
分布式计算 数据处理 Apache
Spark Streaming与数据源连接:Kinesis、Flume等
Spark Streaming与数据源连接:Kinesis、Flume等
|
3月前
|
消息中间件 分布式计算 Kafka
使用Kafka与Spark Streaming进行流数据集成
使用Kafka与Spark Streaming进行流数据集成
|
3月前
|
分布式计算 监控 数据处理
Spark Streaming的DStream与窗口操作
Spark Streaming的DStream与窗口操作
|
3月前
|
分布式计算 监控 数据处理
实时数据处理概述与Spark Streaming简介
实时数据处理概述与Spark Streaming简介
|
3月前
|
SQL 分布式计算 数据处理
Spark的生态系统概览:Spark SQL、Spark Streaming
Spark的生态系统概览:Spark SQL、Spark Streaming