Spark Streaming 框架在 5G 中的应用

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

原文链接:[https://www.ericsson.com/en/blog/2019/6/applying-the-spark-streaming-framework-to-5g]

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

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

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

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

Spark Streaming框架

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

输入阶段:

尽管有不同的输入源(如文件、数据库和各种端点),这个阶段重要的是如何在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。

image

机器学习(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 的使用方法。
相关文章
|
1天前
|
监控 自动驾驶 安全
5G技术的飞速发展与应用前景
随着科技的不断进步,5G技术作为下一代移动通信标准,正以惊人的速度发展和应用。本文将探讨5G技术的前沿发展、其在各个领域的广泛应用以及对未来社会的影响。
6 0
|
3天前
|
分布式计算 Java Scala
如何处理 Spark Streaming 的异常情况?
【6月更文挑战第16天】如何处理 Spark Streaming 的异常情况?
15 4
|
6天前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
33 6
|
17天前
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。
|
19天前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
69 0
|
22天前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56382 2
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
25天前
|
机器学习/深度学习 分布式计算 数据处理
在Python中应用Spark框架
在Python中应用Spark框架
24 1
|
30天前
|
分布式计算 关系型数据库 MySQL
Spark编程实验四:Spark Streaming编程
Spark编程实验四:Spark Streaming编程
46 2
|
30天前
|
存储 消息中间件 分布式计算
Spark Streaming
Spark Streaming
31 1
|
30天前
|
SQL 分布式计算 Hadoop
Spark分布式内存计算框架
Spark分布式内存计算框架
53 0