مدیریت گردش جریان داده با آپاچی نایفای (Apache NiFi)
مقدمه
یکی از نقاط ضعف پلتفرم هایی که وظیفه طراحی پایپ لاین پردازش داده را بر عهده دارند اینه که ابزار گرافیکی برای این کار ارائه نمی کنند. آپاچی نایفای که جزو پروژه های نوین بنیاد نرم افزاری آپاچی محسوب میشه. به منظور برطرف کردن همین ضعف بوجود اومده تا مدیریت جریان دادهها بصورت آسان تر و بهینه تری انجام بشه.
آپاچی نایفای یکی دیگه از پروژه های سطح بالای بنیاد نرم افزاری آپاچی محسوب میشه. اولین نسخه این نرم افزار که با جاوا توسعه داده شده، 14 سال پیش در 2006 ارایه شده و نسخه پایدارش 1.11.3 هست که به تازگی لانچ شده است و دارای مخزن محتوی به نام NiFi Repository هست. این نرم افزار از نوع Distributed Dataflow و تحت لیسانس Apache License 2.0. هست.
پردازش و توزیع داده
نایفای می تونه با انواع مختلفی از منابع و فرمت های داده ای کار کنه و داده ها را از انوع گوناگون منبع داده ای مثل فایل، دیتابیس، هدوپ، توئیتر و امثالهم بخونه. پس ما می تونیم دیتا رو از یه سورس بگیریم، تبدیلات دلخواهمون رو به کمک پروسسورهای گرافیکی موجود در نایفای روی دیتامون انجام بدیم و ماحصل کارمون رو در منابع مختلف داده ای ذخیره کنیم. همانطور که تو تصویر ذیل هم مشخص هست نایفای می تونه دیتا رو از Data Lake, انواع دیتابیس ها یا حتی APIهای مختلف بخونه. نکته دیگه اینکه می تونه در دو حالت Standalone و Cluster کار کنه و داده های استریم و دسته ای رو پردازش کنه و هندلینگ خطای خوبی داره.
طراحی آسان پایپ لاین های سفارشی پردازش داده
ما با استفاده از نایفای می توانیم پایپ لاین های پردازش داده دلخواهمون را طراحی کنیم.
یک نمونه پایپ لاین داده را با هم ملاحظه می کنیم که یک فایل CSV را دریافت می کند، عملیات Validation را روی آن انجام می دهد و سپس آنرا ذخیره می کند. تمام این فرآیند به لطف پردازشگرهای گرافیکی موجود در نایفای صورت می گیرد. اگر همین کار را می خواستید به صورت دستی انجام دهید می بایست صدهاخط کُد می نوشتید! اینجا یه نمونه فایل CSV را داریم می خونیم اما می تونیم انواع فرمت های داده ای مثل HDFS، Kafka ،FTP ،HTTP رو بخونیم، این وسط انواع تبدیلات و پردازشها که در نسخه 1.9.2 نزدیک به 193تا هست رو با استفاده از پردازشگرهای متنوع روی داده مون پیاده کنیم و خروجی مون رو در Elastic Search, SQL, NoSQL, S3, AWS, Solr, Splunk و … ذخیره کنیم.
از آپاچی نایفای به منظور خودکار سازی گردش جریان داده بصورت گرافیکی در سیستم های نرم افزاری استفاده میشه. نقطه قوت نایفای اینترفیس تحت وب اون هست که کار با پردازنده های نرم افزاری رو به منظو گردش جریان داده در بین سیستم های مختلف بسیار ساده تر از قبل می کنه. نایفای خودش رو اینطور معرفی میکنه: سیستمی با کاربری آسان، قدرتمند و قابل اطمینان به منظور پردازش و توزیع داده. خوبی این پلتفرم محیط بسیار جذاب و خلاقانه ای هست که داره.
معماری و مولفه های نرم افزاری نایفای
در واقع نایفای یک برنامه جاوا است که در یک ماشین مجازی جاوا اجرا می شود که سوار بر یک وب سرور هستند. در تصویر ذیر مولفه های نرم افزاری نایفای رو با هم مشاهده می کنیم که روی JVM سوار هستند.
- وب سرور: این مولفه که HTTP-Based هستش باعث میشه بتونیم بصورت گرافیکی نرم افزار را کنترل کرده و بر وقایع اتفاق افتاده در داخل سیستم نظارت کنیم.
- کنترل جریان: این مولفه بعنوان قلب تپنده رفتاری نایفای به حساب میآد که کنترل افزونه ها و زمانبندی اختصاص منابع به نایفای رو بر عهده داره.
- افزونه های متعدد: نایفای افزونه های مختلفی داره که بهش اجازه میده تا با انواع مختلف سیستم های نرم افزاری ارتباط برقرار کند.
- مخزن FlowFile: حفظ و ردیابی وضعیت اطلاعات فعلی فعال که نایفای اون اطلاعات رو بین سیستم ها به گردش در میاره.
- مخزن محتوی: داده هایی که قرار هست در بین سیستم های نرم افزاری انتقال پیدا کنند در اینجا نگهداری می شوند.
- مخزن منابع: داده های مربوط به منابع داده های جاری از طریق سیستم در اینجا نگهداری می شوند.
ویژگی های کلیدی
در ادامه با هم با ویژگی های کلیدی نایفای آشنا می شیم. نکته ای که باید توجه داشته باشیم این هست که نایفای بر مبنای مُدل برنامه نویسی Flow-based طراحی و پیاده سازی شده هست.
- اینترفیس تحت وب
- تجربه بی نظیر در فرآیندهای طراحی ، کنترل ، بازخورد و مانیتورینگ سرویس ها
- امکان طراحی گرافیکی خطوط پردازش داده
- پردازش همزمان دادههای جریانی و دادههای زمانمند
- قابلیت پیکره بندی پیشرفته
- قابلیت اولویت بندی پویا
- قابلیت تغییر جریان داده در زمان اجرا
- ثبات داده
- قابلیت رهگیری جریان داده از ابتدا تا انتهای مسیر جریان در بین سیستم ها
- امنیت بالا
- پشتیبانی از SSL, SSH, HTTPS، محتوای رمزگذاری شده
- مدیریت قابلیت های Authorization Policy
- طراحی مقیاسپذیرو توسعه محور
- می توانید به تعداد دلخواه پردازنده های مدنظر خود را بسازید و آنها را سفارشی سازی کنید.
- تضمین تحویل داده به هر گره پردازشی
- بافرینگ دادهها و امکان نظارت بر منابع و جریانهای ورودی
- امکان پذیری توسعه سریع و آزمایش موثر در سیستم های نرم افزاری
اجزای مختلف یک پردازشگر در نایفای
در تصویر زیر با هم اجزای مختلف یک پردازشگر در نایفای رو مشاهده می کنیم از جمله
- نام پردازشگر
- نوع پردازشگر
- تعداد تسک های فعال
- وضعیت اجرا / توقف پردازشگر
ساخت دریاچه داده با استفاده از نایفای
در تصویر ذیل معماری ساخت یک دریاچه داده با استفاده از نایفای رو ملاحظه می کنید که توییت های توییتر با استفاده از ‘GetTwitter’ فِچ میکنه که از Twitter Streaming API به منظور بازیابی توییت ها استفاده میکنه. تو این Processor یا پردازشگر ما نیاز داریم که Endpoint یا مقصد نهایی داده مون رو مشخص کنیم. ضمنا می تونیم فیلترهای مختلفی مثل
- Location
- Hashtags
- Particular IDs
روی توییت هامون بزنیم.
ساخت دریاچه داده با استفاده از نایفای و آپاچی کافکا
در تصویر ذیل معماری ساخت یک دریاچه داده با استفاده از نایفای و آپاچی کافکا رو ملاحظه می کنید. به این منظور ما نیاز داریم از پردازشگر PublishKafka_0_10 استفاده کنیم و در بخش زمان بندی پردازشگر باید تعداد تسک های جاری که باید اجرا و زمان بندی بشن رو مشخص کنیم. در تَب تنظیمات می تونیم موارد ذیل رو مشخص کنیم:
- Kafka Broker URLs
- Topic Name
- Request Size
- و …
رو مشخص کنیم. بعدش پردازشگر میاد دیتاهامون رو می نویسه تو تاپیک(جدول)مدنظرمون. برای اینکه بهترین نتیجه رو داشته باشیم می تونیم به صورت دستی تاپیک کافکامون رو واسه پارتیشنی که تعریف کردیم بسازیم. همونطور که می تونید آپاچی کافکا می تونه برای پردازش داده با Apache Beam, Apache Flink, Apache Spark لینک بشه.
توسعه نرم افزاری و پشتیبانی تجاری
توسعه نرم افزاری و پشتیبانی تجاری نایفای در حال حاضر توسط شرکت های Cloudera و HortonWorks که اخیرا با Cloudera یکپارچه شده است ارائه می شود.
پروژه های زیرمجموعه نایفای
از جمله پروژه هایی که زیرمجموعه نایفای محسوب میشن عبارتند از:
- Apache NiFi Registry
- MiNiFi
- Flow Design System-FDS
نصب و راه اندازی
به منظور نصب نایفای نیازی به نصب هدوپ نیست و می توان به منظور تست و یادگیری به تنهایی پیاده سازی شود اما به منظور استفاده در پروژه های سازمانی استک هدوپ می بایست نصب و کانفیگ شده باشد.
می توان از داکر هم بدون نیاز به هیچ پیکربندی خاصی و به سرعت کار با نایفای را شروع کنید. در غیر این صورت می توانید به این آدرس مراجعه کنید، نسخه باینری رو اگه ویندوزی هستید به حجم 1.2 گیگ دانلود کنید، بعدش که UnZip کردید در پوشه bin فایل run-nifi.bat رو اجرا کنید. بصورت پیش فرض باید نایفای تو مرورگر به روی پورت 8080 در لوکال هاست بیاد بالا. اگه نیومد میرید به پوشه Conf و فایل nifi.properties رو باز می کنید و دنبال این 2 تاخط می گردید:
nifi.web.http.host=
nifi.web.http.port=
و اینطوری تغییرشون میدید.
nifi.web.http.host=localhost
nifi.web.http.port=9090
مجددا به روی پورت 9090 تو لوکال هاست برید اگه مشکلی پیش نیاد قاعدتا باید نایفای بیاد بالا به این شکل.
منبع آموزشی به منظور یادگیری نایفای
از این کتاب هم می تونید به منظور استارت شروع یادگیری نایفای استفاده کنید. کلا سری کتاب های For Dummies بصورت پایه از کف می سازن میارن بالا و خیلی پیچیده نیستن.
درباره محمد حیدری
مهندس کلان داده، هلدینگ داده ورزی سداد، پژوهشگر رایانش ابری توزیع شده،پژوهشگاه دانشهای بنیادی
نوشته های بیشتر از محمد حیدریمطالب زیر را حتما مطالعه کنید
MLOps چیست؟
هوش مصنوعی مولد یا Generative AI چیست؟
چت بات هوش مصنوعی محور ChatGPT که در آینده جایگزین انسان خواهد شد
آشنایی با Graph Attention Network (شبکه های توجه گرافی)
طراحی شبکه های عصبی گرافی با استفاده از کتابخانه PyG در پایتون
متاورس و هوش مصنوعی
دوره های آموزشی مرتبط
دوره آموزشی پروژه محور Docker برای مهندسان داده
دوره آموزشی ماشین مجازی Cloudera برای تحلیل کلان داده
دوره آموزشی Hadoop و Spark برای تحلیل کلان داده ها
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام و ممنون بابت سایت و توضیحات کاملتون
من تازه وارد این بحث شدم و به این مشکل بر خوردم که GetMongo داده ها رو به صورت نامحدود fetch میکنه
نمیدونم شاید مشکل از standalone که شما گفتین باشه…
ممنون میشم راهنماییم کنید…