Thanks, I append it to the known limitations of this FLIP. Best, Yangze Guo
On Mon, Jun 21, 2021 at 3:20 PM Zhu Zhu <reed...@gmail.com> wrote: > > Thanks for the quick response Yangze. > The proposal sounds good to me. > > Thanks, > Zhu > > Yangze Guo <karma...@gmail.com> 于2021年6月21日周一 下午3:01写道: >> >> Thanks for the comments, Zhu! >> >> Yes, it is a known limitation for fine-grained resource management. We >> also have filed this issue in FLINK-20865 when we proposed FLIP-156. >> >> As a first step, I agree that we can mark batch jobs with PIPELINED >> edges as an invalid case for this feature. However, just throwing an >> exception, in that case, might confuse users who do not understand the >> concept of pipeline region. Maybe we can force all the edges in this >> scenario to BLOCKING in compiling stage and well document it. So that, >> common users will not be interrupted while the expert users can >> understand the cost of that usage and make their decision. WDYT? >> >> Best, >> Yangze Guo >> >> On Mon, Jun 21, 2021 at 2:24 PM Zhu Zhu <reed...@gmail.com> wrote: >> > >> > Thanks for proposing this @Yangze Guo and sorry for joining the discussion >> > so late. >> > The proposal generally looks good to me. But I find one problem that batch >> > job with PIPELINED edges might hang if enabling fine-grained resources. >> > see "Resource Deadlocks could still happen in certain Cases" section in >> > https://cwiki.apache.org/confluence/display/FLINK/FLIP-119+Pipelined+Region+Scheduling >> > However, this problem may happen only in batch cases with PIPELINED edges, >> > because >> > 1. streaming jobs would always require all resource requirements to be >> > fulfilled at the same time. >> > 2. batch jobs without PIPELINED edges consist of multiple single vertex >> > regions and thus each slot can be individually used and returned >> > So maybe in the first step, let's mark batch jobs with PIPELINED edges as >> > an invalid case for fine-grained resources and throw exception for it in >> > early compiling stage? >> > >> > Thanks, >> > Zhu >> > >> > Yangze Guo <karma...@gmail.com> 于2021年6月15日周二 下午4:57写道: >> >> >> >> Thanks for the supplement, Arvid and Yun. I've annotated these two >> >> points in the FLIP. >> >> The vote is now started in [1]. >> >> >> >> [1] >> >> http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-169-DataStream-API-for-Fine-Grained-Resource-Requirements-td51381.html >> >> >> >> Best, >> >> Yangze Guo >> >> >> >> On Fri, Jun 11, 2021 at 2:50 PM Yun Gao <yungao...@aliyun.com.invalid> >> >> wrote: >> >> > >> >> > Hi, >> >> > >> >> > Very thanks @Yangze for bringing up this discuss. Overall +1 for >> >> > exposing the fine-grained resource requirements in the DataStream API. >> >> > >> >> > One similar issue as Arvid has pointed out is that users may also >> >> > creating >> >> > different SlotSharingGroup objects, with different names but with >> >> > different >> >> > resources. We might need to do some check internally. But We could also >> >> > leave that during the development of the actual PR. >> >> > >> >> > Best, >> >> > Yun >> >> > >> >> > >> >> > >> >> > ------------------Original Mail ------------------ >> >> > Sender:Arvid Heise <ar...@apache.org> >> >> > Send Date:Thu Jun 10 15:33:37 2021 >> >> > Recipients:dev <dev@flink.apache.org> >> >> > Subject:Re: [DISCUSS] FLIP-169: DataStream API for Fine-Grained >> >> > Resource Requirements >> >> > Hi Yangze, >> >> > >> >> > >> >> > >> >> > Thanks for incorporating the ideas and sorry for missing the builder >> >> > part. >> >> > >> >> > My main idea is that SlotSharingGroup is immutable, such that the user >> >> > >> >> > doesn't do: >> >> > >> >> > >> >> > >> >> > ssg = new SlotSharingGroup(); >> >> > >> >> > ssg.setCpus(2); >> >> > >> >> > operator1.slotSharingGroup(ssg); >> >> > >> >> > ssg.setCpus(4); >> >> > >> >> > operator2.slotSharingGroup(ssg); >> >> > >> >> > >> >> > >> >> > and wonders why both operators have the same CPU spec. But the details >> >> > can >> >> > >> >> > be fleshed out in the actual PR. >> >> > >> >> > >> >> > >> >> > On Thu, Jun 10, 2021 at 5:13 AM Yangze Guo wrote: >> >> > >> >> > >> >> > >> >> > > Thanks all for the discussion. I've updated the FLIP accordingly, the >> >> > >> >> > > key changes are: >> >> > >> >> > > - Introduce SlotSharingGroup instead of ResourceSpec which contains >> >> > >> >> > > the resource spec of slot sharing group >> >> > >> >> > > - Introduce two interfaces for specifying the SlotSharingGroup: >> >> > >> >> > > #slotSharingGroup(SlotSharingGroup) and >> >> > >> >> > > StreamExecutionEnvironment#registerSlotSharingGroup(SlotSharingGroup). >> >> > >> >> > > >> >> > >> >> > > If there is no more feedback, I'd start a vote next week. >> >> > >> >> > > >> >> > >> >> > > Best, >> >> > >> >> > > Yangze Guo >> >> > >> >> > > >> >> > >> >> > > On Wed, Jun 9, 2021 at 10:46 AM Yangze Guo wrote: >> >> > >> >> > > > >> >> > >> >> > > > Thanks for the valuable suggestion, Arvid. >> >> > >> >> > > > >> >> > >> >> > > > 1) Yes, we can add a new SlotSharingGroup which includes the name >> >> > > > and >> >> > >> >> > > > its resource. After that, we have two interfaces for configuring the >> >> > >> >> > > > slot sharing group of an operator: >> >> > >> >> > > > - #slotSharingGroup(String name) // the resource of it can be >> >> > >> >> > > > configured through >> >> > > > StreamExecutionEnvironment#registerSlotSharingGroup >> >> > >> >> > > > - #slotSharingGroup(SlotSharingGroup ssg) // Directly configure the >> >> > >> >> > > resource >> >> > >> >> > > > And one interface to configure the resource of a SSG: >> >> > >> >> > > > - >> >> > > > StreamExecutionEnvironment#registerSlotSharingGroup(SlotSharingGroup) >> >> > >> >> > > > We can also define the priority of the above two approaches, e.g. >> >> > > > the >> >> > >> >> > > > resource registering in the StreamExecutionEnvironment will always >> >> > > > be >> >> > >> >> > > > respected when conflict. That would be well documented. >> >> > >> >> > > > >> >> > >> >> > > > 2) Yes, I originally add this interface as a shortcut. It seems >> >> > >> >> > > > unnecessary now. Will remove it. >> >> > >> >> > > > >> >> > >> >> > > > 3) I don't think we need to expose the ExternalResource. In the >> >> > >> >> > > > builder of SlotSharingGroup, we can introduce a >> >> > >> >> > > > #withExternalResource(String name, double value). Also, this >> >> > > > interface >> >> > >> >> > > > needs to be annotated as evolving. >> >> > >> >> > > > >> >> > >> >> > > > 4) Actually, I've mentioned it in the FLIP. Maybe it would be good >> >> > > > to >> >> > >> >> > > > elaborate on the Builder for the SlotSharingGroup. >> >> > >> >> > > > >> >> > >> >> > > > WDYT? >> >> > >> >> > > > >> >> > >> >> > > > Best, >> >> > >> >> > > > Yangze Guo >> >> > >> >> > > > >> >> > >> >> > > > On Tue, Jun 8, 2021 at 6:51 PM Arvid Heise wrote: >> >> > >> >> > > > > >> >> > >> >> > > > > Hi Yangze, >> >> > >> >> > > > > >> >> > >> >> > > > > I like the general approach to bind requirements to slotsharing >> >> > >> >> > > groups. I >> >> > >> >> > > > > think the current approach is also flexible enough that a user >> >> > > > > could >> >> > >> >> > > simply >> >> > >> >> > > > > use ParameterTool or similar to use config values and wire that >> >> > > > > with >> >> > >> >> > > their >> >> > >> >> > > > > slotgroups, such that different requirements can be tested without >> >> > >> >> > > > > recompilation. So I don't see an immediate need to provide a >> >> > > > > generic >> >> > >> >> > > > > solution for yaml configuration for now. >> >> > >> >> > > > > >> >> > >> >> > > > > Looking at the programmatic interface though, I think we could >> >> > > > > improve >> >> > >> >> > > by >> >> > >> >> > > > > quite a bit and I haven't seen these alternatives being >> >> > > > > considered in >> >> > >> >> > > the >> >> > >> >> > > > > FLIP: >> >> > >> >> > > > > 1) Add new class SlotSharingGroup that incorporates all >> >> > > > > ResourceSpec >> >> > >> >> > > > > properties. Instead of using group names, the user could directly >> >> > >> >> > > configure >> >> > >> >> > > > > such an object. >> >> > >> >> > > > > >> >> > >> >> > > > > SlotSharingGroup ssg1 = new SlotSharingGroup("ssg-1"); // name >> >> > >> >> > > > > could also be omitted and auto-generated >> >> > >> >> > > > > ssg1.setCPUCores(4); >> >> > >> >> > > > > ... >> >> > >> >> > > > > DataStream> grades = >> >> > >> >> > > > > GradeSource >> >> > >> >> > > > > .getSource(env, rate) >> >> > >> >> > > > > >> >> > >> >> > > > > .assignTimestampsAndWatermarks(IngestionTimeWatermarkStrategy.create()) >> >> > >> >> > > > > .slotSharingGroup(ssg1); >> >> > >> >> > > > > DataStream> salaries = >> >> > >> >> > > > > SalarySource.getSource(env, rate) >> >> > >> >> > > > > >> >> > >> >> > > > > .assignTimestampsAndWatermarks(IngestionTimeWatermarkStrategy.create()) >> >> > >> >> > > > > .slotSharingGroup(ssg2); >> >> > >> >> > > > > >> >> > >> >> > > > > // run the actual window join program with the same slot >> >> > >> >> > > sharing >> >> > >> >> > > > > group as grades >> >> > >> >> > > > > DataStream> joinedStream = >> >> > >> >> > > > > runWindowJoin(grades, salaries, >> >> > >> >> > > > > windowSize).slotSharingGroup(ssg1); >> >> > >> >> > > > > >> >> > >> >> > > > > Note that we could make it backward compatible by changing the >> >> > > > > proposed >> >> > >> >> > > > > StreamExecutionEnvironment#setSlotSharingGroupResource to >> >> > >> >> > > > > StreamExecutionEnvironment#registerSlotSharingGroup(SlotSharingGroup) >> >> > >> >> > > and >> >> > >> >> > > > > then use the string name for further reference. >> >> > >> >> > > > > >> >> > >> >> > > > > 2) I'm also not sure on the StreamExecutionEnvironment# >> >> > >> >> > > > > setSlotSharingGroupResources. What's the benefit of the Map >> >> > > > > version >> >> > >> >> > > over >> >> > >> >> > > > > having the simple setter? Even if the user has a map >> >> > >> >> > > > > slotSharingGroupResources, he could simply do >> >> > >> >> > > > > slotSharingGroupResources.forEach(env::setSlotSharingGroupResource); >> >> > >> >> > > > > >> >> > >> >> > > > > 3) Is defining the ExternalResource part of this FLIP? I don't >> >> > > > > see a >> >> > >> >> > > > > Public* class yet. I'd be also fine to cut the scope of this FLIP >> >> > > > > and >> >> > >> >> > > > > remove it for now and annotate ResourceSpec/SlotSharingGroup >> >> > > > > evolving. >> >> > >> >> > > > > >> >> > >> >> > > > > 4) We should probably use a builder pattern around >> >> > >> >> > > > > ResourceSpec/SlotSharingGroup as in the current ResourceSpec. I >> >> > > > > don't >> >> > >> >> > > think >> >> > >> >> > > > > we need to fully specify that in the FLIP but it would be good to >> >> > > > > at >> >> > >> >> > > least >> >> > >> >> > > > > say how they should be created by the user. >> >> > >> >> > > > > >> >> > >> >> > > > > >> >> > >> >> > > > > >> >> > >> >> > > > > On Tue, Jun 8, 2021 at 10:58 AM Yangze Guo wrote: >> >> > >> >> > > > > >> >> > >> >> > > > > > @Yang >> >> > >> >> > > > > > In short, the external resources will participate in resource >> >> > >> >> > > > > > deduction and be logically ensured, but requesting an external >> >> > >> >> > > > > > resource must still be done through config options with the >> >> > > > > > current >> >> > >> >> > > > > > default resource allocation strategy. >> >> > >> >> > > > > > In FLIP-56, we abstract the logic of resource allocation to the >> >> > >> >> > > > > > `ResourceAllocationStrategy`. Currently, with its default >> >> > >> >> > > > > > implementation, ResourceManager would still allocate TMs with >> >> > > > > > the >> >> > >> >> > > same >> >> > >> >> > > > > > resource spec and the external resources of it are configured >> >> > > > > > through >> >> > >> >> > > > > > the config option as well. So, in your case, you need to define >> >> > > > > > the >> >> > >> >> > > > > > "external-resources" and "external-resources.disk.amount". >> >> > > > > > Then, all >> >> > >> >> > > > > > the disk requirements defined in the SSG will be logically >> >> > > > > > ensured, >> >> > >> >> > > as >> >> > >> >> > > > > > there is no slot level isolation. If the disk space of a task >> >> > > > > > manager >> >> > >> >> > > > > > cannot fulfill the disk requirement, RM will allocate a new one. >> >> > >> >> > > > > > In the future, we'd like to introduce a >> >> > > > > > `ResourceAllocationStrategy` >> >> > >> >> > > > > > which allocates heterogeneous TMs according to the requirements. >> >> > >> >> > > Then, >> >> > >> >> > > > > > user only needs to define the driver of external resources when >> >> > >> >> > > > > > needed. >> >> > >> >> > > > > > Also, regarding the resource isolation, we may provide a >> >> > > > > > fine-grained >> >> > >> >> > > > > > mode in which each slot can only fetch the information of >> >> > > > > > external >> >> > >> >> > > > > > resources it requires in the future. But that is out of the >> >> > > > > > scope of >> >> > >> >> > > > > > this PR. >> >> > >> >> > > > > > >> >> > >> >> > > > > > Best, >> >> > >> >> > > > > > Yangze Guo >> >> > >> >> > > > > > >> >> > >> >> > > > > > On Tue, Jun 8, 2021 at 4:20 PM Yang Wang >> >> > >> >> > > wrote: >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > Thanks @Yangze for preparing this FLIP. >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > I think this is a good start point for the community users to >> >> > > > > > > have >> >> > >> >> > > a >> >> > >> >> > > > > > taste >> >> > >> >> > > > > > > on the fine-grained >> >> > >> >> > > > > > > resource management, which we all believe it could improve the >> >> > >> >> > > Flink job >> >> > >> >> > > > > > > stability and >> >> > >> >> > > > > > > cluster utilization. >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > I have a simple question about the extended resources. It is >> >> > >> >> > > possible to >> >> > >> >> > > > > > > combine extended resources >> >> > >> >> > > > > > > with fine-grained resource management. Except for the GPU, >> >> > > > > > > FPGA >> >> > >> >> > > and other >> >> > >> >> > > > > > > new computing devices, >> >> > >> >> > > > > > > maybe the disk resource is a more general use case. For >> >> > > > > > > example, >> >> > >> >> > > > > > different >> >> > >> >> > > > > > > SSG may have various >> >> > >> >> > > > > > > disk requirements based on the state. So we need to allocate >> >> > > > > > > enough >> >> > >> >> > > > > > > ephemeral storage resource for every >> >> > >> >> > > > > > > TaskManager pod in Kubernetes deployment. Otherwise, it might >> >> > > > > > > be >> >> > >> >> > > evicted >> >> > >> >> > > > > > > due to running out of limits. >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > Best, >> >> > >> >> > > > > > > Yang >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > Xintong Song 于2021年6月8日周二 下午1:47写道: >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > > I think being able to specify fine grained resource >> >> > > > > > > > requirements >> >> > >> >> > > > > > without >> >> > >> >> > > > > > > > having to change the codes and recompile the job is indeed >> >> > > > > > > > a good >> >> > >> >> > > > > > idea. It >> >> > >> >> > > > > > > > definitely improves the usability. >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > However, this requires more careful designs, which probably >> >> > >> >> > > deserves a >> >> > >> >> > > > > > > > separate thread. I'd be good to have that discussion, but >> >> > > > > > > > maybe >> >> > >> >> > > not >> >> > >> >> > > > > > block >> >> > >> >> > > > > > > > this feature on that. >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > One idea concerning the configuration approach: As Yangze >> >> > > > > > > > said, >> >> > >> >> > > flink >> >> > >> >> > > > > > > > configuration options are supposed to take effect at cluster >> >> > >> >> > > level. For >> >> > >> >> > > > > > > > updating job level specifics that are not suitable to be >> >> > >> >> > > introduced as >> >> > >> >> > > > > > a >> >> > >> >> > > > > > > > config option, currently the only way is to pass them as >> >> > > > > > > > program >> >> > >> >> > > > > > arguments. >> >> > >> >> > > > > > > > Would it make sense to introduce a general approach for >> >> > >> >> > > overwriting >> >> > >> >> > > > > > such >> >> > >> >> > > > > > > > job specifics without re-compiling the job? >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > Thank you~ >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > Xintong Song >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > On Tue, Jun 8, 2021 at 1:23 PM Yangze Guo >> >> > >> >> > > wrote: >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > > > > @Wenlong >> >> > >> >> > > > > > > > > After another consideration, the config option approach I >> >> > >> >> > > mentioned >> >> > >> >> > > > > > > > > above might not be appropriate. The resource requirements >> >> > > > > > > > > for >> >> > >> >> > > SSG >> >> > >> >> > > > > > > > > should be a job level configuration and should no be set >> >> > > > > > > > > in the >> >> > >> >> > > > > > > > > flink-conf. >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > > I think we can define a JSON format, which would be the >> >> > >> >> > > ResourceSpecs >> >> > >> >> > > > > > > > > mapped by the name of SSGs, for the resource requirements >> >> > > > > > > > > of a >> >> > >> >> > > > > > > > > specific job. Then, we allow user to configure the file >> >> > > > > > > > > path >> >> > >> >> > > of that >> >> > >> >> > > > > > > > > JSON. The JSON will be only parsed in runtime, which >> >> > > > > > > > > allows >> >> > >> >> > > user to >> >> > >> >> > > > > > > > > tune it without re-compiling the job. >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > > We can add another #setSlotSharingGroupResources for >> >> > >> >> > > configuring the >> >> > >> >> > > > > > > > > file path of that JSON: >> >> > >> >> > > > > > > > > ``` >> >> > >> >> > > > > > > > > /** >> >> > >> >> > > > > > > > > * Specify fine-grained resource requirements for slot >> >> > > > > > > > > sharing >> >> > >> >> > > groups >> >> > >> >> > > > > > > > > with the given resource JSON file. The existing resource >> >> > >> >> > > > > > > > > * requirement of the same slot sharing group will be >> >> > > > > > > > > replaced. >> >> > >> >> > > > > > > > > */ >> >> > >> >> > > > > > > > > public StreamExecutionEnvironment >> >> > > > > > > > > setSlotSharingGroupResources( >> >> > >> >> > > > > > > > > String pathToResourceJson); >> >> > >> >> > > > > > > > > ``` >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > > WDYT? >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > > Best, >> >> > >> >> > > > > > > > > Yangze Guo >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > > On Tue, Jun 8, 2021 at 12:12 PM Yangze Guo >> >> > > > >> >> > >> >> > > > > > wrote: >> >> > >> >> > > > > > > > > > >> >> > >> >> > > > > > > > > > Thanks for the feedbacks, Xintong and Wenlong! >> >> > >> >> > > > > > > > > > >> >> > >> >> > > > > > > > > > @Wenlong >> >> > >> >> > > > > > > > > > I think that is a good idea, adjust the resource without >> >> > >> >> > > > > > re-compiling >> >> > >> >> > > > > > > > > > the job will facilitate the tuning process. >> >> > >> >> > > > > > > > > > We can define a pattern >> >> > > > > > > > > > "slot-sharing-group.resource.{ssg >> >> > >> >> > > name}" >> >> > >> >> > > > > > > > > > (welcome any proposal for the prefix naming) for the >> >> > >> >> > > resource spec >> >> > >> >> > > > > > > > > > config of a slot sharing group. Then, user can set the >> >> > >> >> > > > > > ResourceSpec of >> >> > >> >> > > > > > > > > > SSG "ssg1" by adding "slot-sharing-group.resource.ssg1: >> >> > >> >> > > {cpu: 1.0, >> >> > >> >> > > > > > > > > > heap: 100m, off-heap: 100m....}". WDYT? >> >> > >> >> > > > > > > > > > >> >> > >> >> > > > > > > > > > >> >> > >> >> > > > > > > > > > Best, >> >> > >> >> > > > > > > > > > Yangze Guo >> >> > >> >> > > > > > > > > > >> >> > >> >> > > > > > > > > > On Tue, Jun 8, 2021 at 10:37 AM wenlong.lwl < >> >> > >> >> > > > > > wenlong88....@gmail.com> >> >> > >> >> > > > > > > > > wrote: >> >> > >> >> > > > > > > > > > > >> >> > >> >> > > > > > > > > > > Thanks Yangze for the flip, it is great for users to >> >> > > > > > > > > > > be >> >> > >> >> > > able to >> >> > >> >> > > > > > > > > declare the >> >> > >> >> > > > > > > > > > > fine-grained resource requirements for the job. >> >> > >> >> > > > > > > > > > > >> >> > >> >> > > > > > > > > > > I have one minor suggestion: can we support setting >> >> > >> >> > > resource >> >> > >> >> > > > > > > > > requirements >> >> > >> >> > > > > > > > > > > by configuration? Currently most of the config >> >> > > > > > > > > > > options in >> >> > >> >> > > > > > execution >> >> > >> >> > > > > > > > > config >> >> > >> >> > > > > > > > > > > can be configured by configuration, and it is very >> >> > > > > > > > > > > likely >> >> > >> >> > > that >> >> > >> >> > > > > > users >> >> > >> >> > > > > > > > > need >> >> > >> >> > > > > > > > > > > to adjust the resource according to the performance of >> >> > >> >> > > their job >> >> > >> >> > > > > > > > during >> >> > >> >> > > > > > > > > > > debugging, Providing a configuration way will make it >> >> > > > > > > > > > > more >> >> > >> >> > > > > > > > convenient. >> >> > >> >> > > > > > > > > > > >> >> > >> >> > > > > > > > > > > Bests, >> >> > >> >> > > > > > > > > > > Wenlong Lyu >> >> > >> >> > > > > > > > > > > >> >> > >> >> > > > > > > > > > > On Thu, 3 Jun 2021 at 15:59, Xintong Song < >> >> > >> >> > > tonysong...@gmail.com >> >> > >> >> > > > > > > >> >> > >> >> > > > > > > > > wrote: >> >> > >> >> > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > Thanks Yangze for preparing the FLIP. >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > The proposed changes look good to me. >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > As you've mentioned in the implementation plan, I >> >> > >> >> > > believe one >> >> > >> >> > > > > > of >> >> > >> >> > > > > > > > the >> >> > >> >> > > > > > > > > most >> >> > >> >> > > > > > > > > > > > important tasks of this FLIP is to have the feature >> >> > > > > > > > > > > > well >> >> > >> >> > > > > > > > documented. >> >> > >> >> > > > > > > > > It >> >> > >> >> > > > > > > > > > > > would be really nice if we can keep that in mind and >> >> > >> >> > > start >> >> > >> >> > > > > > drafting >> >> > >> >> > > > > > > > > the >> >> > >> >> > > > > > > > > > > > documentation early. >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > Thank you~ >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > Xintong Song >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > On Thu, Jun 3, 2021 at 3:13 PM Yangze Guo < >> >> > >> >> > > karma...@gmail.com> >> >> > >> >> > > > > > > > > wrote: >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > Hi, there, >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > We would like to start a discussion thread on >> >> > >> >> > > "FLIP-169: >> >> > >> >> > > > > > > > DataStream >> >> > >> >> > > > > > > > > > > > > API for Fine-Grained Resource Requirements"[1], >> >> > > > > > > > > > > > > where >> >> > >> >> > > we >> >> > >> >> > > > > > propose >> >> > >> >> > > > > > > > > the >> >> > >> >> > > > > > > > > > > > > DataStream API for specifying fine-grained >> >> > > > > > > > > > > > > resource >> >> > >> >> > > > > > requirements >> >> > >> >> > > > > > > > in >> >> > >> >> > > > > > > > > > > > > StreamExecutionEnvironment. >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > Please find more details in the FLIP wiki >> >> > > > > > > > > > > > > document [1]. >> >> > >> >> > > > > > Looking >> >> > >> >> > > > > > > > > > > > > forward to your feedback. >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > [1] >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > >> >> > >> >> > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-169+DataStream+API+for+Fine-Grained+Resource+Requirements >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > > Best, >> >> > >> >> > > > > > > > > > > > > Yangze Guo >> >> > >> >> > > > > > > > > > > > > >> >> > >> >> > > > > > > > > > > > >> >> > >> >> > > > > > > > > >> >> > >> >> > > > > > > > >> >> > >> >> > > > > > >> >> > >> >> > > >> >> >