Topology তৈরি এবং Deploy করা

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

466

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


Topology কী?

Topology হলো Storm সিস্টেমের একটি গুরুত্বপূর্ণ উপাদান, যা ডেটা প্রসেসিংয়ের কাঠামো বা গঠন (Structure) হিসেবে কাজ করে। এটি Spouts এবং Bolts এর সংমিশ্রণ, যা ডেটা স্ট্রিমের উপর নির্দিষ্ট কাজগুলো সম্পন্ন করে।

  • Spouts: ডেটা উৎস (Source) থেকে ডেটা সংগ্রহ করে।
  • Bolts: ডেটা প্রক্রিয়া করে (যেমন, ফিল্টারিং, ট্রান্সফরমেশন, অ্যাগ্রিগেশন) এবং পরবর্তী কাজের জন্য ডেটা আউটপুট করে।

Topology তৈরি করার ধাপ

  1. Spout তৈরি করা: Topology তৈরি করার প্রথম ধাপ হল একটি Spout তৈরি করা, যা ডেটা উৎস থেকে ডেটা সংগ্রহ করবে। Spout সাধারণত এমন কোনো সিস্টেম থেকে ডেটা নিয়ে আসে যা লাইভ ডেটা প্রদান করে, যেমন Kafka, RabbitMQ, HDFS, বা API।

    উদাহরণস্বরূপ, একটি স্পাউট তৈরি করা যেতে পারে যা মেসেজ কিউ বা ডেটা স্ট্রীম থেকে ডেটা সংগ্রহ করবে।

    public class MySpout extends BaseRichSpout {
        private SpoutOutputCollector collector;
    
        @Override
        public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
            this.collector = collector;
        }
    
        @Override
        public void nextTuple() {
            collector.emit(new Values("Hello", "World"));
        }
    
        @Override
        public void close() {}
    
        @Override
        public void activate() {}
    
        @Override
        public void deactivate() {}
    }
    
  2. Bolt তৈরি করা: Bolt হলো টপোলজির সেই অংশ যা ডেটার উপর প্রক্রিয়া সম্পন্ন করে। এটি ডেটা ফিল্টার করতে, ট্রান্সফর্ম করতে বা অ্যাগ্রিগেট করতে পারে। এখানে একটি বোল্ট তৈরি করা হয়েছে যা ডেটা প্রিন্ট করবে:

    public class MyBolt extends BaseRichBolt {
        private OutputCollector collector;
    
        @Override
        public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
            this.collector = collector;
        }
    
        @Override
        public void execute(Tuple input) {
            System.out.println(input.getString(0) + " " + input.getString(1));
            collector.ack(input);
        }
    
        @Override
        public void cleanup() {}
    }
    
  3. Topology তৈরি এবং Spout এবং Bolt যুক্ত করা: এখন Spout এবং Bolt তৈরি করা হয়েছে, তাদের একে অপরের সাথে যুক্ত করতে হবে। একটি Topology তৈরি করে, যেখানে Spout এবং Bolt গুলো একটি নির্দিষ্ট গঠন অনুসরণ করবে। Spout ডেটা সংগ্রহ করবে এবং Bolt সেটি প্রক্রিয়া করবে।

    public class MyTopology {
        public static void main(String[] args) throws Exception {
            Config config = new Config();
            LocalCluster cluster = new LocalCluster();
    
            TopologyBuilder builder = new TopologyBuilder();
    
            builder.setSpout("mySpout", new MySpout());
            builder.setBolt("myBolt", new MyBolt()).shuffleGrouping("mySpout");
    
            cluster.submitTopology("MyTopology", config, builder.createTopology());
        }
    }
    

    এখানে shuffleGrouping ব্যবহার করা হয়েছে, যা ডেটাকে বোল্টগুলোর মধ্যে শফল করে প্রেরণ করবে।


Topology Deploy করা

Storm Topology ডেভেলপ করার পরে, এটি বিভিন্ন পরিবেশে ডিপ্লয় (Deploy) করা যেতে পারে, যেমন:

১. LocalCluster (Local Mode)

যখন আপনি Storm-এর প্রাথমিক উন্নয়ন বা পরীক্ষা করছেন, তখন আপনি LocalCluster মোড ব্যবহার করতে পারেন। এটি আপনার লোকাল মেশিনে Storm রান করে এবং একক নোডে টপোলজি প্রক্রিয়া চালায়। উদাহরণস্বরূপ:

LocalCluster cluster = new LocalCluster();
cluster.submitTopology("MyTopology", config, builder.createTopology());

২. Storm Cluster (Cluster Mode)

Storm Cluster হল প্রকৃত পরিবেশে Storm টপোলজি চালানোর জন্য ব্যবহৃত মোড। এটি একটি ডিস্ট্রিবিউটেড পরিবেশে Storm টপোলজি রান করতে সক্ষম, যেখানে একাধিক Nimbus, Supervisor এবং Zookeeper নোড থাকে।

Storm Cluster মোডে টপোলজি ডিপ্লয় করতে নিচের ধাপগুলো অনুসরণ করতে হবে:

  • Submit the topology to the cluster:

    storm jar my-topology.jar my.package.MyTopology
    
  • Config: ডিপ্লয় করার সময় সঠিক কনফিগারেশন দিতে হবে যেমন Nimbus এবং Zookeeper এর ঠিকানা। উদাহরণ:

    Config config = new Config();
    config.put(Config.NIMBUS_HOST, "nimbus.host");
    config.put(Config.ZOOKEEPER_SERVERS, Arrays.asList("zk1", "zk2"));
    

Topology Monitoring

Storm টপোলজির কর্মক্ষমতা মনিটরিং করাও অত্যন্ত গুরুত্বপূর্ণ। Storm UI এর মাধ্যমে আপনি টপোলজির পারফরম্যান্স দেখতে এবং এর কার্যকলাপ মনিটর করতে পারেন। এই UI তে আপনি দেখতে পারবেন:

  • কতটি Tuple প্রক্রিয়া হয়েছে।
  • স্পাউট এবং বোল্টের কর্মক্ষমতা।
  • টাইমআউট, ব্যর্থ টাস্ক ইত্যাদি।

উপসংহার

Topology তৈরি এবং Deploy করা Apache Storm-এর একটি গুরুত্বপূর্ণ অংশ। এটি Spout এবং Bolt এর মাধ্যমে ডেটা সংগ্রহ ও প্রসেসিং পরিচালনা করে এবং Storm Cluster বা LocalCluster এ রান করার মাধ্যমে ডিস্ট্রিবিউটেড ডেটা প্রসেসিং নিশ্চিত করে। Topology তৈরি ও Deploy করার প্রক্রিয়া Storm ব্যবহারকারীদের ডেটা স্ট্রিমিং বিশ্লেষণে বিশেষভাবে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...