মানচিত্র হ্রাস প্রোগ্রামিংয়ে হ্রাস পর্বের উপ-অংশ হিসাবে পরিবর্তন, বাছাই এবং হ্রাস রয়েছে। বাছাই করা ব্যয়বহুল ব্যাপার।
মানচিত্র হ্রাস প্রোগ্রামিং-এ রিডুসারে ধাপ পরিবর্তন এবং বাছাইয়ের উদ্দেশ্য কী?
মানচিত্র হ্রাস প্রোগ্রামিংয়ে হ্রাস পর্বের উপ-অংশ হিসাবে পরিবর্তন, বাছাই এবং হ্রাস রয়েছে। বাছাই করা ব্যয়বহুল ব্যাপার।
মানচিত্র হ্রাস প্রোগ্রামিং-এ রিডুসারে ধাপ পরিবর্তন এবং বাছাইয়ের উদ্দেশ্য কী?
উত্তর:
প্রথমত shuffling
হ'ল ম্যাপারগুলি থেকে হ্রাসকারীদের কাছে ডেটা স্থানান্তর করার প্রক্রিয়া, তাই আমি মনে করি এটি স্পষ্টতই যে এটি হ্রাসকারীদের জন্য প্রয়োজনীয়, অন্যথায়, তাদের কোনও ইনপুট (বা প্রতিটি ম্যাপার থেকে ইনপুট) রাখতে সক্ষম হবে না । কিছুটা সময় বাঁচানোর জন্য মানচিত্রের পর্ব শেষ হওয়ার আগেই বদলানো শুরু হতে পারে। এজন্য আপনি যখন মানচিত্রের স্থিতিটি 100% না থেকে 0% (তবে 33% এরও কম) এর চেয়ে বেশি হ্রাসের স্থিতি দেখতে পাবেন।
Sorting
রিডুসারের জন্য সময় সাশ্রয় করে, যখন কোনও নতুন হ্রাস কার্য শুরু করা উচিত তখন সহজেই পার্থক্য করতে সহায়তা করে। এটি সহজেই নতুন কমানোর কাজ শুরু করে, যখন সাজানো ইনপুট ডেটার পরবর্তী কীটি কেবল সহজভাবে বলা যায়। প্রতিটি হ্রাস টাস্কটি মূল-মান জোড়গুলির একটি তালিকা নেয়, তবে এটি হ্রাস () পদ্ধতিতে কল করতে হয় যা একটি কী-তালিকা (মান) ইনপুট নেয়, তাই এটি কী দ্বারা মানগুলি গোষ্ঠীভুক্ত করতে হয়। এটি করা সহজ, যদি ইনপুট ডেটা মানচিত্রের পর্যায়ে প্রাক স্থানীয়ভাবে সাজানো হয় (স্থানীয়ভাবে) এবং কেবল হ্রাস পর্বের মধ্যে সজ্জিত করা হয় (যেহেতু হ্রাসকারীরা অনেক ম্যাপার থেকে ডেটা পান)।
Partitioning
, যেগুলির একটি উত্তরে আপনি উল্লেখ করেছেন, এটি একটি আলাদা প্রক্রিয়া। এটি নির্ধারণ করে যে কোন রিডুসার একটি (কী, মান) জোড়, মানচিত্রের পর্বের আউটপুট প্রেরণ করা হবে। ডিফল্ট পার্টিশনারে কীগুলি হ্রাস করার কাজে বিতরণ করতে একটি হ্যাশিং ব্যবহার করে তবে আপনি এটিকে ওভাররাইড করতে এবং আপনার নিজস্ব কাস্টম পার্টিশনারের ব্যবহার করতে পারেন।
এই পদক্ষেপগুলির জন্য তথ্যের একটি দুর্দান্ত উত্স হ'ল এই ইয়াহু টিউটোরিয়াল ।
এটির একটি দুর্দান্ত গ্রাফিকাল উপস্থাপনা নিম্নলিখিত: (এই চিত্রটিতে নকল "বলা হয়")
মনে রাখবেন shuffling
এবং sorting
আপনি শূন্য হ্রাসকারীদের (setNumReduceTasks (0)) নির্দিষ্ট করে নিলে এবং সম্পাদিত হয় না। তারপরে, মানচিত্রের কাজটি মানচিত্রের পর্যায়ে থামবে এবং মানচিত্রের পর্যায়ে কোনও ধরণের বাছাই করা অন্তর্ভুক্ত হবে না (তাই এমনকি মানচিত্রের পর্বটি আরও দ্রুত)।
আপডেট: যেহেতু আপনি আরও সরকারী কিছু সন্ধান করছেন, আপনি টম হোয়াইটের বই "হ্যাডোপ: দ্য সংজ্ঞা নির্দেশিকা "ও পড়তে পারেন। এখানে আপনার প্রশ্নের আকর্ষণীয় অংশ।
টম হোয়াইট ফেব্রুয়ারী ২০০ February সাল থেকে অ্যাপাচি হ্যাডোপ প্রতিশ্রুতিবদ্ধ এবং অ্যাপাচি সফটওয়্যার ফাউন্ডেশনের সদস্য, সুতরাং আমার ধারণা এটি বেশ বিশ্বাসযোগ্য এবং অফিসিয়াল ...
আসুন ম্যাপ্রেডুস প্রোগ্রামের মূল পর্যায়গুলি আবার ঘুরে দেখি।
মানচিত্র ফেজ ম্যাপারদের দ্বারা সম্পন্ন করা হয়। ম্যাপারগুলি অরপোর্টড ইনপুট কী / মান জোড়ায় চালিত হয়। প্রতিটি ম্যাপার প্রতিটি ইনপুট কী / মান জোড়ার জন্য শূন্য, এক, বা একাধিক আউটপুট কী / মান জোড়া নির্গত করে।
মেশা ফেজ combiners দ্বারা সম্পন্ন করা হয়। Combiner একই কী দিয়ে কী / মান জোড়া একত্রিত করা উচিত নয়। প্রতিটি কম্বিনার শূন্য, একবার বা একাধিকবার চালাতে পারে।
এলোমেলো এবং সাজানোর ফেজ ফ্রেমওয়ার্ক দ্বারা সম্পন্ন করা হয়। সমস্ত ম্যাপার থেকে প্রাপ্ত ডেটা কী দ্বারা গোষ্ঠীভূত হয়, হ্রাসকারীদের মধ্যে বিভক্ত হয় এবং কী অনুসারে বাছাই করা হয়। প্রতিটি রিডুসার একই কী এর সাথে যুক্ত সমস্ত মান অর্জন করে। প্রোগ্রামার বাছাইয়ের জন্য কাস্টম তুলনা ফাংশন এবং ডেটা বিভাজনের জন্য একটি পার্টিশনার সরবরাহ করতে পারে ।
পার্টিশনকারী সিদ্ধান্ত নেয় যা হ্রাসকারক একটি নির্দিষ্ট কী মান যুগল পাবেন।
হ্রাসকারক গ্রহণ করে কী / [মান তালিকা] জোড়া সাজানো, কী অনুসারে সাজানো। মান তালিকায় ম্যাপারদের দ্বারা উত্পাদিত একই কী সহ সমস্ত মান রয়েছে। প্রতিটি রিডিউসার প্রতিটি ইনপুট কী / মান জোড়ার জন্য শূন্য, এক বা একাধিক আউটপুট কী / মান জোড়া নির্গত করে ।
এই javacodegeeks কটাক্ষপাত আছে নিবন্ধটি মারিয়া Jurcovicova দ্বারা এবং mssqltips ভাল করে বুঝতে জন্য দত্ত দ্বারা নিবন্ধ
নীচে সাফারিবুকসনলাইন নিবন্ধের চিত্রটি রয়েছে
ie
রিডুসার এবং আউটপুট এর অধীনে স্ট্রিংগুলি আসলে হওয়া উচিত is
।
আমি উপরের উত্তরগুলি থেকে অনুপস্থিত কিছু পয়েন্ট যুক্ত করার কথা ভেবেছিলাম। এখান থেকে নেওয়া এই চিত্রটিতে প্রকৃতপক্ষে কী চলছে তা পরিষ্কারভাবে জানিয়েছে।
আমি যদি আবার আসল উদ্দেশ্য বর্ণনা করি
স্প্লিট: বিভিন্ন নোড (ম্যাপারদের), যা সামগ্রিক প্রক্রিয়াকরণ সময় বাঁচাতে হবে জুড়ে প্রক্রিয়াকরণ লোড বিতরণ করার মাধ্যমে সমান্তরাল প্রক্রিয়াজাতকরণ উন্নত।
একত্রিত করুন: প্রতিটি ম্যাপারের আউটপুট সঙ্কুচিত করে। এটি ডেটা এক নোড থেকে অন্য নোডে স্থানান্তরিত করার জন্য সময় ব্যয় সাশ্রয় করবে।
বাছাই করুন (সাফল্য এবং বাছাই করুন): রান-টাইমকে শিডিয়ুল করা (স্পোন / শুরু) নতুন হ্রাসকারীদের সহজ করে তোলে, যেখানে বাছাই করা আইটেম তালিকার মধ্য দিয়ে যাওয়ার সময় যখনই বর্তমান কী পূর্ববর্তী থেকে আলাদা হয়, এটি একটি নতুন রিডিউসার স্প্যান করতে পারে ।
আমি সবসময় ধরে নিয়েছি এটি প্রয়োজনীয় ছিল কারণ ম্যাপার থেকে আউটপুট হ্রাসকারকের জন্য ইনপুট হয়, তাই এটি কীস্পেসের উপর ভিত্তি করে সাজানো হয়েছিল এবং তারপরে প্রতিটি রিডুসার ইনপুটটির জন্য বালতিগুলিতে বিভক্ত হয়েছিল। আপনি একই কীটের সমস্ত একই মান একই বালতিতে একই পরিমাণে রিডুডেসারে যাওয়ার বিষয়টি নিশ্চিত করতে চান যাতে তারা একসাথে হ্রাস পায়। K1, V2 এবং K1, V4 কে বিভিন্ন হ্রাসকারীগুলিতে পাঠানোর কোনও অর্থ নেই কারণ হ্রাস করার জন্য তাদের একসাথে থাকা দরকার।
এটি যথাসম্ভব সহজভাবে ব্যাখ্যা করার চেষ্টা করা হয়েছে
শাফলিং হ'ল প্রক্রিয়া যার মাধ্যমে ম্যাপারদের মধ্যবর্তী ডেটা 0,1 বা আরও হ্রাসকারীকে স্থানান্তর করা হয়। প্রতিটি রিডিউসার 1 বা ততোধিক কী এবং এর সাথে সম্পর্কিত মানগুলি হ্রাসকারীদের সংখ্যার উপর নির্ভর করে (ভারসাম্য বোঝার জন্য) পায়। আরও প্রতিটি কী-এর সাথে সম্পর্কিত মানগুলি স্থানীয়ভাবে বাছাই করা হয়।
ম্যাপ্রেডিউস কেবল দুটি জিনিসই নাজাতীয়ভাবে করে: স্কেলযোগ্য গ্রুপবাই অনুসারে বাছাই করুন এবং (সাজানোর মাধ্যমে প্রয়োগ করা হয়েছে)।
মানচিত্রের ওপরে বেশিরভাগ অ্যাপ্লিকেশন এবং ডিজাইনের প্যাটার্নগুলি এই দুটি ক্রিয়াকলাপের উপর নির্মিত যা এলোমেলো এবং সাজানোর মাধ্যমে সরবরাহ করা হয়।
এটি একটি ভাল পড়া। আশা করি এটা সাহায্য করবে. আপনার অনুসারে বাছাইয়ের ক্ষেত্রে, আমি মনে করি এটি মানচিত্রের শেষ ধাপে মার্জ অপারেশনের জন্য। যখন মানচিত্রের অপারেশন হয়ে যায়, এবং ফলাফলটি স্থানীয় ডিস্কে লেখার প্রয়োজন হয়, বাফার থেকে উত্পন্ন স্প্লিটগুলিতে একটি বহু-সংহতকরণ পরিচালিত হবে। এবং একত্রীকরণের ক্রিয়াকলাপের জন্য, প্রতিটি বিভাজনকে উন্নতভাবে বাছাই করা সহায়ক।
ঠিক আছে, ম্যাপ্রেডস-এ দুটি গুরুত্বপূর্ণ বাক্যাংশ রয়েছে যা ম্যাপার এবং রেডুসার উভয়ই গুরুত্বপূর্ণ, তবে রেডুসার বাধ্যতামূলক। কিছু প্রোগ্রামে হ্রাসকারীরা alচ্ছিক। এখন আপনার প্রশ্নে আসা। বদলানো এবং বাছাই করা ম্যাপ্রেডুসে দুটি গুরুত্বপূর্ণ ক্রিয়াকলাপ। প্রথম হ্যাডোপ ফ্রেমওয়ার্ক স্ট্রাকচার্ড / অস্ট্রাস্ট্রাক্ট করা ডেটা নেয় এবং ডেটা কে, ভ্যালুতে আলাদা করে।
এখন ম্যাপার প্রোগ্রামটি পৃথক করে প্রক্রিয়াকরণের জন্য কীগুলি এবং মানগুলিতে ডেটা সাজান। কী 2 এবং মান 2 মান উত্পন্ন করুন। এই মানগুলির পছন্দসই সমাধান পাওয়ার জন্য যথাযথ ক্রম প্রক্রিয়াকরণ করা উচিত arrange আপনার স্থানীয় সিস্টেমে এই পরিবর্তন এবং বাছাই করা (ফ্রেমওয়ার্ক এটি যত্ন নিন) এবং প্রক্রিয়া কাঠামোর পরে স্থানীয় সিস্টেমে স্থানীয় সিস্টেমে ডেটা পরিষ্কার করে। ঠিক আছে
এই পরিবর্তন এবং সাজানোর প্রক্রিয়াটি অনুকূলকরণের জন্য আমরা এখানে কম্বিনার এবং পার্টিশন ব্যবহার করি । যথাযথ ব্যবস্থাপনার পরে, এই মূল মানগুলি কাঙ্ক্ষিত ক্লায়েন্টের আউটপুট পেতে Reducer এ যায়। অবশেষে Reducer পছন্দসই আউটপুট পান।
কে 1, ভি 1 -> কে 2, ভি 2 (আমরা প্রোগ্রাম ম্যাপারটি লিখব), -> কে 2, ভি '(এখানে ডেফেলটি নরম এবং নরম) -> কে 3, ভি 3 আউটপুট উত্পন্ন করে। K4, V4।
দয়া করে মনে রাখবেন এই সমস্ত পদক্ষেপগুলি কেবল লজিক্যাল অপারেশন, মূল ডেটা পরিবর্তন করে না।
আপনার প্রশ্ন: মানচিত্র হ্রাস প্রোগ্রামিংয়ে রিডিউসারে ধাপটি পরিবর্তন এবং বাছাইয়ের উদ্দেশ্য কী?
সংক্ষিপ্ত উত্তর: পছন্দসই আউটপুট পেতে ডেটা প্রক্রিয়া করা। সাফল্য হ'ল ডেটা সমষ্টিগত, হ্রাস প্রত্যাশিত আউটপুট।