xinghuayu007 opened a new pull request #5133:
URL: https://github.com/apache/incubator-doris/pull/5133


   ## Proposed changes
   
   When query uses **bucket join**, fuction 
`Coordinator#BucketShuffleJoinController#getExecHostPortForFragmentIDAndBucketSeq`
 is responseful for making sure each host have average bucket to scan. That 
means if there are 10 buckets to scan and 5 hosts, the strategy will 
distributed 2 buckets to each host. The algorithm is like this:
   
   a. use data structure `buckendIdToBucketCountMap` to represents how many 
buckets distributed to the backend;
   b. traverse every backend, find a backend which owns minimum buckets. We 
call it **mini_backend**;
   c. distribute the bucket to the  **mini_backend**; 
   d. update  `buckendIdToBucketCountMap` for **mini_backend**;
   
   When all bakends are all alive, the algorithm is available. But when 
mini_backend is not alive, it will chose a replica host as final host randomly 
and `buckendIdToBucketCountMap` is not updated. This will cause the bucket scan 
task not load balance.
   
   This patch optimize the algorithm. When the mini_backend is not alive, 
update `buckendIdToBucketCountMap`.
   
   **Related Issue**: #5132
   
   ## Types of changes
   
   What types of changes does your code introduce to Doris?
   _Put an `x` in the boxes that apply_
   
   - [x] Bugfix (non-breaking change which fixes an issue)
   - [] New feature (non-breaking change which adds functionality)
   - [] Breaking change (fix or feature that would cause existing functionality 
to not work as expected)
   - [] Documentation Update (if none of the other choices apply)
   - [] Code refactor (Modify the code structure, format the code, etc...)
   
   ## Checklist
   
   _Put an `x` in the boxes that apply. You can also fill these out after 
creating the PR. If you're unsure about any of them, don't hesitate to ask. 
We're here to help! This is simply a reminder of what we are going to look for 
before merging your code._
   
   - [x] I have create an issue on (Fix #ISSUE), and have described the 
bug/feature there in detail
   - [x] Compiling and unit tests pass locally with my changes
   - [x] I have added tests that prove my fix is effective or that my feature 
works
   - [x] If this change need a document change, I have updated the document
   - [x] Any dependent changes have been merged
   
   ## Further comments
   
   If this is a relatively large or complex change, kick off the discussion at 
d...@doris.apache.org by explaining why you chose the solution you did and what 
alternatives you considered, etc...
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to