时间与精神的小屋

专注思考的时候,时间仿佛也静下来了


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

谈谈 Flink Shuffle 演进

发表于 2022-08-14 | 分类于 Flink |

在分布式计算中,Shuffle 是非常关键但常常容易被忽视的一环。比如著名的 MapReduce 的命名跳过 Shuffle ,只包含其前后的 Map 跟 Reduce。背后原因一方面是 Shuffle 是底层框架在做的事情,用户基本不会感知到其存在,另一方面是 Shuffle 听起来似乎是比较边缘的基础服务。然而,笔者认为大数据计算与在线服务最基础的区别之一正在于 Shuffle。

阅读全文 »

Flink Savepoint vs 数据库 Savepoint

发表于 2022-06-13 | 分类于 Flink |

前不久笔者在 Flink 社区讨论 Flink SQL 中 Savepoint 的 SQL 语法时(见 FLIP-222 [3]),曾提议过参考数据库的 Savepoint 语法。虽然最终未能获得 Flink 社区的大多数赞成,但也引发了笔者的好奇心: Flink Savepoint 和传统的数据库 Savepoint 究竟有何异同?于是经过笔者一番调研与思考,便有了这篇文章。

阅读全文 »

当谈论 Immutability 的时候,我们在谈论什么

发表于 2022-04-07 | 分类于 随想 |

谈起 Immutability (不可变性),相信大多数读者先想起的是编程语言中的 final、const 之类的常量关键词或 ImmutableMap 之类的数据结构。不可否认,它们是日常开发中的实用工具,但这仅是 Immutability 的最基础应用,而在更深入的领域,比如编程范式、数据库、服务架构设计,同样无不处处体现着 Immutability 的理念。Immutability 通常意味着用直接赋值以外的方式来表达更新,本文就来谈谈这些方式提供何种特性及其如何让我们的程序设计受益。

阅读全文 »

Flink 流批一体中的数据边界

发表于 2022-02-13 | 分类于 Flink |

众所周知,流场景和批场景最为根本的区别在于 Data Boundness(数据集有界性)。Data Boundness 将数据分为 Bounded 和 Un-Bounded。在业界过去多年的实践中,两者分别绑定对应领域的存储系统和计算引擎,然而在流批一体的趋势下,领域的边界在逐渐弱化。例如,消息队列通常用作流场景,但 Pravega 的 StreamCut 支持将指定队列中某一段消息作为批处理的输入[1]。在混合使用流批的场景下,不少原本大家习以为常的设定都需要重新去审视,其中的一项便是数据集内部的边界。

阅读全文 »

流计算与服务网格

发表于 2021-11-02 | 分类于 随想 |

流计算(Stream Processing)和服务网格(Service Mesh)本分别属于大数据和在线服务两个不同的领域,放在一起比较并不常见,但从本质而言两者都是分布式的运行时系统(Runtime)或基础设施,并提供专用的编程 API 或 SDK 供用户在其上运行任意代码。若不论效率,流计算提供的海量数据流式处理功能改为使用服务网格同样可以实现,反之某些服务网格提供的在线服务通过一定改造也可以运行在流计算引擎之上。当然,实现中大概没有人会将它们的使用场景搞混,但随着实时数据服务与在线服务的边界逐渐模糊,在某些数据密集型系统里,流计算和以服务网络为代表的微服务的确都可以作为技术选型的选项,比如事件驱动(Event Driven)应用。

阅读全文 »

网易游戏 FlinkSQL 平台化实践

发表于 2021-09-13 | 分类于 Flink |

随着近年来流式 SQL 理论逐渐完善,在实时流计算场景中的提供与离线批计算类似的 SQL 开发体验成为可能,GCP Dataflow、Apache Flink、Apache Kafka、Apache Pulsar 都纷纷推出 SQL 支持。在开源领域中,Flink SQL 毫无疑问是流式 SQL 领域最为流行的框架之一,但由于 Flink SQL 缺乏类似 Hive Server2 的服务端组件,各大厂对 Flink SQL 平台化的实现方案各不相同,而本文将介绍在网易游戏在 Flink SQL 平台化上的探索和实践。

阅读全文 »

浅谈大数据的过去、现在和未来

发表于 2021-06-23 | 分类于 大数据 |

相信身处于大数据领域的读者多少都能感受到,大数据技术的应用场景正在发生影响深远的变化: 随着实时计算、Kubernetes 的崛起和 HTAP、流批一体的大趋势,之前相对独立的大数据技术正逐渐和传统的在线业务融合。关于该话题,笔者早已如鲠在喉,但因拖延症又犯迟迟没有动笔,最终借最近参加多项会议收获不少感悟的契机才能克服懒惰写下这片文章。

阅读全文 »

详解 Flink 容器化环境下的 OOM Killed

发表于 2021-01-02 | 分类于 Flink |

在生产环境中,Flink 通常会部署在 YARN 或 k8s 等资源管理系统之上,进程会以容器化(YARN 容器或 docker 等容器)的方式运行,其资源会受到资源管理系统的严格限制。另一方面,Flink 运行在 JVM 之上,而 JVM 与容器化环境并不是特别适配,尤其 JVM 复杂且可控性较弱的内存模型,容易导致进程因使用资源超标而被 kill 掉,造成 Flink 应用的不稳定甚至不可用。

阅读全文 »

网易游戏基于 Flink 的流式 ETL 建设

发表于 2020-12-20 | 分类于 Flink |

文本由笔者在 Flink Forward Asia 2020 上的分享《网易游戏基于 Flink 的流式 ETL 建设》整理而成。

阅读全文 »

详解 Flink 实时应用的确定性

发表于 2020-06-12 | 分类于 Flink |

确定性(Determinism)是计算机科学中十分重要的特性,确定性的算法保证对于给定相同的输入总是产生相同的输出。在分布式实时计算领域,确定性是业界一直难以解决的课题,由此导致用离线计算修正实时计算结果的 Lambda 架构成为大数据领域过去近十年的主流架构。而在最近几年随着 Google The Dataflow Model 的提出,实时计算和离线计算的关系逐渐清晰,在实时计算中提供与离线计算一致的确定性成为可能。本文将基于流行实时计算引擎 Apache Flink,梳理构建一个确定性的实时应用要满足什么条件。

阅读全文 »
12…8
Paul Lin

Paul Lin

74 日志
16 分类
44 标签
RSS
GitHub
© 2016 - 2022 Paul Lin