پارکت یک فرمت فایل ذخیره سازی ستونی است که برای ذخیره و پردازش موثر مقادیر زیادی از داده ها طراحی شده است. این به عنوان یک پروژه منبع باز توسط کلودرا و توییتر در سال 2013 توسعه داده شد. هدف اصلی پارکت بهینه سازی ذخیره سازی و پردازش داده ها برای تجزیه و تحلیل داده های بزرگ است و آن را به فرمتی ایده آل برای موارد استفاده در انبار داده ها، دریاچه های داده و آپاچی تبدیل می کند. اکوسیستم های هادوپ
تاریخچه پیدایش پارکت و اولین ذکر آن
منشاء پارکت را می توان در نیاز به ذخیره سازی و پردازش کارآمد داده های بزرگ جستجو کرد. با ظهور فناوریهای کلان داده، فرمتهای ذخیرهسازی سنتی با چالشهایی در مدیریت مجموعه دادههای بزرگ مواجه شدند. هدف توسعه پارکت رفع این مسائل با معرفی یک روش ذخیره سازی ستونی بود.
اولین ذکر پارکت را می توان در یک مقاله تحقیقاتی ارائه شده توسط مهندسان توییتر در سمپوزیوم اصول سیستم های عامل (SOSP) در سال 2013 یافت. در این مقاله، آنها فرمت پارکت را معرفی کردند و مزایای آن مانند فشرده سازی بهتر، جستجوی بهبود یافته را برجسته کردند. عملکرد و پشتیبانی از انواع داده های پیچیده
اطلاعات دقیق در مورد پارکت: گسترش موضوع
پارکت از رویکرد ذخیره سازی ستونی پیروی می کند، جایی که داده ها به جای ردیف، در ستون ها ذخیره و سازماندهی می شوند. این طراحی بهینه سازی های مختلف عملکرد را امکان پذیر می کند و به ویژه برای بارهای کاری تحلیلی سودمند است. برخی از ویژگی های اصلی پارکت عبارتند از:
-
ذخیره سازی ستونی: پارکت هر ستون را به طور جداگانه ذخیره می کند و امکان فشرده سازی بهتر و توانایی خواندن تنها ستون های مورد نیاز را در طول اجرای پرس و جو فراهم می کند.
-
تکنیک های فشرده سازی: پارکت از الگوریتم های فشرده سازی مختلفی مانند Snappy، Gzip و Zstandard برای کاهش فضای ذخیره سازی و بهبود عملکرد خواندن داده ها استفاده می کند.
-
پشتیبانی از نوع داده: پشتیبانی گسترده ای از انواع مختلف داده، از جمله انواع اولیه (به عنوان مثال، عدد صحیح، رشته، بولی) و انواع پیچیده (مانند آرایه ها، نقشه ها، ساختارها) ارائه می دهد.
-
تکامل طرحواره: پارکت از تکامل طرحواره پشتیبانی میکند و به کاربران این امکان را میدهد که ستونها را در طول زمان اضافه، حذف یا تغییر دهند، بدون اینکه سازگاری با دادههای موجود را از بین ببرند.
-
Pushdown محمول: این ویژگی گزارههای پرس و جو را به لایه ذخیرهسازی پایین میآورد و میزان دادههایی را که باید در طول اجرای پرس و جو خوانده شوند کاهش میدهد.
-
پردازش موازی: فایلهای پارکت را میتوان به گروههای ردیف کوچکتر تقسیم کرد و پردازش موازی را در محیطهای توزیعشده، مانند Hadoop، امکانپذیر کرد.
-
سازگاری بین پلتفرم: پارکت به گونه ای طراحی شده است که مستقل از پلتفرم باشد و امکان تبادل اطلاعات بدون درز بین سیستم های مختلف را فراهم کند.
ساختار داخلی پارکت: پارکت چگونه کار می کند
فایلهای پارکت شامل چندین مؤلفه است که به قابلیتهای ذخیرهسازی و پردازش کارآمد آن کمک میکند:
-
فراداده فایل: حاوی اطلاعاتی در مورد طرحواره فایل، الگوریتم های فشرده سازی استفاده شده و سایر ویژگی ها است.
-
گروه های ردیف: هر فایل پارکت به گروههای ردیفی تقسیم میشود که بیشتر به ستونهایی تقسیم میشوند. گروه های ردیف به پردازش موازی و فشرده سازی داده ها کمک می کنند.
-
ابرداده ستون: برای هر ستون، Parquet ابرداده هایی مانند نوع داده، کدک فشرده سازی و اطلاعات رمزگذاری را ذخیره می کند.
-
صفحات داده: صفحات داده داده های ستونی واقعی را ذخیره می کنند و به صورت جداگانه فشرده می شوند تا کارایی ذخیره سازی را به حداکثر برسانند.
-
صفحات فرهنگ لغت (اختیاری): برای ستون هایی با مقادیر تکراری، پارکت از رمزگذاری فرهنگ لغت برای ذخیره مقادیر منحصر به فرد و ارجاع به آنها در صفحات داده استفاده می کند.
-
آمار: پارکت همچنین میتواند آماری را برای هر ستون ذخیره کند، مانند مقادیر حداقل و حداکثر، که میتواند برای بهینهسازی پرس و جو مورد استفاده قرار گیرد.
تجزیه و تحلیل ویژگی های کلیدی پارکت
ویژگی های کلیدی پارکت به پذیرش گسترده و محبوبیت آن در پردازش کلان داده کمک می کند. بیایید برخی از این ویژگی ها را تجزیه و تحلیل کنیم:
-
فشرده سازی کارآمد: تکنیکهای ذخیرهسازی ستونی و فشردهسازی پارکت منجر به اندازههای کوچکتر فایل، کاهش هزینههای ذخیرهسازی و بهبود سرعت انتقال دادهها میشود.
-
بهینه سازی عملکرد: پارکت با خواندن تنها ستونهای ضروری در طول پرسوجوها، عملیات ورودی/خروجی را به حداقل میرساند که منجر به پردازش سریعتر پرس و جو میشود.
-
انعطاف پذیری طرحواره: پشتیبانی از تکامل طرحواره امکان تغییرات طرحواره داده های چابک را بدون به خطر انداختن داده های موجود می دهد.
-
پشتیبانی بین زبانی: فایلهای پارکت را میتوان توسط زبانهای برنامهنویسی مختلف، از جمله جاوا، پایتون، سی پلاس پلاس و غیره استفاده کرد که آن را به فرمتی همهکاره برای گردشهای کاری پردازش دادههای متنوع تبدیل میکند.
-
غنای نوع داده: پشتیبانی گسترده از انواع دادههای مختلف، طیف وسیعی از موارد استفاده را برآورده میکند و ساختارهای داده پیچیده رایج در تجزیه و تحلیل دادههای بزرگ را در خود جای میدهد.
-
قابلیت همکاری: به عنوان یک پروژه منبع باز با مشخصات کاملاً تعریف شده، پارکت قابلیت همکاری را در ابزارها و سیستم های مختلف ارتقا می دهد.
انواع پارکت و ویژگی های آنها
پارکت در دو نسخه اصلی عرضه می شود: پارکت-1.0 و پارکت-2.0. دومی نیز به عنوان شناخته شده است پارکت پیکان آپاچی و بر اساس فرمت داده Arrow است. هر دو نسخه مفاهیم و مزایای اساسی یکسانی دارند اما از نظر سازگاری و مجموعه ویژگیها متفاوت هستند. در زیر مقایسه این دو نسخه را مشاهده می کنید:
ویژگی | پارکت-1.0 | پارکت-2.0 (پارکت پیکان آپاچی) |
---|---|---|
تکامل طرحواره | پشتیبانی | پشتیبانی |
فشرده سازی ستونی | پشتیبانی شده (Gzip، Snappy و غیره) | پشتیبانی شده (Gzip، Snappy، LZ4، Zstd) |
رمزگذاری دیکشنری | پشتیبانی | پشتیبانی |
پشتیبانی از داده های تودرتو | پشتیبانی محدود برای انواع پیچیده | پشتیبانی کامل از انواع پیچیده |
سازگاری | سازگار با اکثر ابزارها | سازگاری بهبود یافته از طریق Arrow |
راه های استفاده از پارکت، مشکلات و راه حل ها
راه های استفاده از پارکت
پارکت کاربردهایی را در سناریوهای مختلف با داده های فشرده پیدا می کند، مانند:
-
ذخیره سازی داده ها: پارکت به دلیل عملکرد سریع پرس و جو و ذخیره سازی کارآمد معمولاً برای انبار داده ها استفاده می شود.
-
پردازش کلان داده: در Hadoop و دیگر چارچوبهای پردازش کلان داده، فایلهای پارکت به دلیل قابلیتهای پردازش موازی آنها یک انتخاب ارجح است.
-
دریاچه های داده: پارکت یک فرمت محبوب برای ذخیره انواع داده های مختلف در دریاچه های داده است که تجزیه و تحلیل و استخراج بینش را آسان تر می کند.
-
داده های جریانی: پارکت با پشتیبانی از تکامل طرحواره برای مدیریت جریان های داده در حال تکامل مناسب است.
مشکلات و راه حل ها
-
مشکلات سازگاری: برخی از ابزارهای قدیمی ممکن است پشتیبانی محدودی از Parquet-2.0 داشته باشند. راه حل استفاده از Parquet-1.0 یا به روز رسانی ابزارها برای پشتیبانی از آخرین نسخه است.
-
پیچیدگی طراحی طرحواره: طراحی یک طرحواره انعطاف پذیر نیاز به بررسی دقیق دارد. استفاده از یک طرح یکپارچه در بین منابع داده می تواند یکپارچه سازی داده ها را ساده کند.
-
نگرانی های مربوط به کیفیت داده ها: انواع داده های نادرست یا تغییرات طرحواره می تواند منجر به مشکلات کیفیت داده شود. روشهای اعتبارسنجی داده و تکامل طرحواره میتواند این مشکلات را کاهش دهد.
-
سربار شروع سرد: خواندن چند ردیف اول فایل پارکت به دلیل تجزیه ابرداده می تواند کندتر باشد. پیش ذخیره سازی یا استفاده از یک ساختار فایل بهینه شده می تواند این سربار را کاهش دهد.
ویژگی های اصلی و مقایسه های دیگر
مشخصه | شرح |
---|---|
فرمت ذخیره سازی | ستونی |
گزینه های فشرده سازی | Gzip، Snappy، LZ4، Zstandard |
استقلال پلتفرم | آره |
پشتیبانی از نوع داده | پشتیبانی گسترده از انواع داده های ابتدایی و پیچیده |
تکامل طرحواره | پشتیبانی |
Pushdown محمول | پشتیبانی |
پردازش موازی | از طریق گروه های ردیف فعال می شود |
قابلیت همکاری | با فریم ورک های مختلف داده های بزرگ مانند Apache Hadoop، Apache Spark و Apache Drill کار می کند. |
دیدگاه ها و فناوری های آینده مرتبط با پارکت
آینده پارکت با تلاشهای مداوم برای بهبود قابلیتها و ادغامهای آن امیدوارکننده به نظر میرسد. برخی از زمینه های کلیدی توسعه و پذیرش عبارتند از:
-
موتورهای پرس و جو بهینه شده: پیشرفت های مداوم در موتورهای جستجو مانند Apache Arrow، Apache Drill و Presto عملکرد پرس و جو پارکت را حتی بیشتر افزایش می دهد.
-
پشتیبانی از جریان: انتظار میرود که پارکت با فناوریهای نوظهور مانند آپاچی کافکا و آپاچی فلینک، نقش مهمی در جریان و تحلیل دادههای بلادرنگ داشته باشد.
-
دریاچه های داده ابری: ظهور دریاچههای داده ابری، که توسط پلتفرمهایی مانند Amazon S3 و Azure Data Lake Storage تسهیل میشود، به دلیل مقرونبهصرفه بودن و عملکرد مقیاسپذیر، پذیرش پارکت را هدایت میکند.
-
ادغام هوش مصنوعی و ML: از آنجایی که پارکت به طور کارآمد مجموعه داده های بزرگ را ذخیره می کند، بخشی جدایی ناپذیر از آماده سازی داده ها و خطوط لوله آموزشی در پروژه های یادگیری ماشین و هوش مصنوعی باقی خواهد ماند.
چگونه می توان از سرورهای پروکسی استفاده کرد یا با پارکت مرتبط شد
سرورهای پروکسی می توانند از راه های مختلفی از پارکت بهره مند شوند:
-
ذخیره سازی و فشرده سازی داده ها: سرورهای پروکسی میتوانند از پارکت برای ذخیرهسازی موثر دادههایی که اغلب به آنها دسترسی پیدا میکنند، استفاده کنند و زمان پاسخگویی به درخواستهای بعدی را کاهش دهند.
-
پردازش گزارش و تجزیه و تحلیل: گزارشهای سرور پروکسی که در قالب پارکت جمعآوری شدهاند، میتوانند با استفاده از ابزارهای پردازش دادههای بزرگ تجزیه و تحلیل شوند که منجر به بینشهای ارزشمندی برای بهینهسازی و امنیت شبکه میشود.
-
تبادل و ادغام داده ها: سرورهای پراکسی که دادهها را از منابع مختلف مدیریت میکنند، میتوانند دادهها را در قالب پارکت تبدیل و ذخیره کنند و یکپارچهسازی یکپارچه با پلتفرمهای کلان داده و سیستمهای تحلیلی را ممکن میسازند.
-
بهینه سازی منابع: سرورهای پراکسی با استفاده از ذخیرهسازی ستونی پارکت و قابلیتهای pushdown محمول، میتوانند استفاده از منابع را بهینه کرده و عملکرد کلی را بهبود بخشند.
لینک های مربوطه
برای اطلاعات بیشتر در مورد پارکت می توانید به منابع زیر مراجعه کنید:
- وب سایت رسمی پارکت آپاچی
- مشخصات فرمت پارکت
- وبلاگ مهندسی کلودرا در پارکت
- وب سایت رسمی Apache Arrow (برای اطلاعات در مورد Parket-2.0)