Processors এর ভূমিকা এবং ব্যবহার

Java Technologies - অ্যাপাচি নিফাই (Apache NiFi)
179
179

Apache NiFi একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট টুল যা ডেটার প্রসেসিং এবং ট্রান্সফারের জন্য ব্যবহৃত হয়। NiFi এর মূল উপাদানগুলির মধ্যে Processors গুরুত্বপূর্ণ ভূমিকা পালন করে। একটি Processor হল একটি ইউনিট যা নির্দিষ্ট কাজ সম্পাদন করে, যেমন ডেটা সংগ্রহ, রূপান্তর বা ট্রান্সফার। NiFi এর ব্যবহারকারীরা সহজে গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) এর মাধ্যমে বিভিন্ন Processor যোগ, কনফিগার এবং কাস্টমাইজ করতে পারেন।


Processors এর মৌলিক ধারণা

Processors হল NiFi এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ উপাদান যা ডেটা ফ্লো তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। এগুলি বিভিন্ন ডেটা প্রসেসিং কাজ সম্পাদন করে, যেমন:

  • ডেটা গ্রহণ (Data Ingestion)
  • ডেটা রূপান্তর (Data Transformation)
  • ডেটা সংরক্ষণ (Data Storage)
  • ডেটা ট্রান্সফার (Data Transfer)

প্রতিটি Processor একটি নির্দিষ্ট কাজ করে এবং এটি অন্যান্য Processors এর সাথে সংযুক্ত হয়ে ডেটা ফ্লো তৈরি করে।


Processor কনফিগারেশন

প্রতিটি Processor কনফিগার করার সময় কয়েকটি মৌলিক ধারণা থাকে:

১. Properties (প্রপার্টিজ)

  • Processor কনফিগার করার জন্য বিভিন্ন প্রপার্টি থাকে, যা নির্দিষ্ট ফাংশনালিটি সংজ্ঞায়িত করে। উদাহরণস্বরূপ, GetFile Processor এর জন্য ফাইলের ডিরেক্টরি এবং ফাইল নাম কনফিগার করা যায়।

২. Relationships (সম্পর্ক)

  • প্রতিটি Processor তার আউটপুট সম্পর্কের মাধ্যমে অন্য Processor এর সাথে সংযুক্ত হয়। এই সম্পর্কগুলির মাধ্যমে ডেটা এক Processor থেকে অন্য Processor এ পাঠানো হয়।

৩. Scheduling (সূচিপত্র)

  • Processor গুলি কিভাবে এবং কত সময় পর পর চালানো হবে তা নির্ধারণ করতে Scheduling সেটিংস ব্যবহার করা হয়।

Apache NiFi তে কিছু সাধারণ Processor এবং তাদের ব্যবহার

১. GetFile Processor

  • কাজ: ফাইল সিস্টেম থেকে ফাইল সংগ্রহ করা।
  • ব্যবহার: ফাইল সিস্টেমের নির্দিষ্ট ডিরেক্টরি থেকে ফাইলগুলি গ্রহণ করে পরবর্তী প্রসেসিংয়ের জন্য প্রস্তুত করা।

কনফিগারেশন:

  • Input Directory: ফাইল সংগ্রহের জন্য উৎস ডিরেক্টরি।
  • File Filter: ফাইলের নামের প্যাটার্ন নির্ধারণ করা, যেমন .txt ফাইল।

২. PutFile Processor

  • কাজ: ডেটা বা ফাইল একটি নির্দিষ্ট ডিরেক্টরিতে লেখা।
  • ব্যবহার: প্রসেসিংয়ের পর ডেটা নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করা।

কনফিগারেশন:

  • Output Directory: ফাইলটি কোথায় সংরক্ষণ করা হবে।
  • Conflict Resolution Strategy: যদি একটি ফাইল ইতোমধ্যে উপস্থিত থাকে তবে কিভাবে তা পরিচালনা করা হবে।

৩. LogAttribute Processor

  • কাজ: ডেটার গুণাবলী (Attributes) লগ করা।
  • ব্যবহার: ডেটার প্রসেসিংয়ের সময়, তার গুণাবলী বা metadata (যেমন ফাইলের আকার, টাইমস্ট্যাম্প) লগ করা হয়, যা ডিবাগিং বা মনিটরিং এর জন্য উপকারী।

৪. RouteOnAttribute Processor

  • কাজ: নির্দিষ্ট অ্যাট্রিবিউটের মানের ভিত্তিতে ডেটা বিভিন্ন পথে সরানো।
  • ব্যবহার: ডেটার নির্দিষ্ট অ্যাট্রিবিউট অনুযায়ী, এটি বিভিন্ন রিলেশনশিপ (পথ) এ সরানো হয়। উদাহরণস্বরূপ, যদি ডেটার "type" অ্যাট্রিবিউট "text" হয়, তাহলে একটি রিলেশনশিপে যাবে, আর যদি "image" হয় তাহলে অন্য রিলেশনশিপে যাবে।

৫. ExecuteSQL Processor

  • কাজ: SQL ক্যোয়ারি চালানো।
  • ব্যবহার: কোনো ডেটাবেস থেকে ডেটা পাওয়ার জন্য SQL ক্যোয়ারি চালানো।

কনফিগারেশন:

  • Database Connection Pooling Service: ডেটাবেস সংযোগ স্থাপন করতে হবে।
  • SQL Query: যে SQL ক্যোয়ারিটি চালানো হবে।

Processor গুলি কীভাবে কাজ করে?

NiFi এ Processors সাধারণত একে অপরের সাথে সংযুক্ত হয় একটি ডেটা ফ্লো তৈরি করতে। যখন একটি Processor কোনো কাজ সম্পাদন করে, এটি আউটপুট হিসাবে একটি FlowFile তৈরি করে এবং এটি পরবর্তী Processor এ প্রেরণ করে।

উদাহরণ:

  1. GetFile Processor ফাইল সংগ্রহ করবে এবং একটি FlowFile তৈরি করবে।
  2. এই FlowFile এরপর LogAttribute Processor এ যাবে, যেখানে এর গুণাবলী লগ করা হবে।
  3. পরবর্তীতে, এটি PutFile Processor এ যাবে এবং একটি নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করা হবে।

Processor এর ব্যবহার ক্ষেত্র

  • ডেটা সংগ্রহ: বিভিন্ন উৎস থেকে ডেটা সংগ্রহ করা, যেমন ফাইল সিস্টেম, ডেটাবেস, বা HTTP সার্ভার।
  • ডেটা রূপান্তর: ডেটাকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তর করা, যেমন JSON থেকে XML।
  • ডেটা বিশ্লেষণ: ডেটার উপর নির্দিষ্ট বিশ্লেষণ করা, যেমন ডেটার গুণাবলী বা অবস্থা যাচাই করা।
  • ডেটা ট্রান্সফার: এক সিস্টেম থেকে অন্য সিস্টেমে ডেটা স্থানান্তর করা, যেমন ডেটাবেসে ডেটা আপলোড করা।

সারাংশ

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


common.content_added_by

Processors কি এবং কিভাবে কাজ করে

149
149

অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা প্রোসেসিং এবং ফ্লো ম্যানেজমেন্ট টুল যা ব্যবহারকারীদের ডেটা ফ্লো ডিজাইন, ম্যানেজ এবং অটোমেট করতে সহায়ক। নিফাই-এ প্রোসেসর (Processor) হল একটি মৌলিক উপাদান যা ডেটা প্রোসেসিং, ট্রান্সফর্মেশন এবং স্থানান্তর কাজগুলোর জন্য ব্যবহৃত হয়। প্রোসেসর নিফাইয়ের প্রধান কার্যক্ষমতা, যেখানে ডেটা ফ্লো পরিচালিত হয় এবং এক প্রোসেসর থেকে অন্য প্রোসেসরে ডেটা প্রবাহিত হয়।


Processors কি?

প্রোসেসর (Processor) হলো অ্যাপাচি নিফাইয়ের একটি মৌলিক কম্পোনেন্ট, যা ডেটা ফ্লো পরিচালনার জন্য ব্যবহৃত হয়। প্রতিটি প্রোসেসর নির্দিষ্ট কার্যকলাপ সম্পাদন করে, যেমন ডেটা সংগ্রহ করা, ডেটা ফিল্টার করা, ট্রান্সফর্মেশন, অথবা ডেটা স্থানান্তর করা। প্রোসেসরগুলি একসাথে কাজ করে একটি ডেটা ফ্লো তৈরি করতে, যেখানে এক প্রোসেসরের আউটপুট পরবর্তী প্রোসেসরের ইনপুট হয়ে থাকে।


Processors এর কাজ কীভাবে হয়?

১. ডেটা ইনপুট (Data Input)

প্রোসেসর সাধারণত এক বা একাধিক ইনপুট গ্রহণ করে। উদাহরণস্বরূপ, একটি প্রোসেসর ফাইল থেকে ডেটা পড়তে পারে, অথবা একটি API থেকে ডেটা গ্রহণ করতে পারে।

২. ডেটা প্রোসেসিং (Data Processing)

ডেটা ইনপুট নেওয়ার পর, প্রোসেসরটি তা প্রক্রিয়া করে। এটি বিভিন্ন কাজ করতে পারে, যেমন:

  • ডেটা ফিল্টার করা
  • ডেটা রূপান্তর করা (যেমন JSON থেকে XML)
  • ডেটা বিশ্লেষণ করা
  • ডেটার উপর কিছু গণনা বা ফিল্টারিং প্রয়োগ করা

৩. ডেটা আউটপুট (Data Output)

প্রোসেসরের আউটপুটটি এক বা একাধিক পরবর্তী প্রোসেসরের ইনপুট হিসেবে চলে। এটি একটি নতুন ফাইল তৈরি করতে পারে, একটি ডাটাবেসে তথ্য সঞ্চয় করতে পারে, অথবা অন্য একটি সিস্টেমে তথ্য পাঠাতে পারে। প্রোসেসরের আউটপুট অনেক সময় ফাইল, ডেটাবেস, সার্ভার, অথবা API হতে পারে।


Processors এর ধরন

অ্যাপাচি নিফাইতে বিভিন্ন ধরনের প্রোসেসর উপলব্ধ। নিচে কিছু সাধারণ প্রোসেসরের উদাহরণ দেওয়া হলো:

১. GetFile Processor

  • এটি ফাইল সিস্টেম থেকে ফাইল পড়ে।
  • ইনপুট হিসেবে ফাইল পাথ নেয় এবং ফাইলের বিষয়বস্তুকে প্রোসেসিং এর জন্য পাঠায়।

২. PutFile Processor

  • এটি প্রোসেস করা ডেটা ফাইল হিসেবে স্টোর করে।
  • আউটপুট হিসেবে একটি ফাইল তৈরি করে এবং তা নির্দিষ্ট লোকেশনে জমা দেয়।

৩. ExecuteSQL Processor

  • এটি একটি SQL কোয়েরি চালায় এবং ডাটাবেস থেকে ডেটা বের করে আনে।
  • ইনপুট হিসেবে একটি SQL কোয়েরি গ্রহণ করে এবং ডাটাবেসের রেকর্ড আউটপুট হিসেবে প্রদান করে।

৪. RouteOnAttribute Processor

  • এটি ডেটার ওপর নির্দিষ্ট শর্তের ভিত্তিতে ডেটা রুট করে।
  • ডেটার অ্যাট্রিবিউটস (যেমন নাম, তারিখ) ব্যবহার করে সিদ্ধান্ত নেয় কোন প্রোসেসরে ডেটা যাবে।

৫. TransformXML Processor

  • এটি XML ডেটা ট্রান্সফর্ম করে (যেমন XSLT ব্যবহার করে)।
  • ইনপুট হিসেবে XML ডেটা নিয়ে তা নতুন ফর্ম্যাটে রূপান্তরিত করে।

Processors ব্যবহার করে ডেটা ফ্লো ডিজাইন করা

নিফাইতে ডেটা ফ্লো ডিজাইন করার সময়, প্রোসেসরগুলি একে অপরের সাথে সংযুক্ত করা হয় এবং একটি ডেটা পিপলাইনে রূপান্তরিত হয়। এই প্রোসেসরের সাথে কনফিগারেশন সেটিংস, ট্রিগার এবং কন্ডিশনাল লজিক ব্যবহৃত হতে পারে।

উদাহরণ: ডেটা ফ্লো ডিজাইন

  1. GetFile প্রোসেসর ব্যবহার করে ফাইল পড়া।
  2. FilterRecord প্রোসেসর ব্যবহার করে ডেটা ফিল্টার করা।
  3. PutDatabaseRecord প্রোসেসর ব্যবহার করে ডেটাবেসে সঞ্চয় করা।

এই ধরনের একাধিক প্রোসেসরকে সংযুক্ত করে একটি পূর্ণাঙ্গ ডেটা ফ্লো তৈরি করা হয় যা নির্দিষ্ট কার্যক্রম বাস্তবায়ন করে।


সারাংশ

অ্যাপাচি নিফাইতে প্রোসেসরগুলি ডেটা প্রোসেসিং এর জন্য মূল উপাদান হিসেবে কাজ করে। প্রতিটি প্রোসেসর একটি নির্দিষ্ট কাজ সম্পাদন করে, যেমন ডেটা সংগ্রহ, ট্রান্সফর্মেশন বা স্থানান্তর। প্রোসেসরগুলি একে অপরের সাথে সংযুক্ত হয়ে ডেটা ফ্লো তৈরি করে এবং নিফাইতে শক্তিশালী ডেটা ইন্টিগ্রেশন এবং অটোমেশন কার্যক্রম বাস্তবায়িত হয়।


common.content_added_by

Built-in Processors এর তালিকা (GetFile, PutFile, LogAttribute ইত্যাদি)

159
159

অ্যাপাচি নিফাই (Apache NiFi) একাধিক বিল্ট-ইন প্রোসেসর (Processors) প্রদান করে, যা ডেটা প্রবাহকে পরিচালনা এবং প্রক্রিয়া করতে ব্যবহৃত হয়। এই প্রোসেসরগুলি ডেটা সংগ্রহ, ট্রান্সফরমেশন, রাউটিং এবং ডেটা সিস্টেমের মধ্যে আদান-প্রদান করতে সাহায্য করে। নিফাই প্রোসেসরগুলো ব্যবহার করে আপনি সহজে ডেটা ফ্লো তৈরি এবং কাস্টমাইজ করতে পারেন।

এখানে কিছু গুরুত্বপূর্ণ বিল্ট-ইন প্রোসেসরের তালিকা দেওয়া হল:

১. GetFile

GetFile প্রোসেসরটি একটি ডিরেক্টরি থেকে ফাইল সংগ্রহ করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট ডিরেক্টরি মনিটর করে এবং নতুন ফাইল সনাক্ত হলে সেগুলি নেয়।

  • ব্যবহার: ফাইল সিস্টেম থেকে ডেটা সংগ্রহ করা।
  • কনফিগারেশন: আপনি যে ডিরেক্টরি থেকে ফাইল সংগ্রহ করতে চান তা কনফিগার করতে হবে।
এই প্রোসেসরটি একটি ডিরেক্টরি থেকে ফাইল নেবে এবং এগুলি ফ্লোফাইলে রূপান্তর করবে।

২. PutFile

PutFile প্রোসেসরটি একটি ফাইল সিস্টেমে ডেটা লিখতে ব্যবহৃত হয়। এটি ডেটা (ফ্লোফাইল) গন্তব্য ফোল্ডারে লিখে।

  • ব্যবহার: ফ্লোফাইল থেকে ডেটা ফাইল সিস্টেমে সেভ করা।
  • কনফিগারেশন: আপনি যে ডিরেক্টরিতে ফাইল লিখতে চান তা নির্ধারণ করতে হবে।
এই প্রোসেসরটি ফ্লোফাইলকে নির্দিষ্ট ডিরেক্টরিতে ফাইল হিসেবে সেভ করবে।

৩. LogAttribute

LogAttribute প্রোসেসরটি ফ্লোফাইলের সব অ্যাট্রিবিউট লগ করতে ব্যবহৃত হয়। এটি সাধারণত ডিবাগিং বা ডেটা বিশ্লেষণের জন্য ব্যবহৃত হয়।

  • ব্যবহার: ফ্লোফাইলের অ্যাট্রিবিউট লগ করা।
  • কনফিগারেশন: আপনি লগ লেভেল (INFO, DEBUG, ERROR) এবং লগ ফরম্যাট কনফিগার করতে পারেন।
এই প্রোসেসরটি ফ্লোফাইলের অ্যাট্রিবিউট এবং অন্যান্য তথ্য লগ ফাইলের মধ্যে রেকর্ড করবে।

৪. PutDatabaseRecord

PutDatabaseRecord প্রোসেসরটি ডেটাবেসে রেকর্ড যুক্ত করতে ব্যবহৃত হয়। এটি ডেটাবেসে রেকর্ড ইনসার্ট, আপডেট বা ডিলিট করতে ব্যবহৃত হয়।

  • ব্যবহার: ডেটাবেসে ডেটা ইনসার্ট বা আপডেট করা।
  • কনফিগারেশন: ডেটাবেস কানেকশন পুল এবং SQL কুয়েরি কনফিগার করতে হবে।
এই প্রোসেসরটি ফ্লোফাইল থেকে রেকর্ড নিয়ে একটি ডেটাবেস টেবিলে সন্নিবেশ বা আপডেট করবে।

৫. GetHTTP

GetHTTP প্রোসেসরটি HTTP রিকুয়েস্ট তৈরি করে এবং একটি নির্দিষ্ট URL থেকে ডেটা সংগ্রহ করে। এটি সাধারণত ওয়েব সার্ভিস বা REST API থেকে ডেটা ফেচ করতে ব্যবহৃত হয়।

  • ব্যবহার: HTTP GET রিকুয়েস্ট ব্যবহার করে ডেটা সংগ্রহ।
  • কনফিগারেশন: API এন্ডপয়েন্ট এবং প্রয়োজনীয় হেডার কনফিগার করতে হবে।
এই প্রোসেসরটি HTTP GET রিকুয়েস্ট পাঠিয়ে নির্দিষ্ট URL থেকে ডেটা সংগ্রহ করবে।

৬. PutHTTP

PutHTTP প্রোসেসরটি HTTP PUT রিকুয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়। এটি ডেটা একটি নির্দিষ্ট সার্ভারে আপলোড করতে সাহায্য করে।

  • ব্যবহার: HTTP PUT রিকুয়েস্ট ব্যবহার করে ডেটা আপলোড করা।
  • কনফিগারেশন: সার্ভারের URL এবং সংযুক্তির জন্য প্রয়োজনীয় হেডার কনফিগার করতে হবে।
এই প্রোসেসরটি একটি HTTP PUT রিকুয়েস্টের মাধ্যমে ডেটা পাঠাবে।

৭. ConvertRecord

ConvertRecord প্রোসেসরটি একটি রেকর্ড ফরম্যাট থেকে অন্য একটি রেকর্ড ফরম্যাটে ডেটা রূপান্তর করতে ব্যবহৃত হয়। এটি সাধারণত JSON থেকে XML অথবা CSV থেকে JSON ফরম্যাটে রূপান্তর করার জন্য ব্যবহৃত হয়।

  • ব্যবহার: ডেটা ফরম্যাট রূপান্তর।
  • কনফিগারেশন: ইনপুট এবং আউটপুট রেকর্ডের ফরম্যাট কনফিগার করতে হবে।
এই প্রোসেসরটি একটি ডেটা ফরম্যাট থেকে অন্য ফরম্যাটে রূপান্তর করবে, যেমন JSON থেকে CSV।

৮. RouteOnAttribute

RouteOnAttribute প্রোসেসরটি ফ্লোফাইলের অ্যাট্রিবিউটের ভিত্তিতে ডেটা রাউট করতে ব্যবহৃত হয়। এটি ডেটার নির্দিষ্ট গুণাবলী অনুসারে বিভিন্ন রাউটে ডেটা প্রেরণ করতে সাহায্য করে।

  • ব্যবহার: অ্যাট্রিবিউটের ভিত্তিতে ডেটা রাউটিং।
  • কনফিগারেশন: রাউটিং শর্ত এবং অ্যাট্রিবিউট নির্ধারণ করতে হবে।
এই প্রোসেসরটি একটি নির্দিষ্ট অ্যাট্রিবিউটের ভিত্তিতে ডেটাকে বিভিন্ন রাউটে রিডাইরেক্ট করবে।

৯. ExecuteScript

ExecuteScript প্রোসেসরটি একটি স্ক্রিপ্ট চালাতে ব্যবহৃত হয়। এটি জাভা, জাভাস্ক্রিপ্ট, পাইটন ইত্যাদি স্ক্রিপ্টিং ভাষার মাধ্যমে ডেটা প্রক্রিয়া করতে সক্ষম।

  • ব্যবহার: স্ক্রিপ্ট চালানো।
  • কনফিগারেশন: স্ক্রিপ্ট কোড এবং প্রয়োজনীয় ভাষা কনফিগার করতে হবে।
এই প্রোসেসরটি স্ক্রিপ্ট রান করে ডেটা প্রোসেসিং অথবা ট্রান্সফরমেশন করতে সাহায্য করবে।

১০. MergeContent

MergeContent প্রোসেসরটি একাধিক ফ্লোফাইলের ডেটা একত্রিত করতে ব্যবহৃত হয়। এটি অনেক ফাইলকে একত্রিত করে একটি ফাইল তৈরি করতে সাহায্য করে।

  • ব্যবহার: একাধিক ফাইল মার্জ করা।
  • কনফিগারেশন: মার্জিং পদ্ধতি এবং প্যাটার্ন নির্ধারণ করতে হবে।
এই প্রোসেসরটি একাধিক ফ্লোফাইলের ডেটা একত্রিত করে একটি একক ফাইল তৈরি করবে।

সারাংশ

অ্যাপাচি নিফাই এর বিল্ট-ইন প্রোসেসরগুলি ডেটা প্রবাহ, ট্রান্সফরমেশন, রাউটিং এবং বিভিন্ন ডেটা উৎস ও গন্তব্যের মধ্যে ইন্টিগ্রেশন সহজ করে তোলে। প্রতিটি প্রোসেসর নির্দিষ্ট কাজের জন্য তৈরি এবং কাস্টমাইজ করা যায়, যা ডেটার প্রক্রিয়া এবং পরিচালনা প্রক্রিয়াকে আরো সহজ এবং দক্ষ করে তোলে।

common.content_added_by

Custom Processor তৈরি করা

125
125

অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন টুল যা বিভিন্ন ডেটা প্রসেসিং অপারেশনকে সহজ করে। তবে, কখনও কখনও আপনার নির্দিষ্ট প্রয়োজনের জন্য একটি কাস্টম প্রোসেসর তৈরি করার প্রয়োজন হতে পারে। নিফাই কাস্টম প্রোসেসর তৈরি করা একটি মৌলিক পদ্ধতি, যা Java প্রোগ্রামিং ভাষায় কোডিং করতে হয়। এই প্রোসেসরটি ডেটা প্রক্রিয়া এবং ট্রান্সফর্মেশন কাস্টমাইজ করতে সহায়ক হতে পারে।


কাস্টম প্রোসেসর তৈরি করার জন্য প্রস্তুতি

  1. নিফাই ডেভেলপমেন্ট পরিবেশ প্রস্তুত করা
    প্রথমে আপনাকে নিফাই ডেভেলপমেন্ট পরিবেশ প্রস্তুত করতে হবে। এজন্য আপনাকে Java SDK, Apache Maven এবং নিফাই জার ফাইল ইনস্টল করতে হবে।
  2. Maven প্রকল্প তৈরি
    কাস্টম প্রোসেসর তৈরি করতে Maven একটি ভালো টুল, যা নির্ভরতা এবং বিল্ড ম্যানেজমেন্টে সহায়ক। আপনাকে একটি Maven প্রকল্প তৈরি করতে হবে। pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:

    <dependencies>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-api</artifactId>
            <version>1.x.x</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-processor-api</artifactId>
            <version>1.x.x</version>
        </dependency>
    </dependencies>
    
  3. Java ক্লাস তৈরি করা
    nifi-processor-api ব্যবহার করে কাস্টম প্রোসেসরের জন্য একটি Java ক্লাস তৈরি করতে হবে। এই ক্লাসে প্রোসেসরের কার্যক্রম এবং ইনপুট আউটপুট ব্যবস্থাপনা করতে হবে।

কাস্টম প্রোসেসর তৈরি করার ধাপ

Step 1: প্রোসেসর ক্লাস তৈরি করা

প্রথমে একটি Java ক্লাস তৈরি করুন যা AbstractProcessor ক্লাস থেকে উত্তরাধিকারী হবে। এই ক্লাসটি আপনার প্রোসেসরের বেস ফাংশনালিটি সরবরাহ করবে। নিচে একটি কাস্টম প্রোসেসরের উদাহরণ:

import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.annotation.lifecycle.OnScheduled;

public class CustomProcessor extends AbstractProcessor {

    public static final Relationship SUCCESS = new Relationship.Builder()
            .name("success")
            .build();

    @Override
    public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
        // FlowFile গ্রহণ করা
        FlowFile flowFile = session.get();
        if (flowFile == null) {
            return;
        }

        // ডেটা প্রক্রিয়া করার জন্য কোড যুক্ত করুন
        // উদাহরণস্বরূপ, FlowFile এর কন্টেন্ট ম্যানিপুলেট করা

        // FlowFile রিসোর্স ফিরিয়ে দেওয়া
        session.transfer(flowFile, SUCCESS);
    }
}

এই উদাহরণে, onTrigger মেথডে FlowFile গ্রহণ করা হয় এবং কিছু প্রক্রিয়া করার পরে সফলভাবে SUCCESS রিলেশনশিপে স্থানান্তর করা হয়।


Step 2: প্রোসেসর ডেফিনিশন তৈরি করা

প্রোসেসর কনফিগারেশন এবং ডিফাইনেশনকে উপযুক্তভাবে সেট করতে আপনাকে @Trigger এবং অন্যান্য এনোটেশন ব্যবহার করতে হবে। এটি আপনার প্রোসেসরের জন্য ইনপুট এবং আউটপুট কনফিগারেশন নির্ধারণ করে।

import org.apache.nifi.processor.annotation.Tags;
import org.apache.nifi.processor.annotation.InputRequirement;
import org.apache.nifi.processor.annotation.CapabilityDescription;

@Tags({"custom", "processor"})
@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED)
@CapabilityDescription("This is a custom processor to perform custom actions.")
public class CustomProcessor extends AbstractProcessor {
    // Class implementation here...
}

এখানে, @Tags এবং @CapabilityDescription ব্যবহার করে আপনার প্রোসেসরের জন্য মেটাডেটা যোগ করা হচ্ছে।


Step 3: প্রোসেসর বিল্ড এবং প্যাকেজ করা

একবার আপনার কাস্টম প্রোসেসর কোড লেখা হয়ে গেলে, Maven ব্যবহার করে এটি বিল্ড এবং প্যাকেজ করতে হবে। নিচে একটি সাধারণ Maven কমান্ড:

mvn clean install

এই কমান্ডটি আপনার প্রোজেক্টটি বিল্ড করবে এবং target/ ফোল্ডারে JAR ফাইল তৈরি করবে।


Step 4: প্রোসেসর নিফাইতে ডিপ্লয় করা

একবার JAR ফাইল তৈরি হলে, এটি নিফাই ইনস্টলেশনের lib ডিরেক্টরিতে স্থানান্তর করতে হবে।

cp target/custom-processor-1.0.jar /opt/nifi/lib/

এরপর, নিফাই সার্ভিস পুনরায় চালু করুন:

./bin/nifi.sh restart

এখন আপনি নিফাই UI তে গিয়ে আপনার কাস্টম প্রোসেসর দেখতে পারবেন এবং এটি ব্যবহার করতে পারবেন।


কাস্টম প্রোসেসরের উন্নত কনফিগারেশন

  1. প্রপার্টি কনফিগারেশন
    কাস্টম প্রোসেসর তৈরি করার সময় আপনাকে ব্যবহারকারীর কনফিগারযোগ্য প্রপার্টি নির্ধারণ করতে হবে। এই প্রপার্টিগুলি @InputRequirement এবং @Property এনোটেশন ব্যবহার করে কনফিগার করা যেতে পারে।

    উদাহরণস্বরূপ:

    @Property(label = "Custom Property", description = "This is a custom property.")
    private String customProperty;
    
  2. রিলেশনশিপ কনফিগারেশন
    আপনার প্রোসেসরের সাথে কাজ করার জন্য বিভিন্ন রিলেশনশিপ (যেমন, SUCCESS, FAILURE) তৈরি করতে হবে যাতে প্রোসেসরটি ডেটা আউটপুট ঠিকভাবে প্রক্রিয়া করতে পারে।

    public static final Relationship FAILURE = new Relationship.Builder()
            .name("failure")
            .build();
    

সারাংশ

অ্যাপাচি নিফাই (Apache NiFi) এ কাস্টম প্রোসেসর তৈরি করা একটি শক্তিশালী পদ্ধতি যা আপনাকে নির্দিষ্ট ডেটা প্রক্রিয়া এবং ট্রান্সফর্মেশন কার্যক্রম কাস্টমাইজ করার সুযোগ দেয়। Java প্রোগ্রামিং ভাষা এবং নিফাই API ব্যবহার করে কাস্টম প্রোসেসর তৈরি করা যায়, যা বিভিন্ন ডেটা ফ্লো অপারেশন সহজ ও কার্যকরী করতে সহায়ক। এতে আপনাকে ক্লাস তৈরি, প্রপার্টি কনফিগারেশন, এবং বিল্ড পদ্ধতি শিখতে হবে, তারপর JAR ফাইলটি নিফাই সার্ভারে ডিপ্লয় করে ক্লাস্টারে ইন্সটল করতে হবে।

common.content_added_by

Processor Scheduling এবং Execution Control

159
159

অ্যাপাচি নিফাই (Apache NiFi) একটি ডেটা ফ্লো পরিচালনার টুল, যা ডেটার প্রোসেসিং এবং মুভমেন্টে অত্যন্ত কার্যকর। NiFi তে Processor Scheduling এবং Execution Control এর মাধ্যমে ব্যবহারকারীরা কিভাবে এবং কখন একটি প্রোসেসর (processor) কার্যকর হবে তা নিয়ন্ত্রণ করতে পারেন। এই ফিচারগুলি ডেটা ফ্লো নিয়ন্ত্রণ, অপ্টিমাইজেশন এবং কার্যকারিতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।


Processor Scheduling

Processor Scheduling বা প্রোসেসর সময়সূচি নির্ধারণ একটি গুরুত্বপূর্ণ ফিচার যা NiFi তে বিভিন্ন প্রোসেসরের কার্যকারিতা নির্ধারণ করে। এটি আপনাকে একাধিক প্রোসেসরকে বিভিন্ন সময়ে চলতে বা থামাতে সাহায্য করে, যা আপনার ডেটা প্রোসেসিং এর সময় এবং সম্পদ ব্যবস্থাপনা উন্নত করতে সক্ষম।

১. প্রোসেসর শিডিউল কনফিগারেশন

প্রত্যেকটি প্রোসেসরের জন্য NiFi তে শিডিউল সেট করা যেতে পারে। এর মধ্যে উল্লেখযোগ্য অপশনগুলো হলো:

  • Run Schedule: এটি প্রোসেসরের রান টাইম নির্ধারণ করে। সাধারনত এটি সেকেন্ড, মিনিট, বা ঘণ্টা ভিত্তিক হতে পারে। উদাহরণস্বরূপ, প্রতি ৫ সেকেন্ডে একটি প্রোসেসর চালানো যেতে পারে।
  • Run Duration: এটি প্রোসেসরটি চলার সময়কাল নির্ধারণ করে, অর্থাৎ কত সময় ধরে একটি প্রোসেসর চালানো হবে।
  • Scheduling Strategy: NiFi তে বিভিন্ন প্রোসেসরের জন্য শিডিউলিং কৌশল নির্ধারণ করা যেতে পারে। এর মধ্যে কয়েকটি সাধারণ কৌশল হল:
    • Timer Driven: এটি নির্দিষ্ট সময় ব্যবধানে প্রোসেসর চালায়। এটি সাধারনত একাধিক প্রোসেসরের জন্য ব্যবহৃত হয় যা নির্দিষ্ট সময় অন্তর চালানো প্রয়োজন।
    • Event Driven: এই কৌশলটি প্রোসেসরকে ঘটনার ভিত্তিতে চালানোর সুযোগ দেয়, যেমন ইনপুট ডেটা আসা বা নির্দিষ্ট ট্রিগারিং ইভেন্টের মাধ্যমে প্রোসেসর চালানো।

২. Back Pressure

যখন একাধিক প্রোসেসর বা ফ্লো ফাইল একটি নির্দিষ্ট সীমা অতিক্রম করে, তখন Back Pressure তৈরি হয়। এটি একটি মেকানিজম যা প্রোসেসরের কার্যক্রম সীমিত করে, যাতে অতিরিক্ত লোড বা ডেটা প্রবাহে কোনো সমস্যা না হয়। এই ফিচারটি নিশ্চিত করে যে, যখন সিস্টেমের উপর অতিরিক্ত চাপ পড়ে, তখন প্রোসেসরগুলি থামানো বা দেরি করা হবে।


Execution Control

NiFi তে Execution Control ব্যবহারকারীদের প্রোসেসরের কার্যক্ষমতা এবং কর্মক্ষমতা নিয়ন্ত্রণ করার জন্য একটি গুরুত্বপূর্ণ ফিচার। এটি প্রোসেসরের কাজের গতি এবং কর্মক্ষমতা নিয়ে কাজ করার সময় সাহায্য করে।

১. Concurrency (Concurrency Control)

NiFi তে প্রতিটি প্রোসেসরের concurrency কনফিগার করা যেতে পারে, অর্থাৎ, একাধিক থ্রেডের মাধ্যমে কতগুলো প্রোসেসর একসাথে চলতে পারে তা নির্ধারণ করা যায়। এর মাধ্যমে, একই প্রোসেসর একাধিক ইনপুট ডেটা ফাইল প্রক্রিয়া করতে পারে, যা কার্যকারিতা বৃদ্ধি করতে সহায়ক।

  • Concurrent Tasks: প্রতিটি প্রোসেসরের জন্য নির্ধারিত থ্রেড সংখ্যা (যত বেশি থ্রেড, তত বেশি প্যারালাল টাস্ক চালানো যাবে)।

২. Prioritization

NiFi তে Prioritization ব্যবস্থাও রয়েছে, যা ব্যবহারকারীদের ডেটার প্রাধান্য এবং প্রোসেসর চালানোর অগ্রাধিকার নির্ধারণ করতে সাহায্য করে। এর মাধ্যমে, ব্যবহারকারী একটি নির্দিষ্ট ডেটা বা প্রোসেসরের জন্য উচ্চ অগ্রাধিকার সেট করতে পারেন, যাতে এই ডেটার প্রক্রিয়া দ্রুত হয়।

৩. Retry Mechanism

NiFi তে যদি কোনো প্রোসেসর কোনো কারণে ব্যর্থ হয়, তবে এটি স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করতে পারে। Retry মেকানিজমটি প্রোসেসরটিকে পুনরায় কার্যকর করতে সক্ষম করে, যখন কোনো ত্রুটি বা ব্যর্থতার কারণে প্রোসেসরটি থেমে যায়।

৪. Stop and Start Control

NiFi তে প্রোসেসর শুরু বা থামানোর জন্য ব্যবহারকারীরা সহজেই নিয়ন্ত্রণ করতে পারেন। এর মাধ্যমে নির্দিষ্ট সময়ে বা পরিস্থিতিতে প্রোসেসরকে থামানো বা পুনরায় চালানো সম্ভব। ব্যবহারকারীরা এটি কনফিগার করে নির্দিষ্ট সময়ে প্রোসেসর বন্ধ বা চালু করতে পারেন।


সারাংশ

অ্যাপাচি নিফাই তে Processor Scheduling এবং Execution Control ফিচারগুলি ব্যবহারকারীদের ডেটা ফ্লো প্রক্রিয়া এবং কার্যকারিতা নিয়ন্ত্রণ করতে সাহায্য করে। প্রোসেসর শিডিউল কনফিগারেশন এবং শিডিউলিং কৌশলগুলি ডেটা ফ্লো পরিচালনা এবং অপ্টিমাইজেশনকে সহজ করে তোলে, যেখানে Execution Control দ্বারা থ্রেড কনফিগারেশন, Retry Mechanism, এবং Prioritization ফিচারগুলো প্রোসেসরের কার্যক্ষমতা এবং কর্মক্ষমতা উন্নত করতে সহায়ক। এই ফিচারগুলি NiFi ব্যবহারকারীদের আরও দক্ষ এবং নিয়ন্ত্রিত ডেটা ফ্লো পরিচালনা করতে সক্ষম করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion