本篇文章给大家分享的是有关如何进行Spark Streaming框架在 5G 中的应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
这次想分享一下我们关于当前流处理引擎及其在 5G 和 IoT 场景适用性的一些观点。
在发展 5G 和 IoT 场景的准备阶段,爱立信研究了各种可扩展和灵活的流处理框架,以解决数据流水线问题以及提升整体性能。我们通过机器学习流数据进行自适应学习和智能决策从而实现各个领域的自动化。其中使用机器学习算法从流数据中逐步学习模型和获取信息是一个巨大的挑战。
我们将讨论 AI 在流数据中的挑战以及如何使用流处理框架(主要是 Spark Streaming 框架)来解决这些问题。
Spark Streaming框架
以下内容分为输入,处理(ETL 和 ML)和输出阶段。我们还会介绍为了高效的控制和优化,在流处理框架中使用的各种机器学习和数据分析技术。
输入阶段:
尽管有不同的输入源(如文件、数据库和各种端点),这个阶段重要的是如何在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 的内部优化实现的。
以上就是如何进行Spark Streaming框架在 5G 中的应用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/223253.html