Flink调度数据 or 调度计算

本文对比了Flink和SparkStreaming在调度计算和调度数据上的区别。Spark通过调度计算来优化执行,利用RDD的preferred locations减少数据传输,但在流式计算中可能因频繁调度造成效率损耗。Flink则通过调度数据,如流水线般持续消费处理上游数据,降低延迟并避免资源重复初始化。然而,Spark的调度计算模式在应对慢节点或异常节点时表现出更好的作业稳定性。Flink作为真正的流式计算设计,能更有效地处理数据不均匀的问题,提高资源利用率。
摘要由CSDN通过智能技术生成

https://mp.weixin.qq.com/s/mN4eQklYJAy4qXK3vhWK3Q

对于任何一个分布式计算框架而言,如果数据和计算不在同一个节点,那么他们中间必须有一个需要移动到另一个所在的节点。如果把计算调度到数据所在节点,那就是调度计算,反之则是调度数据,SparkStreaming和Flink的实现是不同的。Spark的核心数据结构RDD包含几个关键信息,包括数据的分片(partitions)、依赖(dependencies)等,其中还有一个用于优化执行的信息就是preferred locations,这个信息提供了该分片数据的位置信息,即所在的节点,从而提高计算效率。调度计算的方式在批处理中有很大的优势,因为计算相比数据来讲一般信息量比较小,如果计算可以在数据所在的节点执行,会省去大量的网络传输,节省带宽的同时提高计算效率。但在流式计算中,SparkStreaming的调度由于需要频繁的调度计算导致一些效率上的损耗。首先计算调度是需要消耗一些时间的,比如计算信息序列化————>传输————>反序列化————>初始化资源————>计算执行————>执行完结果上报等都是一些损耗。另外用户的计算中一般会有一些资源的初始化逻辑,比如初始化外部系统的客户端(类似Kafka Producer或Consumer);每次计算的重复调度容易导致这些资源的重复初始化,需要用户对执行逻辑有一定了解才能合理初始化资源,避免资源的重复创建,这就提高了使用门槛。通过业务支持发现,在实际生产过程中,经常遇到大并发的SparkStreaming作业给Kafka和Hbase等存储系统带来巨大连接压力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值