Proactive

از OCCC Wiki
پرش به ناوبری پرش به جستجو

مراحل آموزش :
1. گام نخست
- ایجاد یک فعالیت جدید


- ثبت کردن فعالیت
- نظارت بر اجرا و تجسم نتایج
2. مدیریت منابع ( بخش اول )
- نصب محلی ( Local Setup )
- نصب کلاستر
3. مدیریت منابع ( بخش دوم )
- نظارت و مدیرت (Monitoring and Administration )
4. جریان کاری پیشرفته (بخش اول )
- Upload the Image File to User Space
5. جریان کاری پیشرفته (بخش دوم )
- Create the Image Processing Workflow


1. گام نخست :

گردش کار توسط زمانبند به عنوان شغل های ساخته شده از وظایف اجرا شده است.کار کوچکترین نهاد schedulable است، می توان آن را یک اسکریپت، اجرایی مادری و یا یک کلاس جاوا دانست .


در این آموزش ما یک کار ساده ایجاد کرده ، آن را به scheduler و monitor بر اجرای آن. ما برای هر مرحله، نشان روش های مختلف را اجرا کند، با استفاده از ابزارهای مختلف از جمله Workflow Studio ، REST interface و یا command line .
- ایجاد یک فعالیت جدید
ما با یک مثال کار ساده شروع می کنیم که کلمه " Hello World" را چاپ کند و دومین کار ساده ای که انجام می دهیم بر می گردونیم Hello و World! و کار سوم چاپ می کنیم نتایج وظیفه های قبلی رو چاپ می کنیم . در اینجا معرفی می کنیم مفهوم وابستگی بین وظایف، وظیفه "سلام جهان" تنها پس از انجام وظایف 'سلام' و 'جهانی' به پایان رسید اجرا شود.
توجه داشته باشید که با توجه به ماهیت موازی سازی ProActive حکم اقدام Hello' و 'World قابل پیش بینی نیست و این کار می تواند خرجی کاملا عکس داشته باشد . حال این مراحلی که توضیح داده شد به وسیله ی Studio و کد XML به صوت زیر است :
<?xml version="1.0" encoding="UTF-8"?> <job xmlns="urn:proactive:jobdescriptor:dev" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="urn:proactive:jobdescriptor:dev http://www.activeeon.com/public_content/schemas/proactive/jobdescriptor/dev/schedulerjob.xsd"
  name="Hello_World">
 <description>A simple Hello World job</description>
 <taskFlow>
   <task name="Hello">
     <scriptExecutable>
       <script>
         
           result = "Hello";
         
       </script>
     </scriptExecutable>
   </task>
   <task name="World">
     <scriptExecutable>
       <script>
         
           result = "World";
         
       </script>
     </scriptExecutable>
   </task>
   <task name="HelloWorld">
     <depends>
       <task ref="Hello"/>
       <task ref="World"/>
     </depends>
     <scriptExecutable>
       <script>
         
           print(results[0].value() + " " + results[1].value());
         
       </script>
     </scriptExecutable>
   </task>
 </taskFlow>

</job>


مراحل کار در ProActive studio online :
- نام شغل مورد نظر را در پنل سمت چپ نوشته
- ساخت task جدید با کشیدن از task icon
- روی task کلید کرده و اسم task را نوشته
- کد پرینت hello world را نوشته
- یک task دیگه نوشته و کلمه world را چاپ کرده .
- یک task نهایی ساخته و نتیجه دو task قبلی را چاپ کند .
- و حال با کشیدن فلش رابطه بین این task ها را مشخص کرده .
1.2 ثبت فعالیت  :
اون job که در مرحله قبل نوشته بودیم در اختیار داریم و به ادرس http://try.activeeon.com/scheduler که همان scheduler مدیرت است . فایل XML فایل Hello world که ساخته بودیم را با زدن کلید submit job به برنامه داده و مشاهده می کنیم که کار بعد از گذشت چند ثانیه انجام می شود .
1.3 نظارت بر اجرا و تجسم نتایج :
اکنون با انتخاب job که submit کرده ، می توانید اطلاعات ریز در مورد job ، the output ، the execution timesو ... را می توانید ببینید .

2. مدیریت منابع ( بخش اول )
در این قسمت که عملا Resource Manager( RM) نام دارد کمک می کند به مدیرت و نظارت بر گره های worker همچنین به ProActive nods هم شناخته شده ، جاوا فرایند ماشین مجازی است که می تواند بر روی انواع منابع محاسباتی مانند desktop computers, computer clusters or clouds این گره worker توسط زمانبندی فعال استفاده می شود برای اجرای وظایف شغلی همچنین ممکن است برای راه اندازی چند گره فعال در میزبان و این اجازه را خواهد داد تا همزمان چند برنامه به صورت موازی روی host پیاده سازی شود .این آموزش نشان می دهد که چگونه ProActive nods ها به RM اضافه کنیم و همچنین نظارت متقابل بر روی انها داشته باشیم .
حال برای پیاده سازی از یک راه حل حل شده برای آموزش استفاده می کنیم که به صورت پیش فرض از زمانبندی پیکر بندی شده با 4 گره worker به طوری که فورا شروع به کار کنند . این worker nod محلی هستند و روی host system به عنوان مدیرت زمان و منابع استفاده می شود .
2.1 : نصب محلی ( Local Setup ) :
قبل از این که شما بخواهید اضافه کنید local ProActiv nodes به RM شما نیاز دارید به ایجاد یک فایل گواهی نامه این یک راه امن برای تایید هویت و اجازه با مدیریت منابع را فراهم می کند . برای ایجاد یک credential file :

از ادرس (https://try.activeeon.com/rm/ ) به وسیله اکانت خود وارد شوید .


در portal tab روی creat credentials کلیک کرده . و دوباره لاگین کنید و دکمه create را بزنید .
credential file به صورت اتوماتیک شروع به دانلود شده ، شما به این فایل برای ادامه کار نیاز دارید .
حال برای ایجاد و اضافه کردن local ProActive Nodes مراحل زیر را طی می کنیم :
دوباره از ادرس داده شده رفته و روی دکمه Add nodes کلیک کرده ، در باکس Create Node Source ، LocaInfrastructure را به عنوان infrastructure انتخاب کرده و StaticPolicy را به عنوان policy لنتخاب کرده .
برای کانفیگ کردن جدول حال credential file ذخیره شده در قسمت قبلی را در اینجا ضمیمه کرده .
nodeTimeout را باید پیش فرض روی 6000 باشد.
و حالت maximum تعداد گره در maxNodes انتخاب کرده .
و برای Policy همان ستینگ پیش فرض را می گذاریم .
و حال می توانید دو local ProActive Node ملاحظه کنید .
2.2. Cluster setup  :
اضافه کردن ماشین هایی از cluster های دیگر به RM به طور معمول شامل باز کردن نرم افزار بر روی تمام کسانی که از ماشین های میزبان استفاده می کنند ، می شود سپس ما نیاز داریم که برای تعیین روش برای مدیریت منابع می توانید استفاده کنید برای دسترسی به ماشین آلات میزبان در خوشه برای راه اندازی شبح فعال گره.
مورد شایع ترین در عمل دسترسی SSH حتی اگر مدیریت منابع می تواند از روش های دیگر استفاده کنید. (مشاهده لیست زیرساخت های پشتیبانی در ایجاد گره منابع BOX شما زمانی که شما در اضافه کردن تب گره را کلیک کنید.) شما می توانید از RM Web Interface برای اضافه کردن کرد برای ریموت ProActive Nodes to the Resource Manager دقیقا مثل اونی که شما در قسمت قبلی دیدید شما فقط نیاز دارید به ایجاد create a credential file .
حال برای این کار به تنظیمات زیر نیاز داریم :
- دوباره به ادرس (https://try.activeeon.com/rm/ ) رفته .
- بر روی Add Nodes کلیک کرده .
- در باکس Create Node Source SSHInfrastructure ، و StaticPolicy را تنظیم کرده .
- در باکس hostList فایل دانلود شده را اضافه کرده .
- در rmCredentialPath فایل credential در در مرحله قبل دانلود شد اضافه کرده .
- Ok را کلیک کرده .
در نهایت شما می توانید ProActive Nodes را از cluster هایی که اضافه کردید در RM ببینید .

3. مدیریت منابع ( بخش دوم )
در این بخش به ادامه بحث بخش قبل می پردازیم و عملا تکمیل کننده بخش قبل است .
3.1 : نظارت و مدیرت (Monitoring and Administration )
واسط گرافیکی موجود بهترین راه و راهترین راه برای Resource Manager است . در ادامه شما می توانید لیستی از node های محلی و غیر محلی را ببینید .

4. جریان کاری پیشرفته (بخش اول )
همان طور که در اموز های ابتدایی گفته شده است یک job هست یک workflow of tasks گسترش داده شده است . workflow فراهم می کنند توان جواب دادن و جا به جا کردن task و انتقال اطلاعات و تبدیل اطالات بین task ها ، را دارند .
برای این اموزش ما برای اولین بار یک تصویر به فضای کاربردی آپلود و سپس با استفاده از نرمافزار برای ایجاد یک گردش کار با تکرار کار است که این تصویر با استفاده داز یک الگوریتم تشخیص لبه در پردازش موازی می باشد .
4.1 : Upload the Image File to User Space :
برای مثال از نرم افزار AjaXplorer Web Interface برای این ازمایش استفاده می کنیم ( با استفاده از عکس کره مریخ که قبلا دانلود شده است )
- در ابتدا به ادرس زیر رفته (https://try.activeeon.com/data/ ) و وارد می شویم .
- از نوار ابزار Workspaces بالا استفاده می کنیم .
- زیر مجموعه کلید Send ، From computer. را انتخواب کرده .
- در باکس send ، اون عکسی که در کامپیوتر است (عکس کره مریخ ) را انتخاب کرده تا آپلود شو و در پایان این بخش شما توانستید فایل را به در فضای خودتان صورت صحیح ذخیره کنید .
4.2 . Create the Image Processing Workflow :
ما می خواهیم به در خواست الگوریتم عاقل لبه یاب به نیوتون تریتون را روی عکس مورد نظر که بیش از حد بزرگ است ، را مورد پردازش قرار دهیم . بنابرین این عکس را به نعدادی مساوری از قطعات تقسیم کرده و پردازش هر بخش به صورت جدا گانه صورت موازی خواهد یافت . بنا بر این ما از groovy script tasks and task replication mechanism استفاده می کنیم . اولین وظیفه در تصویر تقسیم شده ، کار های زیر را برای هر بخش از تصویر تکرار ، تولید و پردازش می کنیم و در نهایت آخرین وظیفه همه بخش پردازش را به یک تصویر نهایی ادغام خواهد کرد .
برای همین قدم های زیر را بر می داریم :
- ProActive Studio را باز کرده ( به صورت آنلاین https://try.activeeon.com/studio/ )
- در قسمت نام job در پنل سمت چپ ، image-processing را نوشته .
- تعریف کنید job بعدی پارامتر هاشو در قسمت General Parameters section از پنل سمت چپ
inputFilename with neptune_triton_01_3000x3000.jpg as value
outputFilename with processed.jpg as value, the name of the final processed image
nbParts with 4 as value, the number of parts
- برای این workflow ما از پلتفرم جاوا استفاده می کنیم به نام Canny Edge Detector written by Tom Gibara(. که سورس آن در پیوست 1 در انتهای گزارش پیوست شده است .) - یک replicate block جدید ایجاد کنید به وسیله dragging and dropping the Replicate block از te mplates به workspace .
- روی task1 کلیک کرده و اسنش را به split-image تغییر داده .
- neptune_triton_01_3000x3000.jpg را در سمت چپ اضافه کنید .
- روی task 2 کلیک کرده و اسمش را process-part گذاشته .
- و در نهایت با ضمیمه کردن فایل جاوا که قدم آخر برداشته شده و عملا ما موازی سازی را خوهیم دید .