2014-09-24 24 views
9

Từ documentation:Làm rõ về sửa chữa nodetool -pr

Sử dụng -pr sửa chữa nodetool (-partitioner-range) tùy chọn sửa chữa chỉ khoảng chính cho nút đó, các bản sao khác cho phạm vi đó vẫn phải thực hiện tính toán cây Merkle, gây ra sự nén chặt hợp lệ. Bởi vì tất cả các bản sao được nén cùng một lúc, tất cả các nút có thể chậm phản hồi cho phần dữ liệu đó.

Có lẽ không bao giờ có thời gian để tôi có thể chấp nhận tất cả các nút bị chậm cho một phần dữ liệu nhất định. Nhưng tôi tự hỏi: Tại sao nó làm điều đó (hoặc là có lẽ chỉ là một mixup với tùy chọn "-par" trong tài liệu ?!), khi nodetool repair có vẻ là smarter:

Theo mặc định, lệnh sửa chữa có một ảnh chụp nhanh của mỗi bản sao ngay lập tức và sau đó sửa chữa tuần tự mỗi bản sao từ các ảnh chụp nhanh. Ví dụ, nếu bạn có RF = 3 và A, B và C đại diện cho ba bản sao, lệnh này sẽ chụp nhanh mỗi bản sao ngay lập tức và sau đó sửa chữa liên tiếp mỗi bản sao từ ảnh chụp nhanh (A < -> B, A < -> C, B < -> C) thay vì sửa chữa A, B và C cùng một lúc. Điều này cho phép snitch động duy trì hiệu suất cho ứng dụng của bạn thông qua các bản sao khác, bởi vì ít nhất một bản sao trong ảnh chụp không được sửa chữa.

Tuy nhiên, datastax blog của addresses this issue:

giai đoạn đầu tiên này có thể chuyên sâu về io đĩa, tuy nhiên. Bạn có thể giảm thiểu điều này ở mức độ nào đó với điều chỉnh nén chặt (vì giai đoạn này là cái mà chúng ta gọi là nén chặt hợp lệ.) Đôi khi điều đó không đủ, và một số người cố gắng giảm thiểu điều này bằng cách sử dụng -pr (-partitioner-range) tùy chọn để sửa chữa nodetool, mà chỉ sửa chữa phạm vi chính cho nút đó. Thật không may, các bản sao khác cho phạm vi đó sẽ vẫn phải thực hiện tính toán cây Merkle, gây ra một sự nén chặt hợp lệ. Điều này có thể là một vấn đề, vì tất cả các bản sao sẽ làm cùng một lúc, có thể làm cho tất cả chúng chậm để phản hồi phần dữ liệu của bạn. May mắn thay, có cách xung quanh điều này bằng cách sử dụng tùy chọn -snapshot.

Đó có thể là tốt đẹp, nhưng trên thực tế, không có -snapshot lựa chọn cho nodetool repair (xem manpage, hoặc documentation) (đã tùy chọn này được gỡ bỏ ?!)

Vì vậy, tổng thể,

  • Tôi không thể sử dụng nodetool repair -pr, có vẻ như, bởi vì tôi luôn luôn cần ít nhất để giữ cho hệ thống đủ đáp ứng để đọc/ghi với tính nhất quán ONE, mà không có sự chậm trễ đáng kể. (Lưu ý: Chúng tôi chỉ có một trung tâm dữ liệu.) Hoặc tôi thiếu/hiểu nhầm điều gì đó?
  • Tại sao là nodetool repair thông minh, giữ một nút đáp ứng, trong khi nodetool repair -pr khiến tất cả các nút làm chậm một phần dữ liệu?
  • Tùy chọn -snapshot: Địa chỉ này đã bị xóa, không bao giờ được triển khai hoặc hiện tại có thể tự động hoạt động như thế, cũng như khi sử dụng nodetool repair -pr?
+2

Dường như an toàn để giả sử có một tùy chọn chụp nhanh tại thời điểm blog được viết (tháng 7 năm 2013) vì tài liệu Cassandra 1.2 nói về tùy chọn sửa chữa nodetool -snapshot: http://www.datastax.com/documentation/cassandra/ 1.2/cassandra/operation/ops_repair_nodes_c.html. – catpaws

+1

Tài liệu này có một số thông tin sử dụng nodetool (tùy chọn -pr không được khuyến nghị) và bao gồm các ví dụ về cách sử dụng tùy chọn song song (par). http://www.datastax.com/documentation/cassandra/2.1/cassandra/tools/toolsRepair.html?scroll=toolsRepair__toolsRepairTypes – catpaws

+0

@catpaws: Cảm ơn, cả nhận xét của bạn đều chứa một số thông tin rất có giá trị (thực tế là không có trong 2.0 tài liệu)! –

Trả lời

5

Blog dưới đây đề cập đến những vấn đề này:

http://www.datastax.com/dev/blog/repair-in-cassandra

Một đơn giản nodetool repair sẽ không chỉ tung ra một sửa chữa vào nút riêng của mình mà còn tất cả các nút giữ bản sao nếu dãy của nó. Trong khi điều này là ok, nó là rất tốn kém và thường không phải là một hoạt động bạn sẽ thực hiện trên một hệ thống sản xuất bận rộn trong thời gian cao điểm.

Do đó nodetool repair -pr sẽ thực hiện sửa chữa các phạm vi chính trên nút đó. Bạn sẽ cần phải chạy điều này trên mọi nút của cụm như blog nói. Những khách hàng có hệ thống sản xuất lớn thường sẽ sử dụng hệ thống này theo kiểu cuộn trên cụm của họ.

Lưu ý khác Datastax OpsCenter cung cấp repair service chạy sửa chữa nhỏ hơn nhiều lần, mặc dù bạn luôn luôn sửa chữa nó luôn chạy ở chế độ nền ở mức tài nguyên thấp hơn.

Đối với các ảnh chụp nhanh, chạy một sửa chữa thường xuyên sẽ gọi một bản chụp như bạn đã nêu, bạn cũng có thể gọi một ảnh chụp cho mình sử dụng nodetool snapshot

Hope this helps!

Các vấn đề liên quan