[SPARK-27413][SS] keep the same epoch pace between driver and executor.#24323
[SPARK-27413][SS] keep the same epoch pace between driver and executor.#24323uncleGen wants to merge 6 commits intoapache:masterfrom
Conversation
|
cc @jose-torres |
|
Test build #104427 has finished for PR 24323 at commit
|
|
I agree it would reduce unused computation. On the other hand I think a better approach would be instead of pull mechanism sending push notifications to executors. It would end-up in less resource waste. |
|
test this please |
|
Test build #104441 has started for PR 24323 at commit |
|
@gaborgsomogyi Agree with you, and let us think about code refactor later, ok? |
|
retest this please. |
|
Test build #104463 has finished for PR 24323 at commit
|
|
Spark can be configured such a way to reach this without code modification. Refactoring is changing the code without behavior modification. I mean here and now a different approach can be used. |
|
@gaborgsomogyi Hmm, I misunderstood what you meant. From my point of view, using push mechanism doesn't really help much but makes this code more complex. The main concern of PR is to avoid producing unexpected empty epochs. Both pulling and pushing are able to achieve it. |
|
I'm not sure I understand the motivation here. It's true that setting the poll interval larger than the generation interval will generate a bunch of empty epochs, but why does that imply that we shouldn't allow it to be configured at all? (And even if we shouldn't, why is "equal to the epoch duration" the right value?) |
|
@jose-torres Thanks for you reply
You have got the motivation. As Mentioned above, the main concern of PR is to avoid produce empty epoch.
We can indeed allow it to be configured. But firstly, IMO, it is not a good idea to expose this config to users and let them to set it carefully. Secondly, the
Hmm... After think again and deeply, "equal to the epoch duration" is not a very good choice. In some corner cases, executor will pull epoch from driver later than "epoch duration". So as @gaborgsomogyi mentioned, "push notifications to executors" may be a better approach. To reiterate, the main concern of PR is to avoid produce empty epoch and late epoch. Do you have any doubt about this motivation? Any suggestion is appreciated. |
|
Send epoch update to executors instead of pull mechanism. |
|
Test build #104822 has finished for PR 24323 at commit
|
|
Test build #104821 has finished for PR 24323 at commit
|
|
retest this please |
|
Test build #104848 has finished for PR 24323 at commit
|
|
Test build #104859 has finished for PR 24323 at commit
|
|
retest this please |
|
Test build #104866 has finished for PR 24323 at commit
|
|
cc @tdas |
|
Test build #105154 has finished for PR 24323 at commit
|
|
Test build #105195 has finished for PR 24323 at commit
|
|
Test build #105196 has finished for PR 24323 at commit
|
|
Test build #105200 has finished for PR 24323 at commit
|
|
retest this please |
|
Test build #105242 has finished for PR 24323 at commit
|
|
We're closing this PR because it hasn't been updated in a while. If you'd like to revive this PR, please reopen it! |
What changes were proposed in this pull request?
The pace of epoch generation in driver and epoch pulling in executor is different. It will result in many empty epochs for partition if the epoch pulling interval is larger than epoch generation.
How was this patch tested?
update existing unit tests.