پس زمینه
در DolphinScheduler برای وظایف YARN مانند MapReduce (MR)، Spark، Flink و حتی وظایف Shell، رویکرد اولیه تعیین وضعیت کار بر اساس شناسه برنامه زمانی بود که یک کار YARN شناسایی شد. این بدان معنی است که به جای تکیه صرفاً بر وضعیت فرآیند مشتری، DolphinScheduler وضعیت YARN را نیز برای تصمیم گیری در مورد وضعیت وظیفه در نظر می گیرد.
بعدها، جامعه این روند را بازسازی کرد (که گامی در مسیر درست بود اما هنوز ناقص است) که منجر به مشکلاتی شد.
به عنوان مثال، در حالت Flink Stream Application، جایی که کلاینت جدا میشود، شل کلاینت بلافاصله خارج میشود و باعث میشود DolphinScheduler کار را به عنوان موفقیتآمیز علامتگذاری کند. با این حال، وظیفه در YARN همچنان در حال اجرا است و DolphinScheduler دیگر نمی تواند وضعیت آن را در YARN ردیابی کند.
بنابراین، چگونه میتوانیم ردیابی وضعیت وظایف YARN را در DolphinScheduler پیادهسازی کنیم؟
توجه: این مثال بر اساس نسخه 3.2.1 است.
نمودار رابطه وظایف کارگری
ابتدا، بیایید به اصل رابطه Worker Tasks در DolphinScheduler نگاه کنیم.
- AbstractTask: عمدتاً رابط چرخه حیات یک کار مانند init، handle و cancel را تعریف می کند.
- AbstractRemoteTask: روش handle را پیاده سازی می کند، الگوی طراحی روش الگو را نشان می دهد و سه روش رابط اصلی را استخراج می کند:…