آپاچی کیلین برای پرس و جو کردن جداول رابطه ای عظیم با زمان پاسخ دهی زیر ثانیه ساخته شده است. یک موتور جستجوی جدید و کاملاً توزیع شده در Kylin 4 عملکرد مکعب سازی و پرس و جو را افزایش می دهد.
بهتازگی، جامعه Apache Kylin یک بهروزرسانی بزرگ با در دسترس بودن عمومی Kylin 4 منتشر کرد. Kylin 4 به مأموریت خود برای ارائه یک پلتفرم OLAP (پردازش تحلیلی آنلاین) یکپارچه، با کارایی بالا، سازگار با ابر و منبع باز ادامه میدهد. Kylin 4 معماری Kylin را ارتقا میدهد تا استقرار و مقیاس آن را در فضای ابری آسان کند. نسخه جدید دارای سه بهروزرسانی اصلی پلتفرم و بهبودهای بیشمار دیگر است.
ابتدا، Kylin 4 موتور ذخیره سازی HBase قبلی خود را با پارکت آپاچی جایگزین می کند و امکان جداسازی محاسبات و ذخیره سازی را برای مقیاس پذیری مستقل نامحدود فراهم می کند. دوم، Kylin 4 موتور محاسباتی را یکپارچه می کند و هرگونه وابستگی قبلی به اکوسیستم Hadoop را حذف می کند. این امر تخصیص منابع را بسیار انعطافپذیرتر میکند و در نتیجه کل استفاده از منابع ابری و هزینههای مرتبط را کاهش میدهد. سوم، با معرفی یک موتور جستجوی کاملاً جدید و کاملاً توزیع شده، Kylin 4 باعث می شود که مدت زمان مکعب و تأخیر پرس و جو در مقایسه با نسخه های قبلی عملکرد بسیار بیشتری داشته باشد.
در این مقاله، به جزئیات این نوآوریهای جدید و قابلیتهای جدیدی که آنها را فعال میکنند، خواهیم پرداخت.
Apache Kylin چیست؟
Apache Kylin یک موتور تجزیه و تحلیل توزیع شده منبع باز است که رابط های پرس و جوی SQL بالاتر از Hadoop و Spark را همراه با قابلیت های OLAP برای پشتیبانی از مجموعه داده های بسیار بزرگ ارائه می دهد. در ابتدا در eBay توسعه یافت و به بنیاد نرم افزار آپاچی کمک کرد. Kylin میتواند جداول رابطهای عظیم را با زمان پاسخدهی زیر ثانیه جستجو کند.
ایده اصلی Kylin محاسبه پیشمجموعههای نتایج است، به این معنی که تمام نتایج جستجوی ممکن را از قبل با توجه به ابعاد و اندازههای مشخص شده محاسبه میکند. Kylin اساساً فضا را با زمان مبادله می کند تا پرس و جوهای OLAP را با الگوهای پرس و جو ثابت سرعت بخشد.
Apache Kylin به شما امکان می دهد در سه مرحله میلیاردها ردیف را با تأخیر زیر ثانیه جستجو کنید:
- یک طرح ستاره یا دانه برف را در Hadoop/Spark شناسایی کنید.
- از جداول شناسایی شده یک مکعب بسازید.
- با استفاده از ANSI-SQL پرس و جو کنید و از طریق ODBC، JDBC، یا RESTful API نتیجه بگیرید.
چگونه Kylin کار می کند
مفاهیم
مفاهیم مکعب و مکعب کایلین را می توان از شکل زیر فهمید:
هر ترکیبی از ابعاد مکعب نامیده میشود و مجموعه همه مکعبها یک مکعب است. مکعبی که از همه ابعاد تشکیل شده است مکعب پایه نامیده می شود. همه مکعب ها را می توان از مکعب پایه محاسبه کرد. یک مکعب را می توان بعد از پیش محاسبه به عنوان یک جدول گسترده درک کرد. در طول پرس و جو، Kylin به طور خودکار مناسب ترین مکعب را انتخاب می کند که شرایط پرس و جو را برآورده می کند.
فرایند پرس و جو اولیه
شکل بالا یک سناریوی بدون پیش محاسبه است که نیاز به محاسبه در محل دارد. Agg و Join شامل یک ترکیب میشوند، بنابراین عملکرد ضعیف خواهد بود و منابع بیشتری با مقادیر زیادی از دادهها اشغال میشوند، که بر همزمانی جستجوها تأثیر میگذارد.
بعد از پیش محاسبه، زمانبرترین عملیات دو مرحلهای (Agg/Join) که قبلاً زمانبرتر بود، از طرح اجرای بازنویسی شده ناپدید شد و یک تطابق دقیق مکعبی را نشان داد. علاوه بر این، هنگام تعریف مکعب، میتوانیم ترتیب براساس ستون را انتخاب کنیم تا عملیات مرتبسازی نیازی به محاسبه نباشد. کل محاسبه یک مرحله است بدون هزینه زدن. محاسبه را می توان تنها با چند کار تکمیل کرد، بنابراین همزمانی پرس و جو را بهبود می بخشد.
معماری سازگار با ابر
موتور ذخیره سازی جدید
وقتی آپاچی کیلین متولد شد، به هادوپ متکی بود. در Kylin 3.x و قبل از آن، Kylin از HBase به عنوان یک موتور ذخیره سازی برای ذخیره نتایج پیش محاسباتی تولید شده پس از ساخت مکعب استفاده کرد. پشتیبانی از MapReduce، Spark و Flink به عنوان موتور ساخت. و از موتور جستجو بر اساس Apache Calcite استفاده کرد.
زمان استفاده از تولید و توسعه مداوم به تدریج مشکلات مختلفی را در این معماری آشکار کرده است، مانند هزینه نگهداری بالای HBase و محدودیتهای عملکرد موتور جستجوی کلسیت، که گسترش افقی آن دشوار است. و در حالی که HBase، به عنوان پایگاه داده HDFS، از نظر عملکرد پرس و جو عالی بوده است، اما همچنان دارای معایب زیر است:
- HBase ذخیره سازی ستونی واقعی نیست.
- HBase هیچ شاخص ثانویه ندارد. Rowkey تنها شاخص است.
- HBase هیچ کدگذاری ندارد. Kylin باید رمزگذاری را به تنهایی انجام دهد.
- HBase برای استقرار ابر و مقیاس خودکار مناسب نیست.
- HBase دارای نسخه های API مختلف و مشکلات سازگاری بین آنها است (به عنوان مثال، ۰.۹۸، ۱.۰، ۱.۱، ۲.۰).
- HBase نسخههای مختلف فروشنده و مشکلات سازگاری بین آنها دارد (به عنوان مثال، Cloudera با دیگران سازگار نیست).
در مواجهه با مشکلات فوق، جامعه Apache Kylin به دلایل زیر پیشنهاد جایگزینی HBase را با Apache Parket و Apache Spark داد:
- پارکت یک قالب ذخیرهسازی ستون منبع باز بالغ و پایدار است.
- پارکت سازگارتر با ابر است و میتواند با اکثر سیستمهای فایل ابری (HDFS، Amazon S3، Azure Blob Storage، Alibaba Cloud Object Storage Service و غیره) کار کند.
- پارکت را می توان به خوبی با Hadoop، Hive، Spark، Impala و غیره ادغام کرد.
- Parquet از نمایه های سفارشی پشتیبانی می کند.
موتور ساخت اسپارک جدید
در Kylin 4، موتور Spark تنها موتور ساخته شده است. در مقایسه با موتور ساخت در نسخه های قبلی، موتور اسپارک دارای ویژگی های زیر است:
- Kylin 4 بسیاری از مراحل ساخت را ساده می کند. به عنوان مثال، Kylin 4 تنها به دو مرحله برای ساختن یک مکعب نیاز دارد: شناسایی منابع و مکعب کردن.
- از آنجایی که پارکت دادههای ذخیرهشده را رمزگذاری میکند، دیگر در Kylin 4 به فرآیند رمزگذاری برای فرهنگهای بعد و ستونهای ابعاد نیازی نیست.
- Kylin 4 یک فرهنگ لغت جهانی جدید را پیاده سازی می کند. برای جزئیات بیشتر، لطفاً به این مقاله ویکی Kylin مراجعه کنید. .
- Kylin 4 به طور خودکار پارامترهای Spark را با توجه به منابع کلاستر موجود و کار ساخت تنظیم می کند.
- Kylin 4 عملکرد ساخت را بهبود می بخشد.
موتور جستجوی توزیع شده جدید
Sparder، موتور جستجوی جدید Kylin 4، یک موتور جستجوی توزیع شده است که توسط Spark back end پیاده سازی شده است. Sparder در مقایسه با موتور جستجوی اصلی دارای مزایای زیر است:
- موتور پرس و جو توزیع شده یک نقطه شکست را حذف می کند.
- چارچوب محاسباتی یکپارچه (Spark) برای ساخت و پرس و جو.
- افزایش قابل توجهی در عملکرد جستجوهای پیچیده.
- می توانید از ویژگی های جدید در Spark و اکوسیستم Spark بهره مند شوید.
Kylin 4 در ابر
رایانش ابری دارای بسیاری از ویژگی های قانع کننده است (ظرفیت ذخیره سازی نامحدود، تعمیر و نگهداری آسان، پرداخت هزینه برای آنچه استفاده می کنید) که شرکت های بیشتری را به ابر عمومی می کشاند. ما می بینیم که بسیاری از شرکت ها از انتقال زیرساخت های داخلی خود به فضای ابری، دستیابی به اهداف TCO پایین تر (هزینه کل مالکیت)، مقیاس پذیری و قابلیت اطمینان بیشتر، و حفاظت از داده های قوی تر سود می برند.
از جنبه مهندسی، رایانش ابری همچنین تغییراتی را در نحوه طراحی و استقرار نرمافزار شرکتها ایجاد میکند. معماری نرمافزار مدولار، برنامهها را برای توسعه و استفاده کاربرپسند و انعطافپذیر میسازد.
Kylin 3 به Hadoop متکی است. قبل از استقرار یک نمونه Kylin 3، کاربران باید یک خوشه Hadoop شامل خدمات سنگین مانند HDFS و HBase را آماده کنند. کاربران Kylin 3 باید دانش زیادی در مورد نحوه نگهداری و بهینه سازی این اجزای Hadoop کسب کنند. از آنجایی که Kylin 3 معماری پیچیده ای دارد و از مشکلات قابلیت اطمینان و مقیاس پذیری رنج می برد، به طور کلی برای استقرار ابر مناسب نیست.
همه اینها با Kylin 4 تغییر می کند. Kylin 4 وابستگی Kylin را به اجزای Hadoop مانند Yarn و HBase حذف می کند. معماری «Kylin plus Spark plus object storage» پیچیدگی کمتری دارد و استقرار در فضای ابری را آسانتر و قابل مدیریتتر میکند. در این معماری جدید، پارکت جایگزین HBase و Spark جایگزین Yarn و MapReduce می شود.
این شکل نشان میدهد که چگونه Kylin 4 میتواند در یک ابر عمومی مستقر شود. اول اینکه معماری جدید سبک است و اجزای مورد نیاز کمتر از قبل است. استقرار آسانتر و سریعتر است و اکثر اجزا بدون حالت هستند. در مقابل، HDFS و HBase خدمات دولتی هستند. بی تابعیتی به این معنی است که ما می توانیم این منابع را زمانی که به آنها نیاز نداریم حذف کنیم. دوم، مقیاسگذاری بسیار سادهتر از قبل است و به سادگی با افزودن یا حذف این مؤلفهها به Spark Cluster انجام میشود.
عملکرد Kylin 4 در AWS
آماده سازی
به منظور کمک به خوانندگان در درک تفاوتهای عملکرد بین Kylin 3 و Kylin 4، گزارش معیار عملکرد در یک محیط نرم افزاری و سخت افزاری استاندارد. Amazon EMR به عنوان پلتفرم معیار ما انتخاب شد.
علاوه بر این، TPC-H و SSB به عنوان استانداردهای معیار ما. ضریب مقیاس استفاده شده در این آزمون ۱۰ است (یعنی جدول حقایق دارای ۶۰ میلیون ردیف است).
جدول زیر جنبههای مقایسه بین نسخههای مختلف را در این گزارش معیار نشان میدهد.
<جدول>
سنجش/جنبه
توضیح
مدت مکعب
مدت فرآیند پیش محاسبه (ساخت مکعب) (بارگیری جدول منبع در Kylin)
اندازه مکعب
فضای دیسک اشغال شده توسط مکعب/شاخص
زمان پاسخ
آزمون جستجوی سریال به مدت ۱۵ دقیقه، صدک ۹۵ از زمان پاسخ کلی را به عنوان نتیجه در نظر می گیرد.
سنجش/جنبه
توضیح
مدت مکعب
مدت فرآیند پیش محاسبه (ساخت مکعب) (بارگیری جدول منبع در Kylin)
اندازه مکعب
فضای دیسک اشغال شده توسط مکعب/شاخص
زمان پاسخ
آزمون جستجوی سریال به مدت ۱۵ دقیقه، صدک ۹۵ از زمان پاسخ کلی را به عنوان نتیجه در نظر می گیرد.
جدول زیر اطلاعاتی درباره نرم افزار و سخت افزار مورد استفاده در این معیار عملکرد نشان می دهد.
<جدول>
مورد
مقدار
نوع نمونه
m5.4xlarge
حافظه گره
۶۴ گیگابایت
گره vCPU
۱۶
دیسک گره
۴۰۰ * ۲; SSD
شبکه مارک با
حداکثر ۱۰ گیگابیت در ثانیه
تعداد گره
یک گره اصلی و چهار گره کارگر
حافظه تخصیص یافته به Yarn
۲۰۲ گیگابایت
هستههای اختصاص داده شده روی نخ
۵۲
نسخه Kylin
۳.۱.۲ و ۴.۰.۰
نسخه EMR
۵.۳۱
نسخه Hadoop
۲.۱۰.۰
نسخه HBase
۱.۴.۱۳
مورد
مقدار
نوع نمونه
m5.4xlarge
حافظه گره
۶۴ گیگابایت
گره vCPU
۱۶
دیسک گره
۴۰۰ * ۲; SSD
شبکه مارک با
حداکثر ۱۰ گیگابیت در ثانیه
تعداد گره
یک گره اصلی و چهار گره کارگر
حافظه تخصیص یافته به Yarn
۲۰۲ گیگابایت
هستههای اختصاص داده شده روی نخ
۵۲
نسخه Kylin
۳.۱.۲ و ۴.۰.۰
نسخه EMR
۵.۳۱
نسخه Hadoop
۲.۱۰.۰
نسخه HBase
۱.۴.۱۳
نتایج معیار
مدت مکعب TPC-H (sf = 10)
اندازه ذخیره سازی TPC-H (sf = 10)
میانگین زمان پاسخ پرس و جو SSB (sf=10)
میانگین زمان پاسخ پرس و جو TPC-H (sf=10)
نتیجه گیری
در مقایسه با موتور مکعب MapReduce Kylin 3، به لطف استفاده بیشتر از منابع و عدم تبدیل بیشتر مکعب ها به یک فرمت داده خاص (HFile)، Kylin 4 مدت زمان مکعب را به میزان ۶۲.۶% کاهش می دهد. p>
در Kylin 3، فایلهای مکعبی در دو فرمت مختلف ذخیره میشوند. در عوض Kylin 4 از پارکت استفاده می کند. ما می دانیم که پارکت کارایی رمزگذاری بهتر و نسبت فشرده سازی بالاتری دارد، بنابراین فضای دیسک مصرف شده از همان مکعب ها تا حد زیادی ۷۲.۵۶٪ کاهش یافت.
Kylin 3 (موتور MapReduce) استفاده کمتری از منابع دارد.
Kylin 4 (موتور Spark جدید) استفاده از منابع بالاتر و پایدارتری دارد.
در سناریوهای پرس و جوی بزرگ (پرس و جوهایی که محاسبات پیچیده در محل را روی تعداد زیادی پارتیشن/فایل اسکن می کنند و انجام می دهند) بهینه سازی پرس و جو Kylin 3 دشوار است، به بهینه سازی مکرر سرورهای HBase RS و پرس و جوی Kylin نیاز دارد. سرورها در سناریوهای تست استرس، گرههای پرس و جو ناپایدار میشوند زیرا باید پس از محاسبه روی مجموعه دادههای بزرگ انجام دهند و عملکرد (تأخیر پرس و جو) در طول زمان کاهش مییابد. Kylin 4 تنها گلوگاه سرور پرس و جوی Kylin را حذف می کند و زمان پاسخ و QPS را به طور قابل توجهی بهبود می بخشد. علاوه بر این، عملکرد در طول تست استرس پایدار است. در مجموعه پرس و جو TPC-H، زمان پاسخگویی Kylin 4 5 برابر به ۷ برابر و همزمانی آن ۴ برابر بهبود یافته است.
زمان پاسخ P95 پرس و جو TPC-H تحت سطوح همزمانی مختلف.
در سناریوهای Point Query (پرس و جوهایی که تعداد کمی از پارتیشن ها/فایل ها را اسکن می کنند و محاسبات زیادی را در محل انجام نمی دهند) Kylin 4 می تواند پس از برخی تنظیمات ساده پارامتر، نیاز به تأخیر پرس و جوی فرعی را برآورده کند. ، و عملکرد آن نسبتاً نزدیک به Kylin 3 است (به طور خاص، فقط کمی بدتر).
Kylin 3 دارای مراحل ساخت بسیاری از جمله مراحلی است که به اجزای مختلفی مانند Hive، MapReduce و HBase بستگی دارد. کارکردن Kylin 3 مستلزم یادگیری و درک بسیاری از معماری ها و جزئیات فنی و آشنایی با بسیاری از پارامترهای مرتبط با این اجزا است.
Kylin 4 همه این محدودیت ها را حذف می کند. Cubing و پرس و جوها در Kylin 4 به طور یکنواخت به موتور محبوب Spark سوئیچ می شوند و کاربران جدید فقط باید برای یادگیری و تنظیم پارامترها به Spark مسلط شوند. این مواد آموزشی برای Spark را می توان به راحتی پیدا کرد و پارامترهای رایج مورد استفاده بسیار کمتر از Kylin 3 هستند.
Xiaoxiang Yu یک مهندس نرم افزار در Kyligence و عضو Apache Kylin PMC (کمیته مدیریت پروژه) است. . او در سال ۲۰۱۸ یک نگهدارنده پروژه Kylin فعال شد و مدیر انتشار چندین نسخه از جدیدترین نسخه ها بوده است. Yaqian Zhang یک مهندس نرم افزار در Kyligence، متولی و نگهدارنده Apache Kylin است.
—
New Tech Forum مکانی برای کاوش و بحث در مورد فناوری سازمانی نوظهور در عمق و وسعت بی سابقه ای فراهم می کند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه سوالات را به newtechforum@infoworld.com ارسال کنید.
پست های مرتبط
تعمیرات اساسی آپاچی کیلین برای ابر
تعمیرات اساسی آپاچی کیلین برای ابر
تعمیرات اساسی آپاچی کیلین برای ابر