HBase balancer

- 5 mins

Trong database phân tán, load balancer được hiểu là một module đảm bảo tải được phân tán đều vào các node theo cấu hình tài nguyên được sử dụng đã config trước. Hình dưới minh họa load balancer, các regione (shard) trong các bảng có tải không đều trước khi cân bằng và tải đã được chia đều sau khi cân bằng (số request nhận được mỗi node region bằng nhau vì số region trong mỗi node là giống nhau).

Tùy theo kiến trúc data, tính năng load balancer có thể khác nhau, ví dụ load balancer có thể là layer stateless đặt trước cluster để điều phối traffic đến các node; hoặc mỗi database server tự xử lý điều phối request.

Trong HBase hỗ trợ một số loại load balancer được cài đặt sẵn như FavoredStochasticBalancer, SimpleLoadBalancer, StochasticLoadBalancer, RSGroupBasedLoadBalancer,… Mỗi loại load balancer đều cài đặt dựa trên StochasticLoadBalancer và override các tính năng để đáp ứng yêu cầu riêng

HBase background

Kiến trúc của HBase bao gồm một số khái niệm chính:

Hmaster là thành phần trung tâm của hbase, có nhiệm vụ:

Region server chịu trách nhiệm xử lý các request từ client như put, get, update, delete,… Mỗi region server chứa một tập các region, các region có thể thay đổi động khi thêm region server vào cluster, xóa region server trong cluster,…

Load balancer: HBase hỗ trợ auto sharding, auto balanced horizontal theo key-value. Load balancer chịu trách nhiệm giữ cho cluster hoạt động ổn định và tối ưu tài nguyên sử dụng khi thay đổi dữ liệu.

HBase balancer goals

Load balancer khi triển khai trong một db phân tán như hbase đảm bảo tài nguyên ở các node (ví dụ region server) được sử dụng hợp lí bằng cách phân phối đều tải trên các node. Lượng request đến các region server có thể điều chỉnh theo các yêu tố:

Region assignment có trách nhiệm gán region vào các region server, xảy ra khi tạo/xóa bằng, chạy balance, split/merge region,… theo plan của balancer đã cung cấp

Balancer architecture

Stochastic Load Balancer là kiểu balance được cài đặt sẵn trong hbase, được cho là có hiệu năng tốt, có khả năng mở rộng. Kiểu cấu hình này chạy mô phỏng trạng thái hiện tại của cluster, input và output mong muốn. Trong suốt quá trình mô phỏng:

Cost function: cost function của balancer để tính toán chi phí (giá trị nằm giữa 0 và 1), 0 là cluster đang ở trạng thái cân bằng tốt nhất, 1 là trạng thái mất câng bằng.

Cost function trong Hbase được sử dụng để đánh giá mức độ cân bằng theo các tiêu chí khác nhau như:

Các cost function có sẵn trong hbase:

Cost function có thể tùy chỉnh để điều chỉnh cân bằng dữ liệu theo nhu cầu.

Candidate generator: là một hàm cân bằng khi được gọi sẽ đưa ra một trong 2 action sau để tối ưu cân bằng trong cluster:

Mục đích của candidate generator là cải thiện tính cân bằng trong cluster theo một tiêu chí nhất định như locality, load balancing. Hbase cung cấp một số candidate generator:

Candidate generator có thể tùy chỉnh để điều chỉnh cân bằng data theo nhu cầu riêng.

Balancer performance

https://blog.flipkart.tech/architecture-of-apache-hbase-balancer-337134a3895d

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora