Apache Storm একটি রিয়েল-টাইম ডিসট্রিবিউটেড ডেটা প্রসেসিং সিস্টেম, যা ডেটা স্ট্রিমের উপর দ্রুত কাজ করার জন্য ডিজাইন করা হয়েছে। Storm-এ ডেটার প্রক্রিয়া (Processing) করার সময়, ডেটাকে বিভিন্ন Spouts এবং Bolts-এ সঠিকভাবে ভাগ করা প্রয়োজন, যাতে ডেটার প্রক্রিয়াকরণ স্কেলেবল এবং কার্যকরী হয়। Storm-এ Grouping কৌশলগুলোর মধ্যে Shuffle Grouping এবং Fields Grouping বিশেষভাবে গুরুত্বপূর্ণ, যেগুলি ডেটা ভাগ করার পদ্ধতিতে পার্থক্য তৈরি করে।
এই লেখায়, আমরা Shuffle Grouping এবং Fields Grouping এর ব্যবহার এবং কার্যকারিতা সম্পর্কে জানব।
Shuffle Grouping
Shuffle Grouping হলো Storm-এ একটি ডেটা গ্রুপিং কৌশল, যেখানে ডেটা এলোমেলোভাবে (randomly) ভাগ করা হয়। Shuffle Grouping এর মাধ্যমে Storm নিশ্চিত করে যে ডেটা সমানভাবে এবং এলোমেলোভাবে Bolt-গুলোর মধ্যে ভাগ করা হয়।
Shuffle Grouping এর বৈশিষ্ট্য:
- এলোমেলো বিভাজন: Shuffle Grouping ডেটাকে এলোমেলোভাবে ভাগ করে। এটি ডেটার প্রক্রিয়াকরণ ন্যায়সঙ্গতভাবে সব বোল্টে বিতরণ করতে সাহায্য করে।
- একই ফিল্ডে ভাগ না করে: এখানে কোনো নির্দিষ্ট শর্ত বা মানের ভিত্তিতে ডেটা ভাগ করা হয় না, বরং সমস্ত ডেটা এলোমেলোভাবে বোল্টে প্রেরণ করা হয়।
- স্কেলেবল: এটি সিস্টেমের স্কেল এবং পারফরম্যান্স বাড়াতে সাহায্য করে, কারণ ডেটা অনেক বোল্টে সমানভাবে বিতরণ করা হয়, যা দ্রুত কাজ করতে সক্ষম হয়।
Shuffle Grouping এর ব্যবহার:
Shuffle Grouping সাধারণত তখন ব্যবহৃত হয় যখন ডেটা প্রক্রিয়াকরণের জন্য নির্দিষ্ট ফিল্ড বা শর্তে ডেটাকে ভাগ করার প্রয়োজন হয় না এবং আপনি সমানভাবে ডেটা বিতরণ করতে চান।
উদাহরণ:
ধরা যাক, আপনার একটি Stock Price Monitoring টপোলজি আছে, যেখানে স্টক দাম বিভিন্ন বোল্টে এলোমেলোভাবে ভাগ করা হয়েছে:
builder.setBolt("process-price", new PriceProcessingBolt(), 4).shuffleGrouping("stock-price-spout");
এখানে, stock-price-spout থেকে আসা ডেটা PriceProcessingBolt-এ এলোমেলোভাবে বিতরণ করা হবে।
Fields Grouping
Fields Grouping হলো Storm-এ আরেকটি গুরুত্বপূর্ণ গ্রুপিং কৌশল, যেখানে ডেটা নির্দিষ্ট ফিল্ডের মান এর উপর ভিত্তি করে ভাগ করা হয়। এই কৌশলের মাধ্যমে, Storm একটি নির্দিষ্ট ফিল্ডের মানের ভিত্তিতে ডেটাকে একই বোল্টে পাঠায়, যা ডেটার ট্রান্সফরমেশন বা অ্যাগ্রিগেশন করার জন্য সহায়ক।
Fields Grouping এর বৈশিষ্ট্য:
- ফিল্ড ভিত্তিক গ্রুপিং: Fields Grouping একটি নির্দিষ্ট ফিল্ডের মানের উপর ভিত্তি করে ডেটা ভাগ করে। এটি Tuple এর মধ্যে থাকা নির্দিষ্ট একটি ফিল্ডের মানের ভিত্তিতে ডেটাকে গ্রুপ করে।
- নির্দিষ্ট ফিল্ডের সাথে সমন্বয়: Storm এটি এমনভাবে গ্রুপ করে, যাতে একই ধরনের বা মানের ফিল্ডসমূহ একই বোল্টে প্রেরণ করা হয়।
- ডেটার সামঞ্জস্য বজায় রাখা: এটি ডেটার ট্রান্সফরমেশন বা অ্যাগ্রিগেশন করার সময় সহায়ক হতে পারে, যেমন একটি নির্দিষ্ট বিভাগ বা গ্রাহকের জন্য ডেটা একসাথে রাখা।
Fields Grouping এর ব্যবহার:
Fields Grouping ব্যবহৃত হয় যখন আপনাকে নির্দিষ্ট ফিল্ডের ভিত্তিতে ডেটা প্রসেস করতে হয়। যেমন, একটি সেলস টপোলজিতে একটি নির্দিষ্ট Salesperson বা Product Category ভিত্তিতে ডেটা গ্রুপ করা যেতে পারে।
উদাহরণ:
ধরা যাক, একটি টপোলজিতে আমরা Salesperson-এর ভিত্তিতে সেলস ডেটা গ্রুপ করতে চাই:
builder.setBolt("aggregate-sales", new SalesAggregationBolt(), 2).fieldsGrouping("sales-spout", new Fields("salesperson"));
এখানে, Salesperson ফিল্ডের ভিত্তিতে ডেটা SalesAggregationBolt-এ পাঠানো হবে।
Shuffle Grouping এবং Fields Grouping এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Shuffle Grouping | Fields Grouping |
|---|---|---|
| ভাগ করার ভিত্তি | এলোমেলোভাবে (randomly) | নির্দিষ্ট ফিল্ডের মানের উপর ভিত্তি করে |
| ডেটা সমতা | সমস্ত বোল্টে সমানভাবে ডেটা ভাগ করা হয় | একই ফিল্ডের মান থাকা Tuple গুলি একই বোল্টে পাঠানো হয় |
| ব্যবহার | যখন ডেটাকে কোনো নির্দিষ্ট ফিল্ডের ভিত্তিতে ভাগ করার প্রয়োজন নেই | যখন নির্দিষ্ট ফিল্ডের ভিত্তিতে ডেটা গ্রুপ করতে হয় |
| স্কেলেবলিটি | উচ্চ স্কেলেবিলিটি | নির্দিষ্ট ফিল্ডের ভিত্তিতে স্কেলেবল |
| প্রধান বৈশিষ্ট্য | এলোমেলো ডেটা বিতরণ | ডেটার সামঞ্জস্যপূর্ণ বিভাজন (ফিল্ড ভিত্তিক) |
সারাংশ
Shuffle Grouping এবং Fields Grouping হল Storm-এ দুটি গুরুত্বপূর্ণ গ্রুপিং কৌশল, যা ডেটা ভাগ করার পদ্ধতিতে পার্থক্য সৃষ্টি করে। Shuffle Grouping ডেটাকে এলোমেলোভাবে বোল্টগুলোর মধ্যে ভাগ করে, যেখানে Fields Grouping নির্দিষ্ট একটি ফিল্ডের মানের উপর ভিত্তি করে ডেটাকে ভাগ করে। প্রতিটি কৌশলের নিজস্ব ব্যবহার ক্ষেত্র রয়েছে, এবং আপনি আপনার ডেটা প্রসেসিংয়ের প্রয়োজন অনুযায়ী এগুলোর মধ্যে নির্বাচন করতে পারেন। Storm এর মাধ্যমে এই গ্রুপিং কৌশলগুলি ব্যবহার করে ডেটার কার্যকরী এবং স্কেলেবল প্রসেসিং নিশ্চিত করা যায়।
Read more