How Range-aware replica placement in Kudu works
Learn how the range-aware replica placement algorithm works during initial tablet replica placement in Kudu tablet servers.
Kudu places new tablet replicas using an algorithm which is both range and table aware. This algorithm helps to avoid hotspotting that occurs if many replicas from the same range are placed on the same few tablet servers. Hotspotting causes tablet servers to be overwhelmed with write or read requests and can result in increased latency for these requests. To avoid hotspotting, this algorithm avoids targeting the same set of tablet servers for a set of replicas created in parallel. Rather, it spreads the replicas across multiple tablet servers.
This algorithm is independent of the location. Replica placement can be broken down into two steps; location selection and tablet server placement.
- It ranks the tablet servers (TS) according to number of replicas per corresponding range
(Range X in the following image).
- It places the replica on the tablet server with the least amount of replicas from the corresponding range.
If two tablet servers have the same number of replicas from a range, the number of replicas from the table the range belongs to, is used as a tiebreaker. If the tablet servers contain the same number of replicas from the table as well, the number of total replicas hosted by the tablet servers is used as a final tiebreaker.
When determining the number of replicas of a range or table per tablet server, the algorithm uses two separate metrics. The first metric is the number of existing live replicas from the range or table. The second metric is the number of pending replicas from the range or table being placed. This metric is incremented when a pending replica is placed, but eventually the value decays to zero.
The power of two choices algorithm, used earlier, was quick and efficient but did not prevent hotspotting.