Spark Streaming 框架在 5G 中的应用

原文连接:css

https://www.ericsson.com/en/blog/2019/6/applying-the-spark-streaming-framework-to-5g算法

编译:数据库

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

咱们已经很长时间没有更新流处理框架的相关博客(apache-storm-vs-spark-streaming ,https://www.ericsson.com/en/blog/2015/7/apache-storm-vs-spark-streaming和 apache-storm-performance-tuners,https://www.ericsson.com/en/blog/2015/4/apache-storm-performance-tuners,此次想分享一下咱们关于当前流处理引擎及其在 5G 和 IoT 场景适用性的一些观点。微信

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

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

Spark Streaming框架

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

输入阶段:

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

机器学习(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 Tuners,https://www.ericsson.com/en/blog/2015/4/apache-storm-performance-tuners;Apache Storm vs. Spark Streaming,https://www.ericsson.com/en/blog/2015/7/apache-storm-vs-spark-streaming

本文由用户为我的学习及研究之目的自行翻译发表,如发现侵犯原做者的版权,请联系公众号后台处理。


本文分享自微信公众号 - Apache Spark技术交流社区(E-MapReduce_Spark)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索