Topology কী এবং কিভাবে কাজ করে?

Storm Topology এর মৌলিক ধারণা - অ্যাপাচি স্টর্ম (Apache Storm) - Big Data and Analytics

456

Apache Storm এর Topology হলো একটি কনফিগারেশন বা গ্রাফ, যেখানে ডেটা প্রসেসিং-এর কাজ সম্পাদন করা হয়। এটি স্টর্মের মূল একক, যা ডেটা প্রবাহ এবং প্রক্রিয়াকরণ নিয়ন্ত্রণ করে। একটি টপোলজি Storm সিস্টেমের মধ্যে ডেটা স্ট্রিমিং এবং প্রসেসিংয়ের জন্য একটি পরিকল্পনা তৈরি করে, যেখানে বিভিন্ন ধরনের প্রসেসিং ইউনিট একে অপরের সাথে সংযুক্ত থাকে।


Topology এর ধারণা

Topology বলতে Storm-এর মধ্যে একটি ডিস্ট্রিবিউটেড প্রসেসিং ইউনিট বোঝানো হয়, যা Spout এবং Bolt-এর সংমিশ্রণে গঠিত। Spout ডেটা উৎস থেকে ডেটা সংগ্রহ করে এবং Bolt সেই ডেটার উপর প্রক্রিয়াকরণ সম্পন্ন করে। একে একে বিভিন্ন স্পাউট এবং বোল্ট ডেটা স্ট্রিমে প্রসেসিং কার্যক্রম সম্পন্ন করে এবং এই সংমিশ্রণ টপোলজি গঠন করে।

  • Spout (স্পাউট): ডেটা প্রবাহের উৎস। এটি ডেটা সংগ্রহ করে এবং বোল্টে পাঠায়।
  • Bolt (বোল্ট): ডেটা প্রক্রিয়াকরণ ইউনিট। এটি ডেটার উপর বিভিন্ন কার্যক্রম (যেমন ফিল্টারিং, অ্যাগ্রিগেশন, ট্রান্সফরমেশন) সম্পাদন করে।

Storm এর Topology একটি গ্রাফের মতো যেখানে স্পাউট ও বোল্ট গুলি একে অপরের সাথে সংযুক্ত থাকে। প্রতিটি স্পাউট বা বোল্ট একটি নোড এবং তাদের মধ্যে সংযোগ একটি এজ বা লাইনের মতো কাজ করে।


Topology কিভাবে কাজ করে?

Storm-এ একটি টপোলজি কাজ শুরু হয় যখন একটি Spout ডেটা সংগ্রহ করে এবং সেটি পরবর্তী Bolt-এ পাঠায়। বোল্ট সেই ডেটার উপর কিছু কার্যক্রম (যেমন ফিল্টার, ট্রান্সফরমেশন বা অ্যাগ্রিগেশন) চালায় এবং নতুন Tuple তৈরি করে। এই প্রসেসিং চেইনটি একাধিক বোল্টের মধ্যে সম্পন্ন হতে পারে।

কাজের প্রক্রিয়া

  1. ডেটা সংগ্রহ (Spout): প্রথমে, Spout ডেটা উৎস থেকে ডেটা সংগ্রহ করে। এটি সাধারণত একধরনের ডেটা স্ট্রিম বা সোর্স থেকে ডেটা নিয়ে আসে, যেমন Kafka বা ফাইল সিস্টেম।
  2. ডেটা প্রসেসিং (Bolt): এরপর, Bolt সেই ডেটার উপর বিভিন্ন কাজ যেমন ফিল্টারিং, অ্যাগ্রিগেশন, বা অন্যান্য ট্রান্সফরমেশন প্রক্রিয়া সম্পন্ন করে। বোল্টগুলি বিভিন্ন পর্যায়ে ডেটা প্রক্রিয়া করতে পারে এবং এর ফলাফল হিসেবে নতুন Tuple তৈরি করতে পারে।
  3. ডেটা ফেরত (Bolt বা Spout): প্রক্রিয়াকৃত ডেটা আবার নতুন টপোলজি ইউনিট বা বোল্টে পাঠানো হয়। প্রক্রিয়াকরণের শেষে, এই ডেটা চূড়ান্ত আউটপুট তৈরি করতে পারে অথবা পরবর্তী পর্যায়ে পৌঁছায়।
  4. রিয়েল-টাইম প্রক্রিয়াকরণ: টপোলজি স্ট্রিমের মাধ্যমে রিয়েল-টাইমে ডেটা প্রক্রিয়া করা হয়। স্পাউট এবং বোল্টগুলি একটি সিস্টেমে একসাথে কাজ করে, যাতে ডেটা অবিলম্বে প্রক্রিয়া করা যায়।

Topology এর মূল উপাদান

Storm টপোলজি দুটি প্রধান উপাদান নিয়ে গঠিত:

  1. Spout (স্পাউট):
    • স্পাউট হলো ডেটার উৎস (source)।
    • এটি ডেটা সংগ্রহ করে এবং সেই ডেটা Storm টপোলজির বোল্টে প্রেরণ করে।
    • স্পাউট সাধারণত এক বা একাধিক মেসেজ কিউ, সোসাল মিডিয়া স্ট্রীম, বা অন্যান্য ডেটা সোর্স থেকে ডেটা আনে।
  2. Bolt (বোল্ট):
    • বোল্ট হলো ডেটা প্রসেসিং ইউনিট। এটি ডেটার উপর বিভিন্ন কার্যক্রম সম্পন্ন করে, যেমন ফিল্টারিং, অ্যাগ্রিগেশন, ট্রান্সফরমেশন বা অন্য কোনো কাজ।
    • একাধিক বোল্ট একসাথে কাজ করে ডেটা প্রক্রিয়া করে এবং এটি Storm টপোলজির একটি গুরুত্বপূর্ণ অংশ।

Topology তৈরির প্রক্রিয়া

Storm টপোলজি তৈরি করার জন্য Java বা Clojure ভাষায় কোড লিখতে হয়। একটি টপোলজি তৈরি করতে Storm API ব্যবহার করতে হবে। এটি সাধারণত এইভাবে কাজ করে:

  1. Spout এবং Bolt তৈরি করা: প্রথমে স্পাউট এবং বোল্ট ক্লাস তৈরি করা হয়, যেখানে স্পাউট ডেটা উৎস থেকে ডেটা সংগ্রহ করবে এবং বোল্ট ডেটা প্রক্রিয়া করবে।
  2. টপোলজি সংজ্ঞায়িত করা: টপোলজি ক্লাসে স্পাউট এবং বোল্টের সম্পর্ক সংজ্ঞায়িত করা হয়। এখানে আমরা স্পাউট থেকে বোল্টের দিকে ডেটা প্রেরণ এবং বোল্টের মধ্যে সম্পর্ক স্থাপন করি।
  3. টপোলজি চালানো: শেষমেশ, টপোলজি চালানো হয় এবং Storm সিস্টেমের মধ্যে প্রক্রিয়াকরণ শুরু হয়।

উদাহরণ

ধরা যাক, একটি সাধারণ Word Count টপোলজি তৈরি করতে হবে। এখানে আমরা একটি স্পাউট থেকে টেক্সট ডেটা সংগ্রহ করব এবং একটি বোল্টে সেই ডেটা বিশ্লেষণ করে শব্দের সংখ্যা বের করব।

public class WordCountTopology {
    public static void main(String[] args) throws Exception {
        // Create the Spout and Bolt classes
        Spout wordSpout = new WordSpout();
        Bolt countBolt = new CountBolt();

        // Define the Topology
        TopologyBuilder builder = new TopologyBuilder();
        builder.setSpout("word-spout", wordSpout);
        builder.setBolt("count-bolt", countBolt).shuffleGrouping("word-spout");

        // Submit the Topology
        Config conf = new Config();
        StormSubmitter.submitTopology("WordCountTopology", conf, builder.createTopology());
    }
}

এখানে, WordSpout টেক্সট ডেটা সংগ্রহ করবে এবং CountBolt সেই ডেটার উপর অ্যাগ্রিগেশন (শব্দ গোনার) কাজ করবে।


Topology এর সুবিধা

  1. রিয়েল-টাইম প্রসেসিং: Storm টপোলজি রিয়েল-টাইমে ডেটা প্রসেসিং করতে সক্ষম, যা একাধিক অ্যাপ্লিকেশন যেমন লাইভ ডেটা বিশ্লেষণ, সিকিউরিটি মনিটরিং ইত্যাদিতে ব্যবহৃত হয়।
  2. ডিস্ট্রিবিউটেড: Storm টপোলজি ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে স্কেল হতে সক্ষম। এটি বড় ডেটা সেট এবং ভারী লোডের ক্ষেত্রে কার্যকরী।
  3. ফল্ট টলারেন্স: Storm টপোলজি ফল্ট টলারেন্ট, যা সিস্টেমের নোড ব্যর্থ হলেও পুনরায় টাস্ক চালাতে সক্ষম।

সারাংশ

Topology হলো Apache Storm-এর মধ্যে ডেটা প্রক্রিয়াকরণের মূল কাঠামো। এটি স্পাউট এবং বোল্টের মাধ্যমে ডেটা সংগ্রহ এবং প্রক্রিয়াকরণ সম্পন্ন করে। Storm টপোলজি একটি ডিস্ট্রিবিউটেড এবং স্কেলযোগ্য পদ্ধতিতে রিয়েল-টাইম ডেটা প্রসেসিং পরিচালনা করে, যা বড় ডেটা সিস্টেমের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...