মানচিত্র হ্রাস একটি ফ্রেমওয়ার্ক যা বিশাল পরিমাণে ডেটা দক্ষতার সাথে প্রক্রিয়া করার জন্য তৈরি করা হয়েছিল। উদাহরণস্বরূপ, যদি আমাদের একটি ডেটাসেটে 1 মিলিয়ন রেকর্ড থাকে, এবং এটি একটি রিলেশনাল উপস্থাপনায় সংরক্ষণ করা হয় - মানগুলি পাওয়া এবং এগুলিতে কোনও ধরণের রূপান্তর সম্পাদন করা খুব ব্যয়বহুল।
এসকিউএল-এর উদাহরণের জন্য, জন্মের তারিখটি দেওয়া হয়েছে, মিলিয়ন রেকর্ডের জন্য কত লোক> 30 বছর বয়সী তা নির্ধারণ করতে কিছু সময় লাগবে, এবং যখন অনুসন্ধানের জটিলতা বৃদ্ধি পাবে তখন কেবল এই চৌম্বকটির ক্রমে বৃদ্ধি পাবে। মানচিত্র হ্রাস একটি ক্লাস্টার ভিত্তিক বাস্তবায়ন সরবরাহ করে যেখানে ডেটা বিতরণ পদ্ধতিতে প্রক্রিয়া করা হয়
আর একটি ভাল উদাহরণ হ'ল ম্যাপের মাধ্যমে বন্ধুবান্ধব সন্ধান করা ধারণাটি বোঝার জন্য একটি শক্তিশালী উদাহরণ হতে পারে, এবং একটি ভাল ব্যবহৃত ব্যবহারের ক্ষেত্রে।
বন্ধুবান্ধব সন্ধান করা
ম্যাপ্রেডস হ'ল মূলত গুগলে বিকাশ করা একটি কাঠামো যা বেশ কয়েকটি ডোমেন জুড়ে সহজ আকারে বিতরণ করা কম্পিউটিংয়ের অনুমতি দেয় allows অ্যাপাচি হাদুপ একটি ওপেন সোর্স বাস্তবায়ন।
আমি বিশদটি টানব, তবে এটি দুটি ফাংশন সংজ্ঞায়িত করতে নেমে আসে: একটি মানচিত্র ফাংশন এবং একটি হ্রাস ফাংশন। মানচিত্রের ফাংশনটি একটি মান নেয় এবং কী কী আউটপুট দেয়: মান জোড়ায়। উদাহরণস্বরূপ, আমরা যদি কোনও মানচিত্রের ফাংশনটি সংজ্ঞায়িত করি যা একটি স্ট্রিং নেয় এবং শব্দের দৈর্ঘ্যটিকে কী হিসাবে এবং শব্দটিকে নিজের মান হিসাবে আউটপুট করে দেয় তবে মানচিত্র (স্টিভ) 5 ফিরে আসবে: স্টিভ এবং মানচিত্র (স্যাভান্নাহ) 8: সাওয়ানা । আপনি লক্ষ করেছেন যে মানচিত্রের ফাংশনটি রাষ্ট্রহীন এবং এর আউটপুট মানের গণনা করার জন্য কেবল ইনপুট মানের প্রয়োজন। এটি আমাদেরকে সমান্তরাল মানের বিপরীতে মানচিত্রের ক্রিয়াকলাপ চালানোর অনুমতি দেয় এবং একটি বিশাল সুবিধা সরবরাহ করে। আমরা হ্রাস ফাংশনে পৌঁছানোর আগে ম্যাপ্রেডস ফ্রেমওয়ার্কটি সমস্ত মানকে কী দ্বারা একত্রিত করে, তাই যদি মানচিত্রটি নিম্নলিখিত কীটি আউটপুট দেয়: মান জোড়া:
3 : the
3 : and
3 : you
4 : then
4 : what
4 : when
5 : steve
5 : where
8 : savannah
8 : research
তারা এই হিসাবে গোষ্ঠীভুক্ত হয়:
3 : [the, and, you]
4 : [then, what, when]
5 : [steve, where]
8 : [savannah, research]
এর পরে প্রতিটি লাইন হ্রাস কার্যকারিতা হিসাবে যুক্তি হিসাবে পাস হবে, যা একটি কী এবং মানগুলির তালিকা গ্রহণ করে। এই উদাহরণস্বরূপ, আমরা নির্দিষ্ট দৈর্ঘ্যের কত শব্দ বিদ্যমান তা নির্ধারণের চেষ্টা করতে পারি, সুতরাং আমাদের হ্রাস কার্যকারিতা কেবল তালিকার আইটেমের সংখ্যা গণনা করবে এবং তালিকার আকারের সাথে কী আউটপুট দেবে, যেমন:
3 : 3
4 : 3
5 : 2
8 : 2
হ্রাসগুলি সমান্তরালভাবেও করা যেতে পারে, আবার একটি বিশাল সুবিধা প্রদান করে। এরপরে আমরা এই চূড়ান্ত ফলাফলগুলি দেখতে পারি এবং দেখতে পারি যে আমাদের কর্পাসে 5 এর দৈর্ঘ্যের মাত্র দুটি শব্দ ছিল, ইত্যাদি ...
ম্যাপ্রেডস-এর সর্বাধিক সাধারণ উদাহরণ হ'ল কোনও কর্পাসে কতবার শব্দ হয় তা গণনা করা। ধরুন আপনার কাছে ইন্টারনেটের একটি অনুলিপি ছিল (আমি এ জাতীয় পরিস্থিতিতে কাজ করার সৌভাগ্যবান হয়েছি), এবং আপনি ইন্টারনেটে প্রতিটি শব্দের একটি তালিকা চেয়েছিলেন এবং এটি কতবার হয়েছিল।
আপনি যেভাবে এর কাছে যাবেন তা হ'ল আপনার কাছে থাকা দস্তাবেজগুলিকে টোকনাইজ করা (এটি শব্দগুলিতে বিভক্ত করা) এবং প্রতিটি শব্দ একটি ম্যাপারের কাছে পৌঁছে দেওয়া। ম্যাপারটি আবার একটি মান সহ শব্দটি আবার বের করে দেবে 1
। গোষ্ঠীকরণের পর্যায়ে সমস্ত কীগুলি নেওয়া হবে (এই ক্ষেত্রে শব্দগুলিতে), এবং 1 এর একটি তালিকা তৈরি করবে। হ্রাস পর্বের পরে একটি কী (শব্দ) এবং একটি তালিকা (প্রতিটি বার কী ইন্টারনেটে কী প্রদর্শিত হবে তার জন্য 1 এর একটি তালিকা) নেয় এবং তালিকাটি যোগ করে। রিডুসারটি তার শুরুর সাথে শব্দের আউটপুট দেয়। সব কিছু বলা হয়ে গেলে এবং শেষ হয়ে গেলে আপনার কাছে ইন্টারনেটে প্রতিটি শব্দের একটি তালিকা থাকবে এবং কতবার প্রদর্শিত হয়েছিল।
সহজ, তাই না? আপনি যদি কখনও ম্যাপ্রেডস সম্পর্কে পড়ে থাকেন তবে উপরের দৃশ্যটি নতুন কিছু নয় ... এটি ম্যাপ্রেডসের "হ্যালো, ওয়ার্ল্ড"। সুতরাং এখানে একটি বাস্তব বিশ্বের ব্যবহারের কেস (ফেসবুক প্রকৃতপক্ষে নিম্নলিখিতগুলি করতে পারে বা নাও পারে, এটি কেবল একটি উদাহরণ):
ফেসবুকের বন্ধুদের একটি তালিকা রয়েছে (নোট করুন ফেসবুকে বন্ধুরা দ্বি-দিকনির্দেশক জিনিস। আমি যদি আপনার বন্ধু হন তবে আপনি আমার)। তাদের ডিস্কের প্রচুর জায়গাও রয়েছে এবং তারা প্রতিদিন কয়েক মিলিয়ন অনুরোধ পরিবেশন করে। তারা যখন অনুরোধের প্রসেসিংয়ের সময় কমাতে পারে তখন তাদের গণনাগুলি প্রাক-গণনা করার সিদ্ধান্ত নিয়েছে। একটি সাধারণ প্রক্রিয়াজাতকরণের অনুরোধটি হ'ল "আপনার এবং জোতে 230 জন বন্ধু রয়েছে" বৈশিষ্ট্য। আপনি যখন কারও প্রোফাইলে যান, আপনি আপনার বন্ধুদের মধ্যে একটি সাধারণ তালিকা দেখতে পাবেন common এই তালিকাটি ঘন ঘন পরিবর্তিত হয় না তাই আপনি যতবার প্রোফাইলে গিয়েছিলেন তা পুনরায় গণনা করা ব্যর্থ হবে (নিশ্চিত যে আপনি একটি শালীন ক্যাচিং কৌশল ব্যবহার করতে পারেন তবে আমি এই সমস্যার জন্য ম্যাপ্রেডস সম্পর্কে লেখা চালিয়ে যেতে সক্ষম হব না)। আমরা ম্যাপ্রেডস ব্যবহার করব যাতে আমরা সবাইকে গণনা করতে পারি ' দিনের সাধারণ বন্ধুরা একবারে এই ফলাফলগুলি সঞ্চয় করে। পরে এটি কেবল একটি দ্রুত অনুসন্ধান lookup আমরা প্রচুর ডিস্ক পেয়েছি, এটি সস্তা।
ধরুন বন্ধুরা ব্যক্তি -> [বন্ধুদের তালিকা] হিসাবে সঞ্চিত আছে, আমাদের বন্ধুদের তালিকাটি তখন:
A -> B C D
B -> A C D E
C -> A B D E
D -> A B C E
E -> B C D
প্রতিটি লাইন ম্যাপারের পক্ষে যুক্তি হবে। বন্ধুদের তালিকার প্রতিটি বন্ধুর জন্য ম্যাপার একটি মূল-মান জুটি আউটপুট দেবে। কীটি সেই ব্যক্তির সাথে বন্ধু হবে be মানটি হবে বন্ধুদের তালিকা। কীটি বাছাই করা হবে যাতে বন্ধুরা যাতে ক্রমযুক্ত থাকে, ফলে সমস্ত জোড়া বন্ধুদের একই রিডিউসারে যায়। এটি পাঠ্যের সাহায্যে ব্যাখ্যা করা শক্ত, সুতরাং আসুন এটি করা যাক এবং আপনি প্যাটার্নটি দেখতে পারেন কিনা তা দেখুন। সমস্ত ম্যাপারগুলি চলমান শেষ হওয়ার পরে, আপনার এইরকম একটি তালিকা থাকবে:
For map(A -> B C D) :
(A B) -> B C D
(A C) -> B C D
(A D) -> B C D
For map(B -> A C D E) : (Note that A comes before B in the key)
(A B) -> A C D E
(B C) -> A C D E
(B D) -> A C D E
(B E) -> A C D E
For map(C -> A B D E) :
(A C) -> A B D E
(B C) -> A B D E
(C D) -> A B D E
(C E) -> A B D E
For map(D -> A B C E) :
(A D) -> A B C E
(B D) -> A B C E
(C D) -> A B C E
(D E) -> A B C E
And finally for map(E -> B C D):
(B E) -> B C D
(C E) -> B C D
(D E) -> B C D
Before we send these key-value pairs to the reducers, we group them by their keys and get:
(A B) -> (A C D E) (B C D)
(A C) -> (A B D E) (B C D)
(A D) -> (A B C E) (B C D)
(B C) -> (A B D E) (A C D E)
(B D) -> (A B C E) (A C D E)
(B E) -> (A C D E) (B C D)
(C D) -> (A B C E) (A B D E)
(C E) -> (A B D E) (B C D)
(D E) -> (A B C E) (B C D)
প্রতিটি লাইন হ্রাসকারকের পক্ষে যুক্তি হিসাবে পাস করা হবে। হ্রাস ফাংশনটি কেবল মূল্যগুলির তালিকে ছেদ করে এবং ছেদ করার ফলাফলের সাথে একই কী আউটপুট দেয়। উদাহরণস্বরূপ, হ্রাস ((এবি) -> (এসিডিই) (বিসিডি)) আউটপুট করবে (এবি): (সিডি) এবং এর অর্থ হল বন্ধু এ এবং বি এর সাধারণ বন্ধু হিসাবে সি এবং ডি রয়েছে।
হ্রাসের পরে ফলাফল:
(A B) -> (C D)
(A C) -> (B D)
(A D) -> (B C)
(B C) -> (A D E)
(B D) -> (A C E)
(B E) -> (C D)
(C D) -> (A B E)
(C E) -> (B D)
(D E) -> (B C)
এখন যখন ডি বি এর প্রোফাইল দেখুন, আমরা দ্রুত সন্ধান করতে পারি (B D)
এবং দেখতে পাচ্ছি যে তাদের তিনটি বন্ধু মিলে (A C E)
,।