Chương III :Khái quát về Apache Storm
3.3. Kiến trúc Cluster
Hình 17. Kiến trúc Cluster
• Nimbus (Master node)
Nimbus là thành phần trung tâm của Apache Storm. Nimbus chịu trách nhiệm
phân phối dữ liệu giữa tất cả các worker node, gán nhiệm vụ cho các node đó và theo dõi lỗi. Do Storm thiếu khả năng quản lý trạng thái, Nimbus phải dựa vào ZooKeeper để giám sát các thông điệp được gửi bởi các worker node trong khi xử lý các nhiệm vụ. Tất cả các worker node cập nhật trạng thái nhiệm vụ của họ trong ZooKeeper service cho Nimbus để xem và giám sát.
• Supervisor (Worker node)
Supervisor chịu trách nhiệm nhận công việc được giao cho một máy từ Nimbus.
Một supervisor có nhiều worker processes và nó điều chỉnh các worker processes để hoàn thành các nhiệm vụ được chỉ định bởi nimbus. Mỗi worker processes này thực hiện một tập hợp con của cấu trúc liên kết hoàn chỉnh.
3.3.2. Các thành phần khác
Hình 18. Kiến trúc của Storm
• Worker process sẽ thực thi các task liên quan được xác định trong topology. Một
worker process sẽ không tự thực thi tác vụ. Thay vào đó, nó tạo executors và yêu cầu chúng thực hiện một tác vụ cụ thể. Một worker process có nhiều executors.
• Executor được tạo ra bởi Worker process, thực hiện 1 hoặc nhiều task nhưng chỉ
cho một spout hoặc bolt cụ thể.
• Apache ZooKeeper là một dịch vụ được sử dụng bởi một cluster để điều phối
chúng và duy trì việc chia sẻ dữ liệu với các kỹ thuật đồng bộ hóa mạnh mẽ.
Nimbus là khơng trạng thái, do đó, nó phụ thuộc vào ZooKeeper để theo dõi trạng thái nút làm việc. ZooKeeper giúp supervisor tương tác với nimbus. Nó có trách nhiệm duy trì trạng thái của nimbus và Supervisor.
Storm khơng hồn tồn là khơng có trạng thái. Nó lưu trữ trạng thái của nó trong
Apache ZooKeeper. Dựa vào Apache ZooKeeper, một nimbus bị hỏng có thể được khởi động lại và thực hiện để làm việc. Thông thường, các công cụ giám sát dịch vụ như monit sẽ giám sát Nimbus và khởi động lại nó nếu có bất kỳ lỗi nào.
3.3.3. Luồng thực hiện
Một cluster trong Storm thường có một nimbus và một hoặc nhiều supervisor. Một thành phần quan trọng khác là Apache ZooKeeper, sẽ được sử dụng để điều phối giữa nimbus và các supervisor.
• Ban đầu, nimbus chờ đợi "Storm topology" được gửi đến.
• Sau đó, nó sẽ xử lý topology và thu thập tất cả nhiệm vụ sẽ thực hiện và thứ tự mà tác vụ được thực hiện.
• Tại một khoảng thời gian cụ thể, tất cả supervisor phải gửi heartbeat cho nimbus để thông báo là nó cịn hoạt động. Nếu supervisor khơng hoạt động (khơng gửi heartbeat cho Nimbus) thì Nimbus sẽ phân cơng nhiệm vụ cho supervisor khác. Khi hồn thành cơng việc, supervisor sẽ đợi nhiệm vụ mới đến.
• Nếu nimbus dừng hoạt động đột ngột thì các supervisor vẫn làm việc bình thường
với các nhiệm vụ đã được giao mà khơng gặp phải vấn đề gì. Trong khi chờ đợi, Nimbus bị hỏng sẽ được khởi động lại tự động bởi các cơng cụ giám sát dịch vụ
(monitoring tools).
• Các nimbus khởi động lại sẽ tiếp tục cơng việc tại thời điểm nó dừng lại. Tương tự, supervisor bị hỏng cũng có thể được khởi động lại tự động. Vì cả nimbus và supervisor có thể được tự động khởi động lại và tiếp tục làm việc như trước nên Storm được đảm bảo xử lý tất cả nhiệm vụ ít nhất một lần.
• Khi "Storm topology" được xử lý xong, Nimbus sẽ tiếp tục đợi các topology khác đến, các Supervisor tiếp tục đợi công việc được phân công từ Nimbus.