ابزار و کتابخانه هامقایسه و انتخاب

سیستم فایل پیشنهادی برای ذخیره و بازیابی میلیون ها فایل

یکی از خوانندگان عزیز سایت مهندسی داده، سوالی از بنده پرسیده بود که برای یک سامانه که نیاز به ذخیره و بازیابی میلیون ها عکس دارد، از چه روشی برای مدیریت فایلها استفاده کنم ؟ به سراغ HDFS بروم یا بانک های اطلاعاتی نوین NoSQL را انتخاب کنم ؟

تصمیم گرفتم بررسی دقیق تری برای این موضوع انجام بدهم و ببینم برای یک سیستم فایل توزیع شده که معماری آن مقیاس پذیر بوده و با سرعت بالا، فایلها را ذخیره و یا برگرداند، چه گزینه هایی در دسترس ماست.

اگر پیگیر مباحث کلان داده باشید، احتمالاً اولین گزینه ای که به ذهن شما می رسد، HDFS یا سیستم فایل توزیع شده هدوپ باشد که با ایجاد یک سیستم فایل مجازی، امکان ذخیره و بازیابی تعداد نامحدودی فایل را در شبکه ای گسترده از سیستم ها، مهیا می سازد. اما HDFS برای ذخیره فایلهای حجیم و پردازش زمان مند و غیر بلادرنگ ، طراحی شده است و برای سرویس دهی به تعداد زیادی فایل کوچک، مناسب نخواهد بود. سامانه های نوین پردازش کلان داده ماننده اسپارک، استرم و فلینک هم با قالب های متنوعی از فایل ها که بعضی از آنها هم خاص سرویس های ابری ذخیره فایلها هستند، کار می کنند و دیگر HDFS پاسخگوی همه نیازهای امروزی نخواهد بود.

از طرفی ، ساختار HDFS یک ساختار کلاینت/سرور ی است و تمام درخواستهای نوشتن و خواندن فایل ها باید از NameNode ها عبور کند که خود، باعث ایجاد گلوگاه در سیستم هایی با توان عملیاتی بالا و تعداد کاربر همزمان زیاد، خواهد شد. بنابراین باید به دنبال راه حل های حرفه ای تر و خاص منظوره باشیم. اگر به لیست سیستم فایل های توزیع شده در ویکی پدیا نگاه بیندازیم، با لیستی بسیار بلندبالا از این نوع سیستم های فایل توزیع شده و مناسب برای کار با حجم بالای داده ها مواجه می شویم.

در سامانه های جدید اطلاعاتی، نیازمند سیستم فایلی هستیم که هر نوع موجودیت فایلی را به صورت یک شیء منحصر بفرد ذخیره کند یعنی همزمان بتواند عکس، فیلم، صدا، مستندات و سایر انواع فایل را به راحتی و به صورت یک شی با شناسه و خصوصیات خاص خود، ذخیره و بازیابی کند. نیز قادر باشد مشابه تمامی سامانه های نوین که از طریق REST API خدماتشان را به سایرین ارائه می کنند، از طریق یک درخواست HTTP ،  بدون نیاز به یک وب سرور بتوانیم با فایلها کار کرده، آنها را ذخیره و جستجو کنیم. این نوع از سیستم های فایل که به آنها Object Storage می گوئیم در مقابل سیستم های فایل سنتی که به سیستم های File level معروفند، قرار میگیرند.در سیستم های File Level، هر فایل یک آدرس منحصر به فرد و یک نام دارد که از طریق آن قابل دسترسی خواهد بود. سیستم فایل بلاکی هم نوع دیگری از این گونه سیستم های فایل است که در آن هر فایل به چند بخش تقسیم شده و در تعدادی بلاک که سیستم فایل در اختیار یک فایل قرار میدهد، ذخیره میشود. HDFS در زمره گروه سنتی File Level با معماری توزیع شده قرار می گیرد. (برای آشنایی بیشتر با انواع سه گانه سیستم فایل به این منبع مراجعه کنید )

با بررسی دقیق تر به چند سیستم فایل توزیع شده متن باز  رسیدم (فهرست کامل) که مهم ترین آنها از قرار زیر هستند :

به طور خلاصه اگر بخواهم نتیجه اولیه بررسی خود را ارائه دهم به موارد زیر خواهیم رسید :

  • برای پردازش کلان داده و کار با هدوپ به طور خاص، بهتر است از همان HDFS استفاده کنیم.
  • اگر قصد طراحی یک سامانه کلان دارید که همزمان انواع فایلها را ذخیره و سرویس دهی کند، می توانیم برای لایه ذخیره و بازیابی از Ceph استفاده کنیم و برای ایجاد یک نمای هماهنگ از کل سیستم از Alluxio بهره ببریم . یعنی ترکیب Ceph و Aluxio را در کنار سیستم های فایل موجود مانند HDFS استفاده کنیم. Aluxio یک لایه کش و نهانگاه هم در حافظه ایجاد می کند که سرعت دستیابی به فایلها در پشت صحنه که می تواند Ceph و HDFS باشد را بسیار بهبود می بخشد.

  • اگر بخواهیم یک سامانه با کاربرد مشخص مثلا ذخیره و بازیابی میلیونها عکس تولید کنیم، می توانیم از سیستم ساده و موثری مانند SeaweedFS استفاده کنیم. سامانه هایی مانند LeoFS، MooseFS،Lizardfs،BeeGFS  هم برای این منظور می تواند به کار رود.
  • GO IPFS یک سیستم فایل مبتنی بر اینترنت است که برای کاربردهای خاص، مناسب است.
  • کتابخانه Gluster هم یکی از کتابخانه های چندمنظوره و مشابه با Ceph است اما در این منبع و این منبع، آینده را به دلیل سهولت بیشتر از آن Ceph می داند.
  • IPFS هم یک سیستم فایل توزیع شده در مقیاس وب است که از طریق آن می توان یک سامانه نظیر به نظیر ذخیره فایل با مقیاس جهانی ایجاد کرد.

در هر صورت، برای کابردهای معمولی سامانه هایی مانند SeaweedFS را انتخاب کنید و برای کاربردهای حرفه ای و همه منظوره بخصوص برای ایجاد یک دریاچه داده، می توانید ترکیب Alluxio و Ceph را برای ذخیره داده های خود استفاده نمایید.

نگاهی به روند رشد توسعه دهندگان پروژه متن باز Alluxio  که نشان از محبوبیت زیاد آن در سال های آتی خواهد داشت، خالی از لطف نیست (منبع) :

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

۲ دیدگاه

  1. با سلام و عرض ادب

    اگر اشتباه نکنم این سوال رو من پرسیده بودم و بسیار ممنون جهت نوشتن این محتوای عالی و حرفه ای و انشالله که به کارتون همیشه ادامه بدید . به کاربرای وب سایت هم لطف بسیار بزرگی کردید با برداشتن کپچا چون نوشتن نظرات رو خیلی سخت و گاهی اوقات غیر ممکن میکرد و اجرتون با خدا

  2. سلام ممنون از متن عالی

    سوال من برای ذخیره و بازیابی فیلم هست که امکان drop duplicate فیلم (بر اساس محتوا) هم داشته باشه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جای خالی در معادله زیر را با کی برد انگلیسی وارد کنید : * Time limit is exhausted. Please reload CAPTCHA.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا