Apache NiFi একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট টুল, যা ডেটা সংগ্রহ, প্রসেসিং, এবং ট্রান্সফারের পাশাপাশি ডেটা আউটপুট বা রাইট করার জন্যও ব্যবহৃত হয়। NiFi এর মাধ্যমে ডেটা আউটপুট বা রাইট করার জন্য বিভিন্ন Processor ব্যবহার করা হয় যা নির্দিষ্ট আউটপুট ডেস্টিনেশনে ডেটা সংরক্ষণ বা পাঠানোর কাজ করে।
ডেটা রাইটিং হল NiFi এর একটি গুরুত্বপূর্ণ অংশ, যা বিভিন্ন আউটপুট ডেস্টিনেশনে ডেটা সংরক্ষণ করতে সাহায্য করে। এই প্রক্রিয়ায় NiFi বিভিন্ন ফাইল সিস্টেম, ডেটাবেস, ক্লাউড স্টোরেজ, এবং অন্যান্য সিস্টেমে ডেটা পাঠানোর কাজ সম্পাদন করে। NiFi এর ডেটা রাইটিং কার্যকারিতা পারফরম্যান্স উন্নত করার জন্য Processors এর মাধ্যমে কাস্টমাইজ করা যায়।
PutFile
Processor ব্যবহার করে একটি নির্দিষ্ট ডিরেক্টরিতে ডেটা বা ফাইল লেখা হয়।কনফিগারেশন:
উদাহরণ:
PutFile
Processor ব্যবহার করে /data/output/
ডিরেক্টরিতে রাইট করা হবে।PutDatabaseRecord
Processor ডেটাবেসে রেকর্ড বা ডেটা রাইট করতে ব্যবহৃত হয়।কনফিগারেশন:
উদাহরণ:
PutDatabaseRecord
Processor ডেটাবেসে customer_info
টেবিলটিতে রেকর্ড ইনসার্ট করবে।PutS3Object
Processor ব্যবহার করে ডেটা বা ফাইল Amazon S3 তে রাইট করা হয়।কনফিগারেশন:
উদাহরণ:
PutS3Object
Processor ব্যবহার করে S3 এর my-bucket
এ আপলোড করা হবে।PutKafka
Processor Kafka টপিকে ডেটা রাইট করতে ব্যবহৃত হয়।কনফিগারেশন:
উদাহরণ:
PutKafka
Processor ব্যবহার করে Kafka টপিক events
এ পাঠানো হবে।PutHDFS
Processor Hadoop HDFS (Hadoop Distributed File System) এ ডেটা রাইট করতে ব্যবহৃত হয়।কনফিগারেশন:
উদাহরণ:
PutHDFS
Processor ব্যবহার করে HDFS এর /user/nifi/output/
ডিরেক্টরিতে আপলোড করা হবে।Apache NiFi তে ডেটা রাইটিং একটি গুরুত্বপূর্ণ কার্যকলাপ যা বিভিন্ন ডেটাবেস, ফাইল সিস্টেম, ক্লাউড স্টোরেজ, এবং অন্যান্য সিস্টেমে ডেটা বা ফাইল সংরক্ষণ করতে ব্যবহৃত হয়। PutFile
, PutDatabaseRecord
, PutKafka
, PutS3Object
, এবং PutHDFS
এর মতো Processors ব্যবহার করে ডেটা আউটপুট পরিচালনা করা যায়। যথাযথ কনফিগারেশন এবং অপটিমাইজেশন সহ, NiFi ডেটা রাইটিংয়ের কার্যকারিতা নিশ্চিত করা যায়, যা ডেটা ফ্লো ম্যানেজমেন্টে সাহায্য করে।
অ্যাপাচি নিফাই (Apache NiFi) একটি ডেটা ফ্লো ম্যানেজমেন্ট টুল যা ডেটা সংগ্রহ, প্রক্রিয়া এবং স্থানান্তর করতে সহায়ক। নিফাই ব্যবহারকারীদের ডেটা স্থানান্তর ও সংরক্ষণের জন্য শক্তিশালী প্রোসেসরের সুবিধা প্রদান করে। এই প্রোসেসরগুলোর মধ্যে PutFile এবং PutHDFS দুটি জনপ্রিয় প্রোসেসর যা ডেটা স্থানীয় ফাইল সিস্টেম (Local File System) অথবা Hadoop Distributed File System (HDFS) এ সংরক্ষণ করতে ব্যবহৃত হয়।
PutFile
প্রোসেসরটি ব্যবহার করে নিফাই ডেটা স্থানীয় ফাইল সিস্টেমে সংরক্ষণ করা হয়। এটি ডেটাকে একটি নির্দিষ্ট লোকেশন বা ডিরেক্টরিতে ফাইল আকারে সংরক্ষণ করে। সাধারণত, এই প্রোসেসরটি ফাইল সিস্টেমে ডেটা লিখতে ব্যবহৃত হয় যা পরবর্তী প্রোসেসিং বা অ্যাক্সেসের জন্য ব্যবহার করা যেতে পারে।
replace
, ignore
, fail
)ধরা যাক, আপনি একটি ফাইল সিস্টেমে ডেটা সংরক্ষণ করতে চান এবং যদি কোনো ফাইল একই নামের থাকে তবে তা প্রতিস্থাপন করতে চান।
/home/user/data/
replace
এখন, প্রতিবার যখন নতুন ডেটা আসবে, এটি /home/user/data/
ফোল্ডারে সংরক্ষণ হবে এবং যদি কোনো ফাইল আগে থেকে থাকে, তা প্রতিস্থাপন হবে।
PutHDFS
প্রোসেসরটি ডেটাকে Hadoop Distributed File System (HDFS) এ সংরক্ষণ করতে ব্যবহৃত হয়। HDFS হল একটি উচ্চক্ষমতাসম্পন্ন এবং স্কেলেবল ডিস্ট্রিবিউটেড ফাইল সিস্টেম যা বড় পরিমাণের ডেটা সংরক্ষণ এবং অ্যাক্সেসের জন্য ব্যবহৃত হয়।
replace
, ignore
, fail
)ধরা যাক, আপনি HDFS-এ একটি ফাইল সংরক্ষণ করতে চান এবং যদি একই নামের ফাইল আগে থেকে থাকে, তবে তা প্রতিস্থাপন করতে চান।
hdfs://localhost:9000
/user/hadoop/data/
replace
এখন, প্রতি ডেটা আসলে এটি /user/hadoop/data/
ডিরেক্টরিতে HDFS-এ সংরক্ষিত হবে এবং যদি কোনো ফাইল আগে থেকে থাকে, তা প্রতিস্থাপন হবে।
বৈশিষ্ট্য | PutFile | PutHDFS |
---|---|---|
ব্যবহার | স্থানীয় ফাইল সিস্টেমে ডেটা সংরক্ষণ | Hadoop Distributed File System (HDFS)-এ ডেটা সংরক্ষণ |
স্টোরেজ | স্থানীয় ডিরেক্টরি বা ফোল্ডার | HDFS ক্লাস্টার |
প্রধান সুবিধা | সাধারণ ফাইল সিস্টেমে সহজ এবং দ্রুত সংরক্ষণ | বড় পরিসরের ডেটা স্টোরেজ এবং স্কেলেবিলিটি |
কনফিগারেশন | ফাইল পাথ এবং কনফ্লিক্ট রেজল্যুশন স্ট্র্যাটেজি | HDFS URL এবং ডিরেক্টরি পাথ |
অ্যাপাচি নিফাইয়ের PutFile এবং PutHDFS প্রোসেসর দুটি ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়, তবে তাদের ব্যবহারের ক্ষেত্রে পার্থক্য রয়েছে। PutFile
স্থানীয় ফাইল সিস্টেমে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেখানে PutHDFS
HDFS-এ ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়। এই দুটি প্রোসেসর ব্যবহার করে আপনি আপনার ডেটা সিস্টেমের প্রয়োজনীয়তা অনুযায়ী সঠিক স্টোরেজ ব্যবস্থা নির্বাচন করতে পারেন।
অ্যাপাচি নিফাই (Apache NiFi) ডেটা ইন্টিগ্রেশন এবং অটোমেশন প্রক্রিয়ার জন্য একটি শক্তিশালী টুল। এটি সহজেই বিভিন্ন ক্লাউড স্টোরেজ সার্ভিসের সাথে সংযোগ স্থাপন করতে এবং ডেটা পাঠাতে সক্ষম। এই গাইডে আমরা দেখব কিভাবে অ্যাপাচি নিফাই ব্যবহার করে Amazon S3 এবং Google Cloud Storage এ ডেটা পাঠানো যায়।
অ্যাপাচি নিফাই এর মাধ্যমে Amazon S3 এ ডেটা পাঠানোর জন্য কিছু বিল্ট-ইন প্রোসেসর রয়েছে, যেগুলি S3 বকেটের সাথে সংযোগ স্থাপন করে এবং ডেটা আপলোড করতে ব্যবহৃত হয়।
PutS3Object
প্রোসেসরটি অ্যাপাচি নিফাই এর মাধ্যমে S3 বকেটে ডেটা আপলোড করতে ব্যবহৃত হয়। এটি ফ্লোফাইল থেকে ডেটা নিয়ে নির্দিষ্ট S3 বকেটে সংরক্ষণ করে।
এই প্রোসেসরটি ফ্লোফাইলের ডেটা নিয়ে Amazon S3 বকেটে আপলোড করবে।
PutS3Object প্রোসেসরটি ফ্লোফাইলের ডেটা নিয়ে একটি নির্দিষ্ট Amazon S3 বকেটে সংরক্ষণ করবে। আপনাকে AWS অ্যাক্সেস কিপর একটি প্রপার কনফিগারেশন দিতে হবে যাতে কনফিগারেশনটি আপনার অ্যাকাউন্টের জন্য সঠিক থাকে।
GetS3Object
প্রোসেসরটি ব্যবহার করে আপনি S3 বকেট থেকে ডেটা সংগ্রহ করতে পারেন। এটি নির্দিষ্ট সঠিক বকেট এবং অবজেক্ট কী অনুযায়ী ডেটা আনতে সাহায্য করবে।
অ্যাপাচি নিফাই Google Cloud Storage (GCS) এর সাথে একত্রিত হতে পারে এবং GCS তে ডেটা পাঠাতে কিছু বিশেষ প্রোসেসর রয়েছে।
PutGCSObject
প্রোসেসরটি GCS বকেটে ডেটা আপলোড করতে ব্যবহৃত হয়। এটি GCS এর API ব্যবহার করে ফ্লোফাইলের ডেটা আপলোড করে।
এই প্রোসেসরটি ফ্লোফাইলের ডেটা গুগল ক্লাউড স্টোরেজ বকেটে আপলোড করবে।
PutGCSObject প্রোসেসরটি গুগল ক্লাউড স্টোরেজে ডেটা আপলোড করতে ব্যবহৃত হবে। গুগল ক্লাউডের অ্যাক্সেস করার জন্য আপনার সার্ভিস অ্যাকাউন্ট কিপর JSON ফাইল ব্যবহার করতে হবে।
GetGCSObject
প্রোসেসরটি GCS থেকে ডেটা সংগ্রহ করার জন্য ব্যবহৃত হয়। এটি নির্দিষ্ট ফাইল বা ডেটা অ্যাক্সেস করতে ব্যবহার করা হয়।
অ্যাপাচি নিফাই এর মাধ্যমে Amazon S3 এবং Google Cloud Storage এ ডেটা পাঠানো খুবই সহজ এবং কার্যকরী। S3 বা GCS এর জন্য বিল্ট-ইন প্রোসেসরগুলি ব্যবহার করে আপনি আপনার ডেটা সহজেই ক্লাউড স্টোরেজে আপলোড বা সংগ্রহ করতে পারেন। এর জন্য শুধুমাত্র সঠিক অথেন্টিকেশন এবং কনফিগারেশন নিশ্চিত করতে হবে, তারপর নিফাই এর শক্তিশালী ফ্লো এবং প্রোসেসর ব্যবস্থাপনা ব্যবহার করে ডেটা ট্রান্সফার করতে পারবেন।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন প্ল্যাটফর্ম যা বিভিন্ন ডেটা উৎসের মধ্যে ডেটা স্থানান্তর ও প্রক্রিয়াকরণ করতে সাহায্য করে। যখন আপনার ডেটা রিলেশনাল ডেটাবেসে সংরক্ষণ করার প্রয়োজন হয়, তখন PutDatabaseRecord
এবং PutSQL
প্রোসেসর দুটি ব্যবহৃত হয়। এই প্রোসেসরগুলি ডেটাবেসের সাথে যোগাযোগ করে ডেটা ইনসার্ট, আপডেট বা অন্যান্য ডেটাবেস সম্পর্কিত কাজ সম্পাদন করতে সক্ষম।
PutDatabaseRecord
প্রোসেসরটি ব্যবহার করে আপনি রেকর্ড বেসড ডেটা (যেমন, CSV, JSON বা Avro রেকর্ড) রিলেশনাল ডেটাবেসে সন্নিবেশ করতে পারেন। এটি একটি খুবই কার্যকরী প্রোসেসর, যখন আপনি ডেটাবেসে ডেটা ইনসার্ট বা আপডেট করতে চান এবং আপনার কাছে রেকর্ডের স্ট্রাকচার (যেমন, কলাম নাম এবং টাইপ) ইতিমধ্যে আছে।
ডেটাবেস কানেকশন:
প্রথমে আপনাকে একটি ডেটাবেস কানেকশন পুল কনফিগার করতে হবে, যাতে নিফাই ডেটাবেসের সাথে যোগাযোগ করতে পারে। এই কাজের জন্য DBCPConnectionPool
বা DatabaseConnectionPool
ব্যবহার করা যেতে পারে।
কনফিগারেশন:
Database Connection Pooling Service
: এটি ডেটাবেসের সাথে কানেকশন পরিচালনা করবে।Table Name
: আপনি কোন টেবিলের মধ্যে ডেটা ইনসার্ট করতে চান তা নির্ধারণ করতে হবে।JsonTreeReader
, CSVReader
, বা AvroReader
ব্যবহার করা হয়।PutDatabaseRecord
|-> RecordReader (CSVReader)
|-> Database Connection Pooling Service (DBCPConnectionPool)
Database Connection Pooling Service
: এখানে আপনি ডেটাবেস কানেকশন পুলের সেটিংস নির্ধারণ করবেন।Table Name
: টেবিলের নাম যেটাতে ডেটা ইনসার্ট করতে চান।Record Reader
এবং Record Writer
: রেকর্ড ফর্ম্যাট কনফিগারেশন (যেমন JSON, CSV, বা Avro)।PutSQL
প্রোসেসরটি ডেটাবেসে SQL কুয়েরি ব্যবহার করে ডেটা ইনসার্ট, আপডেট বা ডিলিট করতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি সরাসরি SQL কুয়েরি চালাতে পারেন, যেমন INSERT
, UPDATE
, বা DELETE
কুয়েরি।
PutSQL
প্রোসেসরও ডেটাবেস কানেকশন ব্যবস্থাপনা করার জন্য DBCPConnectionPool
বা অন্যান্য কানেকশন পুল সার্ভিস ব্যবহার করে। এটি নিশ্চিত করে যে প্রোসেসরটি ডেটাবেসে সঠিকভাবে যোগাযোগ করছে।PutSQL
|-> Database Connection Pooling Service (DBCPConnectionPool)
|-> SQL Query (INSERT INTO users (id, name) VALUES (:id, :name))
Database Connection Pooling Service
: ডেটাবেস কানেকশন পুলের কনফিগারেশন।SQL Statement
: SQL কুয়েরি যা ইনপুট FlowFile এর উপর ভিত্তি করে চালানো হবে। আপনি এখানে প্রপার্টি প্লেসহোল্ডার ব্যবহার করতে পারেন (যেমন, :id
, :name
)।বৈশিষ্ট্য | PutDatabaseRecord | PutSQL |
---|---|---|
ডেটার উৎস | রেকর্ড ফরম্যাট (CSV, JSON, Avro) | SQL কুয়েরি ব্যবহার করে ডেটা ইনসার্ট বা আপডেট করা |
ডেটার ফরম্যাট | রেকর্ড (Structured Data) | SQL কুয়েরি (Unstructured Data) |
ডেটা ইনসার্ট কৌশল | ডেটা মডেল বা স্কিমা অনুযায়ী রেকর্ড ইনসার্ট করা | কাস্টম SQL কুয়েরি ব্যবহার করে ডেটা ইনসার্ট করা |
ডেটাবেস সংযোগ | ডেটাবেস কানেকশন পুল সিস্টেম ব্যবহার করা | ডেটাবেস কানেকশন পুল সিস্টেম ব্যবহার করা |
অ্যাপাচি নিফাইতে ডেটাবেসে ডেটা সংরক্ষণের জন্য দুটি গুরুত্বপূর্ণ প্রোসেসর হলো PutDatabaseRecord
এবং PutSQL
। PutDatabaseRecord
রেকর্ড ফরম্যাটে ডেটা ইনসার্ট করার জন্য উপযুক্ত, যেখানে ডেটাবেস টেবিলের কলাম অনুযায়ী রেকর্ড ইনপুট করা হয়। অপরদিকে, PutSQL
SQL কুয়েরি ব্যবহার করে সরাসরি ডেটাবেসে ডেটা ইনসার্ট বা আপডেট করার জন্য ব্যবহৃত হয়। এদের ব্যবহারে, ডেটাবেসে ডেটা সংরক্ষণ করা খুবই সহজ এবং কার্যকরী হয়, এবং এটি নিফাই ফ্লোতে আরও নমনীয়তা প্রদান করে।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন টুল যা বিভিন্ন ডেটা সিস্টেমের মধ্যে ডেটা ট্রান্সফার করতে সক্ষম। এই ডেটা ট্রান্সফারের মধ্যে মেসেজ কিউস (Message Queues) একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা অ্যাসিঙ্ক্রোনাস ডেটা ট্রান্সফার এবং স্কেলেবিলিটির জন্য ব্যবহৃত হয়। NiFi বিভিন্ন মেসেজ কিউ সিস্টেম যেমন Apache Kafka, JMS (Java Message Service) এবং RabbitMQ এর সাথে সংযুক্ত হয়ে ডেটা পাঠাতে এবং গ্রহণ করতে সক্ষম।
Apache Kafka একটি উচ্চ-পারফরম্যান্স, স্কেলেবল মেসেজ কিউ সিস্টেম যা মূলত স্ট্রীমিং ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এটি বড় পরিমাণের ডেটা সাশ্রয়ীভাবে পাঠানোর জন্য আদর্শ এবং অনেক অ্যাপ্লিকেশন এবং সিস্টেমে ব্যবহার হয়।
JMS একটি Java API যা অ্যাপ্লিকেশনগুলির মধ্যে মেসেজ আদান-প্রদান করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন প্রকারের মেসেজ কিউ সিস্টেমের সাথে কাজ করতে পারে, যেমন ActiveMQ, IBM MQ ইত্যাদি।
RabbitMQ একটি ওপেন-সোর্স মেসেজ ব্রোকার যা AMQP (Advanced Message Queuing Protocol) ব্যবহার করে মেসেজ সিস্টেম তৈরি করতে সাহায্য করে। এটি বিভিন্ন মেসেজ কিউ এবং পাব-সাব (publish-subscribe) প্যাটার্নের জন্য ব্যবহৃত হয়।
NiFi এই মেসেজ কিউ সিস্টেমগুলির সাথে সহজেই সংযুক্ত হতে পারে এবং ডেটা পাঠাতে পারে। এখানে প্রতিটি সিস্টেমের সাথে ডেটা পাঠানোর প্রক্রিয়া বর্ণনা করা হয়েছে:
Kafka একটি পারফর্ম্যান্স-বান্ধব মেসেজ কিউ সিস্টেম যা বড় পরিমাণের ডেটা দ্রুত প্রক্রিয়া এবং পাঠাতে সক্ষম। NiFi ব্যবহার করে Kafka তে ডেটা পাঠানোর জন্য আপনাকে PublishKafka বা PublishKafkaRecord_2_0 প্রোসেসর ব্যবহার করতে হবে।
localhost:9092
)।order-events
localhost:9092
JMS (Java Message Service) সিস্টেমের সাথে NiFi সংযুক্ত হতে PublishJMS প্রোসেসর ব্যবহার করতে হয়। JMS তে ডেটা পাঠানোর জন্য আপনাকে জাভা মেসেজ প্রোডিউসার কনফিগার করতে হবে।
order-queue
tcp://localhost:61616
RabbitMQ একটি জনপ্রিয় মেসেজ কিউ সিস্টেম যা AMQP প্রটোকল ব্যবহার করে মেসেজ সিস্টেম পরিচালনা করে। NiFi RabbitMQ তে ডেটা পাঠানোর জন্য PublishAMQP প্রোসেসর ব্যবহার করে।
order-queue
localhost:5672
প্রতিটি মেসেজ কিউ সিস্টেমের জন্য NiFi তে কনফিগারেশন কিছুটা আলাদা হতে পারে। তবে সাধারণভাবে, নিচের কনফিগারেশন সেটিংসগুলো সকল সিস্টেমে প্রযোজ্য:
অ্যাপাচি নিফাই ব্যবহার করে Apache Kafka, JMS, এবং RabbitMQ এর মতো মেসেজ কিউ সিস্টেমে ডেটা পাঠানো সহজ এবং কার্যকরী হতে পারে। NiFi এর PublishKafka, PublishJMS, এবং PublishAMQP প্রোসেসরের মাধ্যমে আপনি ডেটা একটি সিস্টেম থেকে অন্য সিস্টেমে পাঠাতে পারেন, যা ডেটা ফ্লো ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ। এগুলোর কনফিগারেশন এবং সংযোগ কৌশলগুলির মাধ্যমে NiFi ডেটা ট্রান্সফার প্রক্রিয়া সহজ এবং স্বয়ংক্রিয় করে তোলে।
common.read_more