State related resources like keyed state backends, operator state backends, timer service manager, etc. are currently all created in different places, somewhere between StreamTask and AbstractStreamOperator. It is hard to identify where/how resources are created, which component owns them, and how certain components depend on others (e.g. there is only a timer service manager if there is also a keyed state backend).
For the changes we plan for local state recovery, it would make sense to define a component that is responsible for the creation of state related resources and gives the possibility to interact in checkpointing and restoring with the checkpoint coordinator (owned by job manager) as well as local state storage (owned by task manager).