基于数据实例的流式处理与约束优化问题研究
流式处理中的推式与拉式策略对比
在流式处理场景中,我们进行了一系列实验来对比推式(push-based)和拉式(pull-based)策略的性能。
首先,将数据复制为具有八个分区的流(复制因子为 2),同时运行四个消费者,这些消费者配置为使用基于 Flink 的推式和拉式策略以及原生 C++ 拉式消费者。消费者会对八个 Flink 映射器每秒报告的元组进行迭代、过滤和计数。
在实验结果方面,生产者与拉式消费者直接竞争。我们预期当并发消费者使用推式策略时,集群吞吐量会更高。实验发现,除了 32 KB 块大小的情况外,生产者的结果相似。在 32 KB 块大小时,由于拉式消费者速度较慢,生产者能够推送更多数据。C++ 拉式消费者能更好地跟上生产者的节奏,而推式消费者在配置为使用较小块时也能跟上生产者。Flink 的推式策略比拉式策略性能高出达 2 倍,因此在资源受限的场景中,推式方法可能更具性能优势。
在 Wikipedia 基准测试(窗口化词频计数流)中,生产者配置为以 2 KiB 记录的块读取 Wikipedia 文件,能在几秒内推送约 2 GiB 的文本。消费者运行数十秒,且不与生产者竞争。拉式和推式消费者表现出相似的性能。当从一个消费者扩展到四个消费者时,我们绘制了八个映射器每秒聚合的词频元组。由于该基准测试受 CPU 限制,使用较小块或更多分区的流进行实验时,结果相似。为避免在商用集群上处理大型数据集(如数十 GB)时出现网络瓶颈,在存储端进行预处理和本地聚合时,推式方法可能更具竞争力。
未来实现优化方向
对于当前的原型实现,仍有进一步改进的空间:
1.
超级会员免费看
订阅专栏 解锁全文
1073

被折叠的 条评论
为什么被折叠?



