আর্থ ইঞ্জিনে ডেটা প্রসেস করার জন্য দুটি ভিন্ন এনভায়রনমেন্ট রয়েছে: ইন্টারেক্টিভ এবং ব্যাচ । এই দুটি এনভায়রনমেন্ট (বা "রিয়েলম") ভিন্ন ভিন্ন ধরনের কোয়েরি পরিচালনা করে এবং এদের পারফরম্যান্সের বৈশিষ্ট্যও বেশ আলাদা, তাই কখন এবং কীভাবে কোনটি ব্যবহার করতে হবে তা বোঝা জরুরি।
ইন্টারেক্টিভ পরিবেশ
একে ‘সিঙ্ক্রোনাস’ বা ‘অনলাইন’ স্ট্যাকও বলা হয়। এই পরিবেশটি ছোট ও দ্রুত সম্পন্ন হওয়া অনুরোধগুলোর উত্তর দেওয়ার জন্য বিশেষভাবে তৈরি (প্রতিক্রিয়াগুলো কয়েক দশ মেগাবাইট ডেটার মধ্যে সীমাবদ্ধ থাকে এবং পাঁচ মিনিটের মধ্যে এর প্রক্রিয়াকরণ শেষ করতে হয়)। কোটার সীমা পর্যন্ত অনেকগুলো অনুরোধ সমান্তরালভাবে করা যেতে পারে।
এন্ডপয়েন্ট
ইন্টারেক্টিভ পরিবেশটি বিভিন্ন এপিআই এন্ডপয়েন্ট নিয়ে গঠিত: স্ট্যান্ডার্ড এবং হাই ভলিউম ।
স্ট্যান্ডার্ড এন্ডপয়েন্ট
স্ট্যান্ডার্ড এন্ডপয়েন্টটি বেশিরভাগ মানব-চালিত ব্যবহারের জন্য উপযুক্ত, এবং এটি কোড এডিটর ও আর্থ ইঞ্জিন অ্যাপগুলোকে শক্তি জোগায়। বিশেষত, এই এন্ডপয়েন্টটি সেইসব ল্যাটেন্সি-সংবেদনশীল অ্যাপ্লিকেশনের জন্য সবচেয়ে উপযোগী, যেগুলোতে অল্প সংখ্যক যুগপৎ, নন-প্রোগ্রামেটিক অনুরোধ জড়িত থাকে।
উচ্চ-ভলিউম এন্ডপয়েন্ট
হাই-ভলিউম এন্ডপয়েন্টটি স্ট্যান্ডার্ড এন্ডপয়েন্টের তুলনায় সমান্তরালভাবে অধিক সংখ্যক অনুরোধ পরিচালনা করার জন্য ডিজাইন করা হয়েছে। প্রধান পার্থক্যগুলো হলো:
- উচ্চ লেটেন্সি : উচ্চ-ভলিউম এন্ডপয়েন্টের ক্ষেত্রে প্রতি অনুরোধে গড় লেটেন্সি বেশি থাকে।
- কম ক্যাশিং : এটি অন্তর্বর্তী ফলাফলের জন্য কম ক্যাশিং প্রদান করে, তাই জটিল কোয়েরির জন্য বেশি কম্পিউট টাইম লাগতে পারে।
- স্বয়ংক্রিয় ও ছোট কোয়েরির জন্য সেরা : হাই-ভলিউম এন্ডপয়েন্টটি অনেক প্রোগ্রাম্যাটিক অনুরোধ সামলাতে পারদর্শী, তবে এটি সেইসব সাধারণ কোয়েরির জন্য সবচেয়ে উপযুক্ত যেগুলিতে অ্যাগ্রিগেশনের প্রয়োজন হয় না (যেমন আগে থেকে তৈরি ইমেজ থেকে টাইলস আনা)।
জটিল বিশ্লেষণের জন্য, যেখানে কার্যকর ক্যাশিং প্রয়োজন, সেখানে স্ট্যান্ডার্ড এপিআই এন্ডপয়েন্টটি বেশি সুবিধাজনক হতে পারে। হাই-ভলিউম এন্ডপয়েন্টটি উচ্চ-থ্রুপুট এবং স্বল্প-গণনার কাজগুলোর জন্য অপ্টিমাইজ করা হয়েছে। সাধারণ অনলাইন এন্ডপয়েন্টের তুলনায় হাই-ভলিউম এন্ডপয়েন্ট ব্যবহার করার সময় জটিল কোয়েরিগুলোর জন্য সাধারণত বেশি EECU-টাইম প্রয়োজন হয়।
উচ্চ-ভলিউম এন্ডপয়েন্টের ব্যবহার
পাইথন ক্লায়েন্ট
earthengine লাইব্রেরিটি ইনিশিয়ালাইজ করার সময়, একটি opt_url প্যারামিটার পাস করুন এবং এটিকে https://earthengine-highvolume.googleapis.com এ সেট করুন। বরাবরের মতোই, সঠিক ক্রেডেনশিয়াল পাস করতে এবং ক্লাউড প্রজেক্টটি নির্দিষ্ট করতে ভুলবেন না। উদাহরণস্বরূপ:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
জাভাস্ক্রিপ্ট ক্লায়েন্ট
ee.initialize() ব্যবহার করে earthengine লাইব্রেরি ইনিশিয়ালাইজ করার সময়, প্রথম প্যারামিটার হিসেবে https://earthengine-highvolume.googleapis.com পাস করুন।
REST API
আপনার REST অনুরোধগুলি https://earthengine-highvolume.googleapis.com এ পাঠান (উদাহরণস্বরূপ, REST API কুইকস্টার্ট- এ দেখানো https://earthengine.googleapis.com এর পরিবর্তে)।
ব্যাচ পরিবেশ
একে "অ্যাসিঙ্ক্রোনাস" বা "অফলাইন" স্ট্যাকও বলা হয় এবং এই পরিবেশটি বিপুল পরিমাণ ডেটার উচ্চ-লেটেন্সি প্যারালাল প্রসেসিংয়ের জন্য অপ্টিমাইজ করা হয়েছে। সাধারণত আর্থ ইঞ্জিন ক্লায়েন্ট লাইব্রেরি থেকে ডেটা ইম্পোর্ট বা এক্সপোর্ট ফাংশন (যেমন, Export.* এবং ee.batch.* ) কল করার মাধ্যমে ব্যাচ প্রসেসিং এন্ডপয়েন্টগুলিতে টাস্ক হিসেবে রিকোয়েস্ট জমা দেওয়া হয়। প্রতিটি ব্যাচ টাস্কের সর্বোচ্চ মেয়াদ দশ দিন। প্রতিটি প্রজেক্ট ৩০০০টি পর্যন্ত পেন্ডিং টাস্ক সমর্থন করে, কিন্তু প্রত্যেক ব্যবহারকারী একই সাথে অল্প সংখ্যক টাস্ক চালাতে পারেন।
টাস্কের জীবনচক্র
টাস্কগুলো একটি কিউ-তে জমা দেওয়া হয় এবং তাদের অগ্রাধিকার (সর্বোচ্চ থেকে সর্বোচ্চ) ও জমা দেওয়ার সময় (সবচেয়ে আগেরটি থেকে প্রথম) অনুসারে সাজানো হয়। যখন টাস্কগুলোকে একটি ব্যাচ প্রসেসরের কাছে বরাদ্দ করা হয়, তখন সেগুলো SUBMITTED (কিউ-তে থাকা) অবস্থা থেকে RUNNING অবস্থায় পরিবর্তিত হয়। প্রতিটি প্রসেসর গণনাটি চালানো এবং টাস্কের ফলাফল তৈরি করার জন্য বিভিন্ন সংখ্যক ব্যাচ ওয়ার্কারকে সমন্বয় করার দায়িত্বে থাকে। একটি টাস্কের জন্য ওয়ার্কারের সংখ্যা EE সার্ভিসের কাজটি প্যারালাইজ করার ক্ষমতার উপর নির্ভর করে এবং এটি ব্যবহারকারী দ্বারা কনফিগারযোগ্য নয়।
ক্লাউড প্রজেক্ট ব্যবহার করার সময়, টাস্ক তালিকাভুক্ত করার জন্য প্রজেক্ট-স্তরের অনুমতি আছে এমন যে কেউ টাস্কগুলো দেখতে পারেন। যদি প্রজেক্টটি পেইড আর্থ ইঞ্জিন অ্যাক্সেসের জন্য নিবন্ধিত থাকে, তাহলে টাস্কগুলো একটি প্রজেক্ট-ব্যাপী কিউ-তে সাজানো হয়; আর যদি প্রজেক্টটি আনপেইড (গবেষণা) অ্যাক্সেসের জন্য নিবন্ধিত থাকে, তাহলে টাস্কগুলো প্রত্যেক ব্যক্তির জন্য আলাদাভাবে শিডিউল করা হয়, কিন্তু তা সত্ত্বেও প্রজেক্টের সকল ব্যবহারকারীর কাছে দৃশ্যমান থাকে।
প্রয়োজনীয় আর্টিফ্যাক্টগুলো (যেমন আর্থ ইঞ্জিন অ্যাসেট, গুগল ক্লাউড স্টোরেজের ফাইল ইত্যাদি) তৈরি হলে টাস্কগুলো সফলভাবে সম্পন্ন হয়।
কাজ ব্যবস্থাপনা
নিম্নলিখিত ইন্টারফেসগুলো ব্যবহার করে টাস্কগুলো দেখা ও বাতিল করা যায়:
- ক্লাউড কনসোলের টাস্ক পৃষ্ঠা
- ক্লাউড প্রজেক্ট পর্যায়ে টাস্ক ম্যানেজমেন্ট সক্ষম করে। এখন থেকে, টাস্ক পরিচালনার জন্য এটিই হবে প্রধান ইউজার ইন্টারফেস।
- টাস্ক ম্যানেজার পৃষ্ঠা
- এই ইন্টারফেসটি ব্যবহারকারী এবং প্রজেক্ট পর্যায়ে টাস্কগুলো দেখায় এবং টাস্কের নাম দিয়ে ফিল্টার করার সুবিধা দেয়।
- কোড এডিটর টাস্ক ট্যাব
- কোড এডিটর স্ক্রিপ্টের পাশাপাশি টাস্ক নিরীক্ষণের সুযোগ দেয়।
-
ListOperationsএন্ডপয়েন্ট এবংtaskকমান্ড- প্রোগ্রামের মাধ্যমে টাস্ক দেখা ও পরিচালনা করার জন্য সেরা।
কাজের ব্যর্থতা
যদি কোনো টাস্ক এমন কোনো কারণে ব্যর্থ হয় যা পুনরায় চেষ্টা করেও সমাধান করা যাবে না (যেমন, ডেটা অবৈধ), তাহলে টাস্কটিকে FAILED হিসেবে চিহ্নিত করা হবে এবং সেটি আর চালানো হবে না।
যদি কোনো টাস্ক মাঝেমধ্যে ঘটতে পারে এমন কোনো কারণে ব্যর্থ হয় (যেমন, কোনো গণনা চালানোর সময় টাইম আউট হয়ে যাওয়া), তাহলে আর্থ ইঞ্জিন স্বয়ংক্রিয়ভাবে এটি পুনরায় চেষ্টা করবে এবং retries ফিল্ডটি পূরণ করবে। একটি টাস্ক সর্বোচ্চ পাঁচবার ব্যর্থ হতে পারে এবং চূড়ান্ত ব্যর্থতার ফলে পুরো টাস্কটি FAILED হিসেবে চিহ্নিত হবে।
টাস্ক আইডি
প্রতিটি টাস্কের 3DNU363IM57LNU4SDTMB6I33 ফর্মের একটি আলফানিউমেরিক আইডি থাকে। এগুলি আমাদের টাস্ক ম্যানেজমেন্ট ইন্টারফেসের মাধ্যমে দেখা বা সংগ্রহ করা যায়। আপনি যদি প্রোগ্রাম্যাটিকভাবে টাস্ক শুরু করেন, তাহলে ee.data.newTaskId থেকে টাস্ক আইডিটি পাবেন। কোনো এক্সপোর্ট বা ইনজেশন টাস্ক ডিবাগ করার জন্য সাহায্য চাওয়ার সময়, এই টাস্ক আইডিটি একটি কপিযোগ্য স্ট্রিং হিসাবে প্রদান করুন (স্ক্রিনশট নয়)।
কাজের অবস্থাগুলির তালিকা
টাস্কগুলোর নিম্নলিখিত state মান থাকতে পারে:
-
UNSUBMITTED, ক্লায়েন্টের কাছে এখনও বিচারাধীন। -
READY, সার্ভারে সারিবদ্ধ করা হয়েছে -
RUNNING, বর্তমানে চলছে -
COMPLETED, সফলভাবে সম্পন্ন হয়েছে -
FAILED, অসফলভাবে সম্পন্ন হয়েছে -
CANCEL_REQUESTED, এখনও চলছে কিন্তু বাতিল করার জন্য অনুরোধ করা হয়েছে (অর্থাৎ, কাজটি বাতিল করা হবে এমন কোনো নিশ্চয়তা নেই) -
CANCELLED, মালিক কর্তৃক বাতিল করা হয়েছে
কাজের অগ্রাধিকার
টাস্ক প্রায়োরিটি হলো কিউ-তে থাকা টাস্কগুলোর ক্রম নিয়ন্ত্রণ করার একটি পদ্ধতি। উচ্চ প্রায়োরিটির টাস্কগুলো, জমা দেওয়ার সময় নির্বিশেষে, নিম্ন প্রায়োরিটির অন্যান্য অপেক্ষমান টাস্কের আগে নির্ধারিত হয়। ডিফল্ট টাস্ক প্রায়োরিটি হলো ১০০।
এক্সপোর্ট টাস্কের ক্ষেত্রে অন্যান্য অগ্রাধিকার (উচ্চতর বা নিম্নতর) নির্ধারণ করার সুবিধা শুধুমাত্র সেইসব প্রোজেক্টের ব্যবহারকারীরাই পান, যারা পেইড আর্থ ইঞ্জিন অ্যাক্সেসের জন্য নিবন্ধিত । কোনো এক্সপোর্ট টাস্কের অগ্রাধিকার পরিবর্তন করলে তা কোনো ইম্পোর্ট টাস্কের সাপেক্ষে কীভাবে নির্ধারিত হবে, তার উপর কোনো প্রভাব ফেলে না, কারণ এই দুই ধরনের টাস্ক আলাদাভাবে নির্ধারিত হয়।
উদাহরণ: টাস্ক অগ্রাধিকার ব্যবহার করা
নিম্নলিখিত টাস্ক তালিকাটি বিবেচনা করুন, যেখানে ১-৫ নম্বর টাস্কগুলো তাদের স্বাভাবিক ক্রমে এবং ডিফল্ট অগ্রাধিকার অনুযায়ী জমা দেওয়া হয়েছে। যেহেতু সবগুলোর অগ্রাধিকার একই, তাই টাস্কগুলো জমা দেওয়ার ক্রমেই চলে এবং এই প্রজেক্টের জন্য দুটি ব্যাচ প্রসেসিং স্লট উপলব্ধ থাকায় দুটি একযোগে চলে (জমা দেওয়া প্রথম এবং দ্বিতীয়টি)।
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
MyHighPriorityTask1 নামে একটি নতুন টাস্ক জমা দিলে চলমান টাস্কগুলোর উপর কোনো প্রভাব পড়বে না:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
চলমান কাজগুলোর মধ্যে একটি সম্পন্ন হওয়ার পর, সর্বোচ্চ অগ্রাধিকার সম্পন্ন অপেক্ষমান কাজটি চলবে (এই ক্ষেত্রে, আমাদের উচ্চ-অগ্রাধিকারের কাজটি):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100