স্পার্ক স্ট্যান্ডেলোন ক্লাস্টারে শ্রমিক, নির্বাহক, কোর কী কী?


219

আমি ক্লাস্টার মোড ওভারভিউ পড়েছি এবং আমি এখনও স্পার্ক স্ট্যান্ডেলোন ক্লাস্টারের বিভিন্ন প্রক্রিয়া এবং সমান্তরালতা বুঝতে পারি না ।

কর্মী একটি জেভিএম প্রক্রিয়া বা না? আমি দৌড়ে গিয়ে bin\start-slave.shদেখতে পেলাম যে এটি শ্রমিককে উত্সাহিত করেছে, যা আসলে একটি জেভিএম।

উপরের লিঙ্ক অনুসারে, এক্সিকিউটর হ'ল একটি কর্মী নোডে একটি অ্যাপ্লিকেশনের জন্য চালু একটি প্রক্রিয়া যা কাজগুলি চালায়। একজন নির্বাহকও জেভিএম।

এগুলি আমার প্রশ্ন:

  1. এক্সিকিউটাররা প্রতি আবেদন। তাহলে একজন শ্রমিকের ভূমিকা কী? এটি নির্বাহকের সাথে সমন্বয় করে এবং ফলাফলটি ড্রাইভারের সাথে আবার যোগাযোগ করে? নাকি চালক সরাসরি নির্বাহকের সাথে কথা বলে? যদি তাই হয় তবে শ্রমিকটির উদ্দেশ্য কী?

  2. কিভাবে একটি অ্যাপ্লিকেশন জন্য নির্বাহকের সংখ্যা নিয়ন্ত্রণ করতে?

  3. কার্য সম্পাদকের ভিতরে সমান্তরালভাবে চালানোর জন্য কাজগুলি করা যেতে পারে? যদি তা হয় তবে কীভাবে একজন নির্বাহকের জন্য থ্রেডের সংখ্যা কনফিগার করবেন?

  4. একজন শ্রমিক, এক্সিকিউটর এবং এক্সিকিউটর কোর (- মোট-এক্সিকিউটর-কোর) এর মধ্যে কী সম্পর্ক?

  5. নোডে আরও বেশি শ্রমিক থাকার অর্থ কী?

আপডেট করা হয়েছে

আরও ভালভাবে বুঝতে উদাহরণগুলি নেওয়া যাক।

উদাহরণ 1: 5 টি কর্মী নোড (প্রতিটি নোডের 8 টি কোরের) সহ একটি স্ট্যান্ডেলোন ক্লাস্টার যখন আমি ডিফল্ট সেটিংস সহ কোনও অ্যাপ্লিকেশন শুরু করি।

উদাহরণ 2 একই ক্লাস্টার কনফিগারেশনের উদাহরণ 1 হিসাবে, তবে আমি নিম্নলিখিত সেটিংস - এক্সিকিউটর-কোরস 10 - মোট-এক্সিকিউটর-কোর্স 10 সহ একটি অ্যাপ্লিকেশন চালনা করি।

উদাহরণ 3 একই ক্লাস্টার কনফিগারেশনের উদাহরণ 1 হিসাবে, তবে আমি নিম্নলিখিত সেটিংস - এক্সিকিউটর-কোরেস 10 - মোট-এক্সিকিউটার-কোর 50-এর সাথে একটি অ্যাপ্লিকেশন চালাচ্ছি।

উদাহরণ 4 উদাহরণস্বরূপ একই ক্লাস্টার কনফিগারেশন 1, তবে আমি নিম্নলিখিত সেটিংস - এক্সকিউটর-কোরস 50 - মোট-এক্সিকিউটার-কোর 50-এর সাথে একটি অ্যাপ্লিকেশন চালাচ্ছি।

উদাহরণ 5 একই ক্লাস্টার কনফিগারেশনের উদাহরণ 1 হিসাবে, তবে আমি নিম্নলিখিত সেটিংস - এক্সিকিউটর-কোরস 50 - মোট-এক্সিকিউটর-কোর্স 10 সহ একটি অ্যাপ্লিকেশন চালনা করি।

এই প্রতিটি উদাহরণে, কতজন নির্বাহক? এক্সিকিউটারের জন্য কত থ্রেড? কত কোর? প্রয়োগের ক্ষেত্রে নির্ধারকের সংখ্যা কীভাবে সিদ্ধান্ত নেওয়া হয়? এটি কি সর্বদা শ্রমিকের সংখ্যার সমান?

উত্তর:


274

এখানে চিত্র বর্ণনা লিখুন

স্পার্ক একটি মাস্টার / স্লেভ আর্কিটেকচার ব্যবহার করে। আপনি চিত্রটিতে দেখতে পাচ্ছেন, এর মধ্যে একটি কেন্দ্রীয় সমন্বয়কারী (ড্রাইভার) রয়েছে যা অনেক বিতরণকৃত শ্রমিক (এক্সিকিউটার) এর সাথে যোগাযোগ করে। ড্রাইভার এবং প্রতিটি এক্সিকিউটার তাদের নিজস্ব জাভা প্রক্রিয়াগুলিতে চালিত হয়।

চালক

ড্রাইভার হ'ল প্রক্রিয়া যেখানে মূল পদ্ধতিটি চালিত হয়। প্রথমে এটি ইউজার প্রোগ্রামকে টাস্কে রূপান্তরিত করে এবং তারপরে এটি এক্সিকিউটরগুলির উপর কার্যগুলি নির্ধারণ করে।

নির্বাহক

নির্বাহকরা প্রদত্ত স্পার্ক জবটিতে পৃথক কাজ পরিচালনার দায়িত্বে কর্মী নোডের প্রক্রিয়া। এগুলি একটি স্পার্ক অ্যাপ্লিকেশনের শুরুতে চালু করা হয় এবং সাধারণত কোনও অ্যাপ্লিকেশনটির পুরো জীবনকাল ধরে চালানো হয়। একবার তারা টাস্ক চালানোর পরে তারা ফলাফলগুলি ড্রাইভারকে প্রেরণ করে। তারা আরডিডিগুলির জন্য মেমরি স্টোরেজ সরবরাহ করে যা ব্যবহারকারী প্রোগ্রামগুলি ব্লক ম্যানেজারের মাধ্যমে ক্যাশে করে।

অ্যাপ্লিকেশন এক্সিকিউশন ফ্লও

এটি মাথায় রেখে, আপনি যখন ক্লার্টারে স্পার্ক-জমা দিয়ে কোনও আবেদন জমা দিন তখন অভ্যন্তরীণভাবে যা ঘটে তা ঘটে:

  1. একটি স্বতন্ত্র অ্যাপ্লিকেশন শুরু হয় এবং একটি SparkContextদৃষ্টান্ত ইনস্ট্যান্ট করে তোলে (এবং এটি তখনই হয় যখন আপনি অ্যাপ্লিকেশনটিকে ড্রাইভার বলতে পারেন)।
  2. ড্রাইভার প্রোগ্রাম এক্সিকিউটারদের চালু করতে ক্লাস্টার ম্যানেজারের কাছে সংস্থানগুলির জন্য জিজ্ঞাসা করে।
  3. ক্লাস্টার ম্যানেজার এক্সিকিউটারগুলি চালু করে।
  4. ড্রাইভার প্রক্রিয়াটি ব্যবহারকারী অ্যাপ্লিকেশনটির মাধ্যমে চলে। আরডিডি টাস্কের উপর ক্রিয়া এবং রূপান্তরের উপর নির্ভর করে নির্বাহকদের কাছে প্রেরণ করা হয়।
  5. এক্সিকিউটাররা কাজগুলি পরিচালনা করে এবং ফলাফলগুলি সংরক্ষণ করে।
  6. যদি কোনও শ্রমিক ক্রাশ হয়, তবে তার কাজগুলি আবার বিভিন্ন প্রক্রিয়াজাতকরণের জন্য বিভিন্ন নির্বাহকের কাছে প্রেরণ করা হবে। "স্পার্ক: লার্নিং-ফাস্ট বিগ ডেটা অ্যানালাইসিস" বইটিতে তারা স্পার্ক এবং ফল্ট সহনশীলতা সম্পর্কে কথা বলেছে:

স্পার্ক স্বয়ংক্রিয়ভাবে ব্যর্থ বা ধীর কার্যগুলি পুনরায় কার্যকর করে ব্যর্থ বা ধীর মেশিনগুলির সাথে ডিল করে। উদাহরণস্বরূপ, যদি কোনও মানচিত্রের পার্টিশন চালিত নোড () অপারেশন ক্র্যাশ হয়ে যায়, স্পার্ক এটিকে অন্য নোডে পুনরায় চালিত করবে; এমনকি নোড ক্রাশ না হলেও অন্যান্য নোডের তুলনায় খুব ধীর গতিতেও স্পার্ক প্রাকৃতিকভাবে অন্য নোডে টাস্কের একটি "অনুমানমূলক" অনুলিপি চালু করতে পারে এবং যদি এটি শেষ হয় তবে তার ফলাফল নিতে পারে।

  1. ড্রাইভার থেকে স্পার্ককন্টেক্সটেক্সটপ () দিয়ে বা মূল পদ্ধতিটি যদি প্রস্থান করে / ক্র্যাশ করে তবে সমস্ত নির্বাহককে সমাপ্ত করা হবে এবং ক্লাস্টারের সংস্থানগুলি ক্লাস্টার ম্যানেজার দ্বারা প্রকাশ করা হবে।

তোমার প্রশ্নগুলো

  1. যখন এক্সিকিউটারগুলি শুরু করা হয় তারা চালকের সাথে নিজেকে নিবন্ধিত করে এবং তাই তারা সরাসরি যোগাযোগ করে। শ্রমিকরা ক্লাস্টার ম্যানেজারকে তাদের সংস্থানগুলি সরবরাহের জন্য যোগাযোগ করার দায়িত্বে আছেন।

  2. ইয়ার্ন ক্লাস্টারে আপনি এটি --num- এক্সিকিউটরগুলির সাথে করতে পারেন। স্ট্যান্ডেলোন ক্লাস্টারে আপনি শ্রমিক প্রতি একজন এক্সিকিউটর পাবেন যদি না আপনি স্পার্ক.এক্সিকিউটর.কোর্সের সাথে খেলেন এবং কোনও শ্রমিকের একাধিক এক্সিকিউটিউটর রাখার জন্য পর্যাপ্ত কোর থাকে না। (@ জ্যাসেকলাসকোভস্কি যেমন উল্লেখ করেছেন যে, --num- এক্সিকিউটররা আর YARN https://github.com/apache/spark/commit/16b6d18613e150c7038c613992d80a7828413e66 এ ব্যবহার করবে না )

  3. আপনি - এক্সিকিউটার-কোরের সাথে এক্সিকিউটারের জন্য করের সংখ্যা নির্ধারণ করতে পারেন

  4. - মোট-এক্সিকিউটর-কোরগুলি প্রতিটি অ্যাপ্লিকেশন অনুসারে এক্সিকিউটর কোরগুলির সর্বাধিক সংখ্যা

  5. শন ওয়েন যেমন এই থ্রেডে বলেছিলেন : "মেশিনে একজনের বেশি শ্রমিক চালানোর কোনও ভাল কারণ নেই"। উদাহরণস্বরূপ আপনার কাছে অনেকগুলি জেভিএম বসে থাকবে।

হালনাগাদ

আমি এই পরিস্থিতিগুলি পরীক্ষা করতে সক্ষম হইনি, তবে ডকুমেন্টেশন অনুসারে:

উদাহরণ 1: স্পার্ক লোভজনকভাবে শিডিউলার দ্বারা প্রদত্ত যতগুলি কোর এবং এক্সিকিউটারকে অর্জন করবে। সুতরাং শেষ পর্যন্ত আপনি 5 টি এক্সিকিউর পাবেন প্রতিটি 8 টি কোর সহ।

উদাহরণ 2 থেকে 5: স্পার্ক একক কর্মী হিসাবে অনুরোধ করা যতটা কোর বরাদ্দ করতে সক্ষম হবে না, সুতরাং কোন নির্বাহক প্রবর্তন করা হবে না।


ধন্যবাদ @ মার্কো এটি সাধারণত নোড রিসোর্সগুলি পরিচালনা করে তাই সাধারণভাবে একজনের কর্মীর উপর হিপ মেমরি নিয়ে চিন্তা করা উচিত নয়?
মানিকানন্দন কান্নান

8
কি দুর্দান্ত উত্তর! ধন্যবাদ @ মার্কো Github.com/apache/spark/commit/… অনুযায়ী --num-executorsYARN তে আর ব্যবহার হয় না।
জ্যাসেক লাসকোভস্কি

1
@ মারকো দুর্দান্ত উত্তরের জন্য ধন্যবাদ। ড্রাইভার চালানোর সময় আপনি কি ক্লাস্টার ম্যানেজারের চলমান ভূমিকার বিষয়ে প্রসারিত করতে পারেন? ... ড্রাইভার বা কর্মী উভয় ক্র্যাশ বা প্রতিক্রিয়া দেওয়া বন্ধ করে, কী কী সংস্থান উপলব্ধ তা জানতে এটি অবশ্যই পরিচালনা করবে।
আয়েন

1
@ চালক সংস্থানসমূহের বরাদ্দের জন্য ক্লাস্টার ম্যানেজারের সাথে যোগাযোগ করুন এবং এক্সিকিউটারদের চালু করতে ক্লাস্টার এমজিআরকে অনুরোধ করেছেন
অরবিন্দ ইয়াররাম

2
দুর্দান্ত উত্তর। আপনি এখানে স্পার্ক ইন্টার্নাল সম্পর্কে বিস্তারিত তথ্য পাবেন github.com/JerryeLead/SarkarkInternals/blob/master/EnglishVersion/…
আমার গজভিয়ে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.