You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2021/07/12 03:18:39 UTC

[GitHub] [incubator-doris] morningman opened a new pull request #6203: [Feature][ResourceTag] Support Resource Tag

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


   ## Proposed changes
   
   Step 1 and 2 of #5902 
   This CL mainly changes:
   
   1. Support setting tags for BE nodes:
   
       ```
       alter system add backend "1272:9050, 1212:9050" properties("tag.location": "zoneA");
       alter system modify backend "1272:9050, 1212:9050" set ("tag.location": "zoneB");
       ```
       And for compatibility, all BE nodes will be set a "default" tag when upgrading: `"tag.location": "default"`.
   
   2. Create a new class `ReplicaAllocation` to replace the previous `replication_num`.
   
       `ReplicaAllocation` represents the allocation of the replicas of a tablet. It contains a map from 
       Tag to number of replicas.
       For example, if user set a table's replication num to 3, it will be converted to a ReplicaAllocation
       like: `"tag.location.default" : "3"`, which means the tablet will have 3 replicas and all of them will be
       allocated in BE nodes with tag "default";
   
   3. Support create table with replication allocation:
   
       ```
       CREATE TABLE example_db.table_hash
       (
       k1 TINYINT
       )
       DISTRIBUTED BY HASH(k1) BUCKETS 32
       PROPERTIES (
           "replication_allocation"="tag.location.zone1:1, tag.location.zone2:2"
       );
       ```
       
       Also support set replica allocation for dynamic tables, and modify replica allocation at runtime.
   
       For compatibility, user can still set "replication_num" = "3", and it will be automatically converted to:
       ` "replication_allocation"="tag.location.default:3"`
   
   4. Support tablet repair and balance based on Tag
   
       1. For tablets of non-colocate table, most of the logic is the same as before,
          but when selecting the destination node for clone, the tag of the node will be considered.
          If the required tag does not exist, it cannot be repaired.
          Similarly, under the condition of ensuring that the replicas are complete, the tablet will be
          reallocated according to the tag or the replicas will be balanced.
   
          Balancing is performed separately within each resource group.
   
       2. For tablets of colocate table, the backends sequence of buckets will be splitted by tag.
          For example, if replica allocation is "tag.location.zone1:1, tag.location.zone2:2",
   
          And zone1 has 2 BE: A, B; zone2 has 3 BE: C, D, F
   
          there will be 2 backend sequences: one is for zone1, and the other is for zone2.
          And one posible seqeunces will be:
   
   
          zone1: [A]   [B]   [A]   [B]
          zone2: [C, D][D, F][F, C][C, D]
   
   5. Support setting tags for user and restrict execution node with tags:
   
   
       ```
       set property for 'cmy' 'resource_tags.location' : 'zone1, zone2';
       ```
   
       After setting, the user 'cmy' can only query data stored on backends with tag zone1 and zone2,
       And query can only be executed on backends with tag zone1 and zone2
   
   
       For compatibility, after upgrading, the property `resource_tags.location` will be empty,
       so that user can still query data stored on any backends.
   
   The document will be added in another PR.
   
   ## Types of changes
   
   What types of changes does your code introduce to Doris?
   _Put an `x` in the boxes that apply_
   
   - [ ] 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...)
   - [ ] Optimization. Including functional usability improvements and performance improvements.
   - [ ] Dependency. Such as changes related to third-party components.
   - [ ] Other.
   
   ## 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 created an issue on (Fix #5902) and described the bug/feature there in detail
   - [ ] Compiling and unit tests pass locally with my changes
   - [ ] I have added tests that prove my fix is effective or that my feature works
   - [ ] If these changes need document changes, I have updated the document
   - [ ] Any dependent changes have been merged
   
   ## Further comments
   
   If this is a relatively large or complex change, kick off the discussion at dev@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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] morningman commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
morningman commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-960550133


   > Is there a way to check a BE's tags? @morningman
   
   `show backends`


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] tinkerrrr commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
tinkerrrr commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-960555770


   > > Is there a way to check a BE's tags? @morningman
   > 
   > `show backends`
   
   Oh I see. Another small question, if `user1` is restricted to only use nodes in the `group_a` resource group for data query, what's the behavior when he create table without setting `replication_allocation`, is there any replica stored in BEs whose tag is not `group_a`?


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] github-actions[bot] commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-908826895






-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] tinkerrrr commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
tinkerrrr commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-960549799


   Is there a way to check a BE's tags? @morningman 


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] github-actions[bot] commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-912896338


   PR approved by at least one committer and no changes requested.


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] github-actions[bot] commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-908826895






-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] morningman merged pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
morningman merged pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203


   


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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


[GitHub] [incubator-doris] morningman commented on pull request #6203: [Feature][ResourceTag] Support Resource Tag

Posted by GitBox <gi...@apache.org>.
morningman commented on pull request #6203:
URL: https://github.com/apache/incubator-doris/pull/6203#issuecomment-960607373


   > > > Is there a way to check a BE's tags? @morningman
   > > 
   > > 
   > > `show backends`
   > 
   > Oh I see. Another small question, if `user1` is restricted to only use nodes in the `group_a` resource group for data query, what's the behavior when he create table without setting `replication_allocation`, is there any replica stored in BEs whose tag is not `group_a`?
   
   Yes. It will. Currently, the user property `'resource_tags.location` will only be checked when querying.
   So when creating table, replica will be allocated on BE which user specified.


-- 
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.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

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



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