Hi All, Based on our agreement I've created a draft Flink state observability umbrella [1]. Please share your comments. It contains some details to give some insights but the focus would be on the direction.
[1] https://docs.google.com/document/d/1Du1-TShoOjaNDCahs3sgLWIpYkXzJPdSkgHcWLpELyw/edit BR, G On Sat, Aug 10, 2024 at 10:54 AM Zakelly Lan <zakelly....@gmail.com> wrote: > Hi Gabor, > > I apologize for any confusion. Let me clarify my position. > > The concept of state observability is important for users, and the current > FLIP seems to be a step in the right direction. However, before we proceed, > I suggest we discuss the final presentation of the state observability to > the user and consider the high-level vision for achieving this. It's > essential to ensure that the current FLIP aligns with the overall > objective. I'm not suggesting a comprehensive FLIP to address all the > missing pieces, and one FLIP for each piece is fine for me. I just want to > ensure that we are on the same page in terms of vision. The last thing I > want is a fragmented approach resulting in refactoring or deprecation of > code when we need a complete feature. > > Actually, I would hesitate about the current proposal of adding uid *in* > the state metadata. It may cause state incompatibility issues across > versions. In theory we can do this but it is better not if we are adding > data not for fault tolerance but only for human readability. And it could > be worse if we add one or two columns sporadically in future. > > In fact, I expect the state metadata store to exist next to the checkpoint > metadata, rather than within it. This gives us enough flexibility to polish > this function as users need it, and without breaking checkpoint > compatibility too often. Or moreover we don't have to stick to the form of > checkpoint and we could choose a more human readable format like json for > the metadata store. This is where I think this FLIP is inconsistent with my > expectation of the state observability approach. These considerations > deserve a discussion before proceeding with other details. WDTY? > > > Best, > Zakelly > > On Fri, Aug 9, 2024 at 8:22 PM Gabor Somogyi <gabor.g.somo...@gmail.com> > wrote: > > > Hi David, > > > > Thanks for sharing your thoughts! > > > > > It sounds like you might already have an end-to-end solution in mind. > It > > would be really helpful if you could put that into writing so we can all > > align our thinking. > > > > It makes sense to create a high level vision. > > > > > I’m not a fan of the mindset of “this is how it was done in Spark, so > > we’ll > > just replicate it” without proper discussion. We’ve had similar > > conversations before. > > > > I think we've had this conversation already in case of delegation token > > framework > > and I can say the same. No intention to take over things blindly but it's > > not a shame > > to be inspired by solutions which are welcome by users. > > The intention is similar just like in scalable authentication area where > > Flink is now ahead of Spark. > > > > > Would it be too much to ask for a FLIP that outlines the overall vision > > (without delving too deeply into the details) to ensure everyone is > aligned > > and moving in the same direction? > > > > That's a fair point and a constructive way how we can proceed. > > I'm going to come back with the details... > > > > BR, > > G > > > > > > On Fri, Aug 9, 2024 at 1:36 PM David Morávek <d...@apache.org> wrote: > > > > > Hi Gabor, > > > > > > Thanks for taking the initiative on this. It’s clear that significant > > > improvements are needed in this area, and parsing state files can be > > > incredibly challenging, even for those who are well-versed in it. > > > > > > > Just to make it crystal clear, I’m not shooting for an ad-hoc tiny > fix > > > but started a path where we fill each and every gap which will end up > in > > a > > > functionality and UX bar just like the Spark solution. > > > > > > It sounds like you might already have an end-to-end solution in mind. > It > > > would be really helpful if you could put that into writing so we can > all > > > align our thinking. > > > > > > I’m not a fan of the mindset of “this is how it was done in Spark, so > > we’ll > > > just replicate it” without proper discussion. We’ve had similar > > > conversations before. > > > > > > > But this doesn’t mean we create a single giga big FLIP after several > > > months of discussion. > > > > > > I don’t think anyone is asking for a massive FLIP after lengthy > > > discussions, but having a document that outlines the overall vision > could > > > be incredibly valuable, especially in a distributed setting. It also > > opens > > > the door for others to contribute to and shape this shared vision, > which > > is > > > a core principle of community-driven open-source development. > > > > > > Would it be too much to ask for a FLIP that outlines the overall vision > > > (without delving too deeply into the details) to ensure everyone is > > aligned > > > and moving in the same direction? > > > > > > Best, > > > D. > > > > > > On Fri, Aug 9, 2024 at 11:44 AM Gabor Somogyi < > gabor.g.somo...@gmail.com > > > > > > wrote: > > > > > > > Hi Zakelly, > > > > > > > > > I'd suggest we could think of this as a whole > > > > > > > > In general I think we have the same idea in our mind about > considering > > > the > > > > state observability as a whole, just we need to agree about the > > physical > > > > task scheduling. > > > > > > > > > But such a solution requires more design and discussion > > > > > > > > I can't even agree more. But this doesn't mean we create a single > giga > > > big > > > > FLIP after several months of discussion. > > > > > > > > > Regarding the current issue you are facing, here's my idea > > > > > > > > Just to make it crystal clear, I'm not shooting for ad-hoc tiny fix > but > > > > started a path where we fill each and every gap which will end-up in > a > > > > solution > > > > where we hit the functionality and UX bar just like the Spark > solution. > > > > From plan and code perspective I'm more ahead of this FLIP. > > > > So when you aim for different task scheduling then make your exact > > > > suggestion instead of providing hacks. > > > > > > > > If I assume correctly you suggest to create a FLIP where we define > and > > > > agree all the missing pieces in a single giga big FLIP, right? > > > > I would say there are obvious missing pieces which are clear that > they > > > > needed. Just like in PRs the more consumable pieces we have > > > > the better because this single change is about 1k lines of code. > Having > > > an > > > > overkill FLIP/PR can end up in feature creep which I think > > > > is disadvantageous. > > > > > > > > Of course this doesn't exclude the possibility that we start general > > more > > > > high level discussion about the whole state observability story. > > > > Here are my high level conceptual points (I consider roughly each > point > > > as > > > > a separate FLIP): > > > > * Store human readable IDs for operators in metadata > > > > * Expose the metadata as data stream > > > > * Store state with user defined schemas as self containing entity > > > > * SQL integration > > > > * State metastore with all the created checkpoints/savepoints > > > > * State file cleanup strategy in case of failure > > > > * Optional: Some extra tool like metadata explorer > > > > > > > > That said I suggest to split the higher level discussion from this > FLIP > > > in > > > > a separate thread. > > > > > > > > BR, > > > > G > > > > > > > > > > > > On Fri, Aug 9, 2024 at 10:17 AM Zakelly Lan <zakelly....@gmail.com> > > > wrote: > > > > > > > > > Hi Márton and Gabor, > > > > > > > > > > Thanks for sharing context! > > > > > > > > > > Yes, I'd admit that users need a more friendly way to explore > states. > > > And > > > > > it seems Flink lacks something like the state metadata store. I'd > > > suggest > > > > > we could think of this as a whole, to store enough information for > > > > > querying, including operator names, uids, hashes, as well as the > > state > > > > > types or descriptors. Moreover we provide a tool to list those > > > metadata. > > > > My > > > > > thoughts is to provide a complete solution instead of adding one or > > two > > > > > specific data alongside the checkpoint. WDTY? I believe with the > > state > > > > > schema queryable, the State Processor API could become more > powerful > > > and > > > > > easier to use. > > > > > > > > > > But such a solution requires more design and discussion. Regarding > > the > > > > > current issue you are facing, here's my idea: If you could get > access > > > to > > > > > the web UI, you can get the hash (vertex id) in the url by clicking > > and > > > > > zooming in on the operator you want to query. IIUC, this hash can > be > > > used > > > > > to query the state. Is this feasible? Additionally, I think we > could > > > add > > > > > user-defined UIDs on the web UI and related REST APIs. Thus users > > could > > > > > easily identify an operator by uid, or get the uid of an operator. > > > > > > > > > > Best, > > > > > Zakelly > > > > > > > > > > On Thu, Aug 8, 2024 at 11:03 PM Gabor Somogyi < > > > gabor.g.somo...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > Hi Zakelly, > > > > > > > > > > > > Thanks for the feedback, let me elaborate on this. > > > > > > > > > > > > In short Databricks has created a much more user friendly > > solution[1] > > > > for > > > > > > state observability (based on Flink's state processor API) than > > what > > > we > > > > > > have now. > > > > > > > > > > > > Up until now our state processor API was good enough but now > we're > > > > > lagging > > > > > > behind. We see users (just like Spark) where the first class > > citizen > > > is > > > > > the > > > > > > state itself and they're > > > > > > pointing to the new Spark solution. Since the state became first > > > class > > > > > > citizen there is a natural need to use it for business logic > > > > validation, > > > > > > debugging, explanatory browsing, etc... > > > > > > > > > > > > The main message here is that there are cases where users are not > > > able > > > > to > > > > > > identify operators because hash is a one way conversion. > > > > > > I'm open to any suggestion but somehow the initial operator human > > > > > readable > > > > > > identifier must be available. Let me come up with examples where > > > > > > users are completely blind. > > > > > > > > > > > > > Are you saying the user can set the operator uid but then > doesn't > > > > know > > > > > > what they set when debugging? > > > > > > > > > > > > There are cases where the user is setting the UID in the job, > such > > > case > > > > > > it's not user friendly to parse git repos but doable. > > > > > > But there are cases where the user has limited or no control > > related > > > > > UIDs: > > > > > > * SQL jobs are generating operators with meaningful names, but I > > > think > > > > > it's > > > > > > not realistic to enforce users to understand all the internals of > > > Flink > > > > > SQL > > > > > > implementation (which operator named where and how). > > > > > > * Iceberg is using the given UID as prefix and generating more > > > > operators > > > > > > with it > > > > > > * Weak justification but exists: Since operator name and UID are > > both > > > > > > optional some of the users are setting name only. Such case Flink > > > > > generates > > > > > > a random hash, where only name can give some pointers. > > > > > > > > > > > > Hope I've given better context. > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > https://www.databricks.com/blog/announcing-state-reader-api-new-statestore-data-source > > > > > > > > > > > > BR, > > > > > > G > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Aug 8, 2024 at 12:06 PM Zakelly Lan < > zakelly....@gmail.com > > > > > > > > wrote: > > > > > > > > > > > > > Hi Gabor, > > > > > > > > > > > > > > Thanks for the proposal! However, I find it a little strange. > Are > > > you > > > > > > > saying the user can set the operator uid but then doesn't know > > what > > > > > they > > > > > > > set when debugging? Otherwise, is the > > > > > > `OperatorIdentifier.forUid("my-uid")` > > > > > > > feasible? I understand your point about potential cross-team > > work, > > > > but > > > > > > the > > > > > > > person may not be able to debug code that was not written by > > them. > > > > > Things > > > > > > > get complex in this scenario. Could you provide more details > > about > > > > the > > > > > > > issue you are facing? > > > > > > > > > > > > > > Regarding the checkpoint, it is not designed to be > self-contained > > > or > > > > > > > human-readable. I suggest not introducing such columns for > > > debugging > > > > > > > purposes. > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > Zakelly > > > > > > > > > > > > > > On Wed, Aug 7, 2024 at 10:07 PM Gabor Somogyi < > > > > > gabor.g.somo...@gmail.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Hi Devs, > > > > > > > > > > > > > > > > I would like to start a discussion on FLIP-474: Store > operator > > > name > > > > > and > > > > > > > UID > > > > > > > > in state metadata[1]. > > > > > > > > > > > > > > > > In short users are interested in what kind of operators are > > > inside > > > > a > > > > > > > > checkpoint data which can be enhanced from user experience > > > > > perspective. > > > > > > > The > > > > > > > > details can be found in FLIP-474[1]. > > > > > > > > > > > > > > > > Please share your thoughts on this. > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-474%3A+Store+operator+name+and+UID+in+state+metadata > > > > > > > > > > > > > > > > BR, > > > > > > > > G > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >