Hi Gary, Thanks for kicking off the features for next release 1.10. I am very supportive of you and Yu Li to be the relaese managers.
Just mention another two improvements which want to be covered in FLINK-1.10 and I already confirmed with Piotr to reach an agreement before. 1. Data serialize and copy only once for broadcast partition [1]: It would improve the throughput performance greatly in broadcast mode and was actually proposed in Flink-1.8. Most of works already done before and only left the last critical jira/PR. It will not take much efforts to make it ready. 2. Let Netty use Flink's buffers directly in credit-based mode [2] : It could avoid memory copy from netty stack to flink managed network buffer. The obvious benefit is decreasing the direct memory overhead greatly in large-scale jobs. I also heard of some user cases encounter direct OOM caused by netty memory overhead. Actually this improvment was proposed by nico in FLINK-1.7 and always no time to focus then. Yun Gao already submitted a PR half an year ago but have not been reviewed yet. I could help review the deign and PR codes to make it ready. And you could make these two items as lowest priority if possible. [1] https://issues.apache.org/jira/browse/FLINK-10745 [2] https://issues.apache.org/jira/browse/FLINK-10742 Best, Zhijiang ------------------------------------------------------------------ From:Gary Yao <g...@apache.org> Send Time:2019年9月6日(星期五) 17:06 To:dev <dev@flink.apache.org> Cc:carp84 <car...@gmail.com> Subject:[DISCUSS] Features for Apache Flink 1.10 Hi community, Since Apache Flink 1.9.0 has been released more than 2 weeks ago, I want to start kicking off the discussion about what we want to achieve for the 1.10 release. Based on discussions with various people as well as observations from mailing list threads, Yu Li and I have compiled a list of features that we deem important to be included in the next release. Note that the features presented here are not meant to be exhaustive. As always, I am sure that there will be other contributions that will make it into the next release. This email thread is merely to kick off a discussion, and to give users and contributors an understanding where the focus of the next release lies. If there is anything we have missed that somebody is working on, please reply to this thread. ** Proposed features and focus Following the contribution of Blink to Apache Flink, the community released a preview of the Blink SQL Query Processor, which offers better SQL coverage and improved performance for batch queries, in Flink 1.9.0. However, the integration of the Blink query processor is not fully completed yet as there are still pending tasks, such as implementing full TPC-DS support. With the next Flink release, we aim at finishing the Blink integration. Furthermore, there are several ongoing work threads addressing long-standing issues reported by users, such as improving checkpointing under backpressure, and limiting RocksDBs native memory usage, which can be especially problematic in containerized Flink deployments. Notable features surrounding Flink’s ecosystem that are planned for the next release include active Kubernetes support (i.e., enabling Flink’s ResourceManager to launch new pods), improved Hive integration, Java 11 support, and new algorithms for the Flink ML library. Below I have included the list of features that we compiled ordered by priority – some of which already have ongoing mailing list threads, JIRAs, or FLIPs. - Improving Flink’s build system & CI [1] [2] - Support Java 11 [3] - Table API improvements - Configuration Evolution [4] [5] - Finish type system: Expression Re-design [6] and UDF refactor - Streaming DDL: Time attribute (watermark) and Changelog support - Full SQL partition support for both batch & streaming [7] - New Java Expression DSL [8] - SQL CLI with DDL and DML support - Hive compatibility completion (DDL/UDF) to support full Hive integration - Partition/Function/View support - Remaining Blink planner/runtime merge - Support all TPC-DS queries [9] - Finer grained resource management - Unified TaskExecutor Memory Configuration [10] - Fine Grained Operator Resource Management [11] - Dynamic Slots Allocation [12] - Finish scheduler re-architecture [13] - Allows implementing more sophisticated scheduling strategies such as better batch scheduler or speculative execution. - New DataStream Source Interface [14] - A new source connector architecture to unify the implementation of source connectors and make it simpler to implement custom source connectors. - Add more source/system metrics - For better flink job monitoring and facilitate customized solutions like auto-scaling. - Executor Interface / Client API [15] - Allow Flink downstream projects to easier and better monitor and control flink jobs. - Interactive Programming [16] - Allow users to cache the intermediate results in Table API for later usage to avoid redundant computation when a Flink application contains multiple jobs. - Python User Defined Function [17] - Support native user-defined functions in Flink Python, including UDF/UDAF/UDTF in Table API and Python-Java mixed UDF. - Spillable heap backend [18] - A new state backend supporting automatic data spill and load when memory exhausted/regained. - RocksDB backend memory control [19] - Prevent excessive memory usage from RocksDB, especially in container environment. - Unaligned checkpoints [20] - Resolve the checkpoint timeout issue under backpressure. - Separate framework and user class loader in per-job mode - Active Kubernetes Integration [21] - Allow ResourceManager talking to Kubernetes to launch new pods similar to Flink's Yarn/Mesos integration - ML pipeline/library - Aims at delivering several core algorithms, including Logistic Regression, Native Bayes, Random Forest, KMeans, etc. - Add vertex subtask log url on WebUI [22] ** Suggested release timeline Based on our usual time-based release schedule [23], and considering that several events, such as Flink Forward Europe and Asia, are overlapping with the current release cycle, we should aim at releasing 1.10 around the beginning of January 2020. To give the community enough testing time, I propose the feature freeze to be at the end of November. We should announce an exact date later in the release cycle. Lastly, I would like to use the opportunity to propose Yu Li and myself as release managers for the upcoming release. What do you think? Best, Gary [1] https://lists.apache.org/thread.html/775447a187410727f5ba6f9cefd6406c58ca5cc5c580aecf30cf213e@%3Cdev.flink.apache.org%3E [2] https://lists.apache.org/thread.html/b90aa518fcabce94f8e1de4132f46120fae613db6e95a2705f1bd1ea@%3Cdev.flink.apache.org%3E [3] https://issues.apache.org/jira/browse/FLINK-10725 [4] https://cwiki.apache.org/confluence/display/FLINK/FLIP-54%3A+Evolve+ConfigOption+and+Configuration [5] https://cwiki.apache.org/confluence/display/FLINK/FLIP-59%3A+Enable+execution+configuration+from+Configuration+object [6] https://cwiki.apache.org/confluence/display/FLINK/FLIP-51%3A+Rework+of+the+Expression+Design [7] https://cwiki.apache.org/confluence/display/FLINK/FLIP-63%3A+Rework+table+partition+support [8] https://cwiki.apache.org/confluence/display/FLINK/FLIP-55%3A+Introduction+of+a+Table+API+Java+Expression+DSL [9] https://issues.apache.org/jira/browse/FLINK-11491 [10] https://cwiki.apache.org/confluence/display/FLINK/FLIP-49%3A+Unified+Memory+Configuration+for+TaskExecutors [11] https://cwiki.apache.org/confluence/display/FLINK/FLIP-53%3A+Fine+Grained+Operator+Resource+Management [12] https://cwiki.apache.org/confluence/display/FLINK/FLIP-56%3A+Dynamic+Slot+Allocation [13] https://issues.apache.org/jira/browse/FLINK-10429 [14] https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface [15] https://lists.apache.org/thread.html/498dd3e0277681cda356029582c1490299ae01df912e15942e11ae8e@%3Cdev.flink.apache.org%3E [16] https://cwiki.apache.org/confluence/display/FLINK/FLIP-36%3A+Support+Interactive+Programming+in+Flink [17] https://cwiki.apache.org/confluence/display/FLINK/FLIP-58%3A+Flink+Python+User-Defined+Stateless+Function+for+Table [18] https://cwiki.apache.org/confluence/display/FLINK/FLIP-50%3A+Spill-able+Heap+Keyed+State+Backend [19] https://issues.apache.org/jira/browse/FLINK-7289 [20] http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Checkpointing-under-backpressure-td31616.html [21] http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Best-practice-to-run-flink-on-kubernetes-td31532.html [22] https://issues.apache.org/jira/browse/FLINK-13894 [23] https://cwiki.apache.org/confluence/display/FLINK/Time-based+releases