2013-06-23 40 views
41

Tôi đang cố gắng tìm hiểu twitter bão bằng cách làm theo các bài viết tuyệt vời "Understanding the parallelism of a Storm topology"các "nhiệm vụ" trong cơn bão song song

Tuy nhiên tôi là một chút nhầm lẫn bởi khái niệm "nhiệm vụ" là gì. Là một nhiệm vụ chạy một thể hiện của thành phần (spout hoặc bolt)? Một người thực hiện có nhiều nhiệm vụ thực sự nói rằng cùng một thành phần được thực thi nhiều lần bởi người thực thi, tôi có đúng không?

Hơn nữa trong một cảm giác song song nói chung, Storm sẽ đẻ trứng một sợi chuyên dụng (thi hành) cho một vòi hoặc bu lông, nhưng những gì là đóng góp vào sự xử lý song song bởi một chấp hành viên (chủ đề) có nhiều nhiệm vụ? Tôi nghĩ rằng có nhiều nhiệm vụ trong một chủ đề, vì một chuỗi thực thi tuần tự, chỉ làm cho luồng là một loại tài nguyên "được lưu vào bộ nhớ cache", giúp tránh tạo luồng mới cho tác vụ tiếp theo. Tôi có đúng không?

tôi có thể xóa những nhầm lẫn bởi bản thân mình sau khi uống nhiều thời gian để điều tra, nhưng bạn biết đấy, chúng tôi cả tình yêu stackoverflow ;-)

Cảm ơn trước.

+1

Tôi đã đọc tài liệu ba lần để xóa nhầm lẫn tương tự và bạn đã giải quyết được sự cố của mình. – pavan

Trả lời

62

Tuyên bố từ chối trách nhiệm: Tôi đã viết the article bạn đã tham chiếu trong câu hỏi của mình ở trên.

Tuy nhiên tôi hơi bối rối bởi khái niệm "nhiệm vụ". Là một nhiệm vụ chạy một thể hiện của thành phần (spout hoặc bolt)? Một người thực hiện có nhiều nhiệm vụ thực sự nói rằng cùng một thành phần được thực thi nhiều lần bởi người thực thi, tôi có đúng không?

Có, và có.

Hơn nữa trong một cảm giác song song nói chung, Storm sẽ đẻ trứng một sợi chuyên dụng (thi hành) cho một vòi hoặc bu lông, nhưng những gì là đóng góp vào sự xử lý song song bởi một chấp hành viên (thread) có nhiều nhiệm vụ?

Chạy nhiều tác vụ cho mỗi người thi hành không làm tăng mức độ song song - người thực thi luôn có một chủ đề mà nó sử dụng cho tất cả nhiệm vụ của mình, nghĩa là nhiệm vụ chạy serially trên một người thi hành.

Như tôi đã viết trong bài viết xin lưu ý rằng:

  • Số lượng bài thi hành di chúc có thể được thay đổi sau khi topo đã được bắt đầu (xem storm rebalance lệnh).
  • Số lượng nhiệm vụ của cấu trúc liên kết là tĩnh.

Và theo định nghĩa, có bất biến là #executors <= #tasks. Vì vậy, một lý do để có 2+ nhiệm vụ cho mỗi chủ đề thi hành là mang lại cho bạn sự linh hoạt để mở rộng/mở rộng cấu trúc liên kết thông qua lệnh storm rebalance trong tương lai mà không cần dùng cấu trúc liên kết ngoại tuyến. Ví dụ, hãy tưởng tượng bạn bắt đầu với một cụm Storm gồm 15 máy nhưng đã biết rằng tuần tới sẽ có thêm 10 hộp nữa. Ở đây bạn có thể chọn để chạy cấu trúc liên kết ở mức song song dự đoán của 25 máy đã có trên 15 hộp ban đầu (tất nhiên là chậm hơn 25 hộp). Khi thêm 10 hộp được tích hợp, bạn có thể sau đó storm rebalance cấu trúc liên kết để tận dụng toàn bộ 25 hộp mà không có thời gian chết.

Một lý do khác để chạy 2+ tác vụ trên mỗi người thi hành là dành cho thử nghiệm (chủ yếu là chức năng). Ví dụ, nếu máy dev hoặc máy chủ CI của bạn chỉ đủ mạnh để chạy, nói, 2 người thi hành cùng với tất cả các thứ khác đang chạy trên máy, bạn vẫn có thể chạy 30 tác vụ (ở đây: 15 cho mỗi người thi hành) để xem mã nhóm Storm tùy chỉnh của bạn hoạt động như mong đợi.

Trong thực tế, chúng tôi thường chạy 1 nhiệm vụ cho mỗi người thi hành.

PS: Lưu ý rằng Storm sẽ thực sự sinh ra a few more threads behind the scenes. Ví dụ, mỗi người thực hiện có "gửi chủ đề" riêng của nó chịu trách nhiệm xử lý các bộ dữ liệu gửi đi. Cũng có các chủ đề nền "cấp hệ thống", ví dụ: acking tuples chạy dọc theo "của bạn" chủ đề. IIRC giao diện người dùng Storm đếm các chủ đề acking ngoài chủ đề "của bạn".

+1

Cảm ơn bạn Michael. Nó rất rõ ràng bây giờ. –

+0

@miguno Tôi có một câu hỏi, giả sử rằng ban đầu bạn đã tạo ra một tác vụ (như hoạt động theo nhóm trên một bộ dữ liệu được chia theo số lượng) làm cách nào để tôi có thể mở rộng theo chiều dọc? Từ sự hiểu biết của tôi, mỗi nhân viên về cơ bản là một "gương" của cấu trúc liên kết nhưng làm thế nào tôi có thể mở rộng nó theo chiều dọc để phân phối tải trên tất cả các hộp cụm. Trong trường hợp này, tôi muốn thay đổi số lượng bu lông thực hiện hoạt động theo nhóm từ 1 đến 2 (hoặc nhiều hơn). Đầu vào của bạn để làm rõ điều này sẽ là tuyệt vời. – jtimz

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