#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. 6. Modify the Unit test frame of FE so that we can created multi backends with different mocked IP in unit test. This help us to easily test some distributed cases like query, tablet repair and balance The document will be added in another PR. Also fix a bug described in #6194
Apache Doris (incubating)
Doris is an MPP-based interactive SQL data warehousing for reporting and analysis. Its original name was Palo, developed in Baidu. After donated to Apache Software Foundation, it was renamed Doris.
Official website: https://doris.apache.org/
1. License
2. Technology
Doris mainly integrates the technology of Google Mesa and Apache Impala, and it is based on a column-oriented storage engine and can communicate by MySQL client.
3. User cases
Doris not only provides high concurrent low latency point query performance, but also provides high throughput queries of ad-hoc analysis.
Doris not only provides batch data loading, but also provides near real-time mini-batch data loading.
Doris also provides high availability, reliability, fault tolerance, and scalability.
The simplicity (of developing, deploying and using) and meeting many data serving requirements in single system are the main features of Doris (refer to Overview).
4. Compile and install
See Compilation for details.
5. License Notice
Some of the third-party dependencies' license are not compatible with Apache 2.0 License. So you may have to disable
some features of Doris to be complied with Apache 2.0 License. Details can be found in thirdparty/LICENSE.txt
6. Reporting Issues
If you find any bugs, please file a GitHub issue.
7. Contact Us
Mailing lists
| Name | Scope | |||
|---|---|---|---|---|
| dev@doris.apache.org | Development-related discussions | Subscribe | Unsubscribe | Archives |
8. Links
- Doris official site - http://doris.incubator.apache.org
- User Manual (GitHub Wiki) - https://github.com/apache/incubator-doris/wiki
- Developer Mailing list - dev@doris.apache.org. Mail to dev-subscribe@doris.apache.org, follow the reply to subscribe the mail list.
- Gitter channel - https://gitter.im/apache-doris/Lobby - Online chat room with Doris developers.
- Overview - https://github.com/apache/incubator-doris/wiki/Doris-Overview
- Compile and install - https://github.com/apache/incubator-doris/wiki/Doris-Install
- Getting start - https://github.com/apache/incubator-doris/wiki/Getting-start
- Deploy and Upgrade - https://github.com/apache/incubator-doris/wiki/Doris-Deploy-%26-Upgrade
- User Manual - https://github.com/apache/incubator-doris/wiki/Doris-Create%2C-Load-and-Delete
- FAQs - https://github.com/apache/incubator-doris/wiki/Doris-FAQ