المقدمة
هذا المقال عبارة عن تجميع لمقال آخر . في ذلك ، أعتزم التركيز على أدوات للعمل مع البيانات الضخمة ، مع التركيز على تحليل البيانات.
لذلك ، لنفترض أنك قبلت البيانات الأولية وعالجتها ، وهي الآن جاهزة للاستخدام مرة أخرى.
هناك العديد من الأدوات المستخدمة لمعالجة البيانات ، ولكل منها مزاياها وعيوبها. معظمها موجه نحو OLAP ، لكن بعضها أيضًا تم تحسين OLTP. يستخدم بعضها تنسيقات قياسية وتركز فقط على تنفيذ الاستعلامات ، بينما يستخدم البعض الآخر التنسيق أو التخزين الخاص بهم لنقل البيانات المعالجة إلى المصدر من أجل تحسين الأداء. تم تحسين بعضها لتخزين البيانات باستخدام مخططات معينة ، مثل نجمة أو ندفة الثلج ، لكن البعض الآخر أكثر مرونة. تلخيصًا ، لدينا المعارضات التالية:
- مستودع البيانات مقابل بحيرة
- Hadoop مقابل التخزين دون اتصال
- OLAP مقابل OLTP
- محرك الاستعلام مقابل آليات OLAP
سننظر أيضًا في أدوات معالجة البيانات مع القدرة على تنفيذ الاستعلامات.
أدوات معالجة البيانات
يمكن لمعظم الأدوات المذكورة الاتصال بخادم البيانات الوصفية مثل Hive وتشغيل الاستعلامات وإنشاء طرق العرض وما إلى ذلك. غالبًا ما يستخدم هذا لإنشاء مستويات تقارير إضافية (محسّنة). يوفر
Spark SQL طريقة لمزج استعلامات SQL بسلاسة مع برامج Spark ، بحيث يمكنك مزج واجهات API DataFrame مع SQL. يحتوي على تكامل Hive واتصال JDBC أو ODBC قياسي ، بحيث يمكنك توصيل Tableau أو Looker أو أي أداة BI ببياناتك من خلال Spark.
اباتشي فلينككما يوفر SQL API. يعتمد دعم Flink's SQL على Apache Calcite ، الذي يطبق معيار SQL. يتكامل أيضًا مع Hive عبر HiveCatalog. على سبيل المثال ، يمكن للمستخدمين تخزين جداول Kafka أو ElasticSearch في Hive Metastore باستخدام HiveCatalog وإعادة استخدامها لاحقًا في استعلامات SQL. يوفر
كافكا أيضًا قدرات SQL. بشكل عام ، توفر معظم أدوات معالجة البيانات واجهات SQL.
أدوات الاستعلام
يركز هذا النوع من الأدوات على استعلام موحد لمصادر بيانات مختلفة بتنسيقات مختلفة. الفكرة هي توجيه الاستعلامات إلى بحيرة البيانات الخاصة بك باستخدام SQL كما لو كانت قاعدة بيانات علائقية عادية ، على الرغم من وجود بعض القيود عليها. يمكن لبعض هذه الأدوات أيضًا الاستعلام عن قواعد بيانات NoSQL وغير ذلك الكثير. توفر هذه الأدوات واجهة JDBC لأدوات خارجية مثل Tableau أو Looker للاتصال بشكل آمن ببحيرة البيانات الخاصة بك. أدوات الاستعلام هي الخيار الأبطأ ، ولكنها توفر أكبر قدر من المرونة.
اباتشي خنزير: إحدى الأدوات الأولى بجانب Hive. لها لغتها الخاصة بخلاف SQL. السمة المميزة للبرامج التي أنشأها Pig هي أن هيكلها يفسح المجال للتوازي الكبير ، والذي بدوره يسمح لهم بمعالجة مجموعات كبيرة جدًا من البيانات. لهذا السبب ، لا تزال غير قديمة مقارنة بالأنظمة الحديثة القائمة على SQL.
المعزوفة: منصة مفتوحة المصدر من Facebook. إنه محرك استعلام SQL موزع لأداء استعلامات تحليلية تفاعلية مقابل مصادر البيانات من أي حجم. يتيح لك Presto الاستعلام عن البيانات أينما كانت ، بما في ذلك Hive و Cassandra وقواعد البيانات العلائقية وأنظمة الملفات. يمكنه الاستعلام عن مجموعات البيانات الكبيرة في ثوانٍ. Presto مستقل عن Hadoop ، لكنه يتكامل مع معظم أدواته ، وخاصة Hive ، لتنفيذ استعلامات SQL.
اباتشي حفر: يوفر محرك استعلام SQL خالي من المخططات لـ Hadoop و NoSQL وحتى التخزين السحابي. لا يعتمد على Hadoop ، لكن لديه العديد من التكامل مع أدوات النظام البيئي مثل Hive. يمكن أن يجمع استعلام واحد البيانات من متاجر متعددة ، مع إجراء تحسينات خاصة بكل منها. هذا جيد جدا لأن يسمح للمحللين بمعالجة أي بيانات كجدول ، حتى لو كانوا يقرؤون الملف بالفعل. الحفر يدعم تماما معيار SQL. يمكن لمستخدمي الأعمال والمحللين وعلماء البيانات استخدام أدوات ذكاء الأعمال القياسية مثل Tableau و Qlik و Excel للتفاعل مع مخازن البيانات غير العلائقية باستخدام برامج تشغيل Drill JDBC و ODBC. الى جانب ذلك ،يمكن للمطورين استخدام REST API Drill البسيط في تطبيقاتهم المخصصة لإنشاء تصورات جميلة.
قواعد بيانات OLTP
على الرغم من تحسين Hadoop لـ OLAP ، لا تزال هناك مواقف تريد فيها تشغيل استعلامات OLTP مقابل تطبيق تفاعلي. يحتوي
HBase على خصائص ACID محدودة جدًا حسب التصميم حيث تم تصميمه على نطاق واسع ولا يوفر إمكانات ACID خارج الصندوق ، ولكن يمكن استخدامه لبعض سيناريوهات OLTP.
تم تصميم Apache Phoenix فوق HBase ويوفر طريقة لإجراء استعلامات OTLP عبر نظام Hadoop البيئي. تم دمج Apache Phoenix بالكامل مع منتجات Hadoop الأخرى مثل Spark و Hive و Pig و Flume و Map Reduce. يمكنه أيضًا تخزين البيانات الوصفية ودعم إنشاء الجدول وتغييرات الإصدارات المتزايدة باستخدام أوامر DDL. إنه يعمل بسرعة كبيرة ، أسرع من استخدام المثقاب أو غيره
آلية الطلبات.
يمكنك استخدام أي قاعدة بيانات واسعة النطاق خارج نظام Hadoop البيئي مثل Cassandra و YugaByteDB و ScyllaDB لـ OTLP.
أخيرًا ، من الشائع جدًا أن قواعد البيانات السريعة من أي نوع ، مثل MongoDB أو MySQL ، تحتوي على مجموعة فرعية أبطأ من البيانات ، وعادة ما تكون الأحدث. يمكن لمحركات الاستعلام المذكورة أعلاه دمج البيانات بين التخزين البطيء والسريع في استعلام واحد.
الفهرسة الموزعة
توفر هذه الأدوات طرقًا لتخزين واسترداد البيانات النصية غير المهيكلة ، وهي تعيش خارج نظام Hadoop البيئي لأنها تتطلب هياكل متخصصة لتخزين البيانات. الفكرة هي استخدام فهرس مقلوب لإجراء عمليات بحث سريعة. بالإضافة إلى البحث عن النص ، يمكن استخدام هذه التقنية لمجموعة متنوعة من الأغراض ، مثل تخزين السجلات والأحداث وما إلى ذلك. هناك خياران رئيسيان:
Solr: هذه منصة بحث مفتوحة المصدر مشهورة وسريعة للغاية مبنية على Apache Lucene. Solr هي أداة قوية وقابلة للتطوير ومرنة ، توفر الفهرسة الموزعة ، والنسخ المتماثل المتوازن ، والاستعلامات ، وتجاوز الفشل والاسترداد التلقائي ، والتزويد المركزي ، والمزيد. إنه رائع للبحث عن النص ، لكن حالات استخدامه محدودة مقارنة بـ ElasticSearch.
البحث المرن: إنه أيضًا فهرس موزع شائع جدًا ، ولكنه نما إلى نظام بيئي خاص به يمتد على العديد من حالات الاستخدام مثل APM والبحث وتخزين النصوص والتحليلات ولوحات المعلومات والتعلم الآلي والمزيد. إنها بالتأكيد أداة في صندوق الأدوات الخاص بك إما لـ DevOps أو خط أنابيب البيانات لأنها متعددة الاستخدامات. يمكنه أيضًا تخزين مقاطع الفيديو والصور والبحث فيها.
البحث المرنيمكن استخدامها كطبقة تخزين سريعة لبحيرة البيانات الخاصة بك لوظائف البحث المتقدمة. إذا كنت تقوم بتخزين بياناتك في قاعدة بيانات كبيرة ذات قيمة رئيسية مثل HBase أو Cassandra ، والتي توفر إمكانات بحث محدودة للغاية بسبب نقص الاتصالات ، فيمكنك وضع ElasticSearch أمامها لتشغيل الاستعلامات وإرجاع المعرفات ، ثم إجراء بحث سريع في قاعدة البيانات الخاصة بك.
يمكن استخدامه أيضًا للتحليلات. يمكنك تصدير بياناتك وفهرستها ثم الاستعلام عنها باستخدام Kibanaمن خلال إنشاء لوحات المعلومات والتقارير والمزيد ، يمكنك إضافة الرسوم البيانية والتجميعات المعقدة وحتى تشغيل خوارزميات التعلم الآلي فوق بياناتك. النظام البيئي ElasticSearch ضخم ويستحق الاستكشاف.
قواعد بيانات OLAP
هنا نلقي نظرة على قواعد البيانات التي يمكنها أيضًا توفير مخزن بيانات وصفية لمخططات الاستعلام. بالمقارنة مع أنظمة تنفيذ الاستعلام ، توفر هذه الأدوات أيضًا تخزين البيانات ويمكن تطبيقها على أنظمة تخزين محددة (مخطط النجوم). تستخدم هذه الأدوات بناء جملة SQL. يمكن أن تتفاعل Spark أو الأنظمة الأساسية الأخرى معهم.
خلية اباتشي: لقد ناقشنا بالفعل Hive كمستودع مخطط مركزي لـ Spark وأدوات أخرى حتى يتمكنوا من استخدام SQL ، ولكن يمكن لـ Hive تخزين البيانات أيضًا ، بحيث يمكنك استخدامها كمستودع. يمكنه الوصول إلى HDFS أو HBase. عند طلب Hive ، فإنه يستخدم Apache Tez أو Apache Spark أو MapReduce ، وهو أسرع بكثير من Tez أو Spark. كما أن لديها لغة إجرائية تسمى HPL-SQL. Hive هو مخزن بيانات تعريف شائع للغاية لـ Spark SQL.
اباتشي امبالا: إنها قاعدة بيانات تحليلية أصلية لبرنامج Hadoop يمكنك استخدامها لتخزين البيانات والاستعلام عنها بكفاءة. يمكنها الاتصال بـ Hive للحصول على البيانات الوصفية باستخدام Hcatalog. توفر إمبالا زمن انتقال منخفض وتزامنًا عاليًا لاستعلامات ذكاء الأعمال والتحليلات في Hadoop (والتي لا توفرها الأنظمة الأساسية المعبأة مثل Apache Hive). تتوسع إمبالا أيضًا بشكل خطي ، حتى في البيئات متعددة المستخدمين ، وهو أفضل بديل للاستعلام عن Hive. تم دمج Impala مع أمان Hadoop و Kerberos الخاصين للمصادقة ، حتى تتمكن من إدارة الوصول إلى البيانات بأمان. يستخدم HBase و HDFS لتخزين البيانات.
اباتشي تاجو: هذا مستودع بيانات آخر لبرنامج Hadoop. تم تصميم Tajo لإجراء استعلامات مخصصة بزمن انتقال منخفض وقابلية التوسع والتجميع عبر الإنترنت و ETL لمجموعات البيانات الكبيرة المخزنة في HDFS ومصادر البيانات الأخرى. وهو يدعم التكامل مع Hive Metastore للوصول إلى المخططات الشائعة. كما أن لديها العديد من تحسينات الاستعلام ، فهي قابلة للتطوير ومتسامحة مع الأخطاء وتوفر واجهة JDBC.
اباتشي كيلين: هذا مستودع بيانات تحليلي موزع جديد. Kylin سريع للغاية ، لذلك يمكن استخدامه لاستكمال بعض قواعد البيانات الأخرى مثل Hive لحالات الاستخدام حيث يكون الأداء بالغ الأهمية ، مثل لوحات المعلومات أو التقارير التفاعلية. من المحتمل أنه أفضل مستودع بيانات OLAP ، ولكن يصعب استخدامه. مشكلة أخرى هي أن مساحة التخزين مطلوبة بسبب الامتداد العالي. الفكرة هي أنه إذا لم تكن محركات الاستعلام أو الخلية سريعة بما يكفي ، فيمكنك إنشاء "مكعب" في Kylin ، وهو جدول متعدد الأبعاد مُحسَّن لـ OLAP مع محسوب مسبقًا
القيم التي يمكنك الاستعلام عنها من لوحات المعلومات أو التقارير التفاعلية. يمكنه إنشاء مكعبات مباشرة من Spark وحتى بالقرب من كافكا في الوقت الفعلي.
أدوات OLAP
في هذه الفئة ، أقوم بتضمين محركات أحدث ، وهي تطورات لقواعد بيانات OLAP السابقة ، والتي توفر المزيد من الوظائف ، وإنشاء نظام أساسي للتحليلات الشاملة. في الواقع ، هم مزيج من الفئتين السابقتين اللتين تضيفان فهرسة إلى قواعد بيانات OLAP الخاصة بك. إنهم يعيشون خارج منصة Hadoop لكنهم مندمجون بإحكام. في هذه الحالة ، عادةً ما تتخطى خطوة المعالجة وتستخدم هذه الأدوات مباشرةً.
يحاولون حل مشكلة الاستعلام عن البيانات في الوقت الفعلي والبيانات التاريخية بطريقة موحدة ، بحيث يمكنك الاستعلام فورًا عن البيانات في الوقت الفعلي بمجرد توفرها ، جنبًا إلى جنب مع البيانات التاريخية ذات زمن الانتقال المنخفض حتى تتمكن من إنشاء تطبيقات ولوحات معلومات تفاعلية. تسمح هذه الأدوات ، في كثير من الحالات ، بالاستعلام عن البيانات الأولية مع القليل من التحويل على نمط ELT أو بدونه ، ولكن بأداء عالٍ ، أفضل من قواعد بيانات OLAP التقليدية.
ما تشترك فيه هو أنها توفر عرضًا موحدًا للبيانات ، واستيعاب البيانات الحية والدُفعية ، والفهرسة الموزعة ، وتنسيق البيانات الأصلي ، ودعم SQL ، وواجهة JDBC ، ودعم البيانات الساخنة والباردة ، والتكاملات المتعددة ، وتخزين البيانات الوصفية.
Apache Druid: هذا هو أشهر محرك OLAP في الوقت الفعلي. إنه يركز على بيانات السلاسل الزمنية ، ولكن يمكن استخدامه لأي بيانات. يستخدم تنسيقه العمودي الخاص الذي يمكنه ضغط البيانات كثيرًا ، ويحتوي على العديد من التحسينات المضمنة مثل المؤشرات المقلوبة وترميز النص والبيانات القابلة للطي تلقائيًا والمزيد. يتم تحميل البيانات في الوقت الفعلي باستخدام Tranquility أو Kafka ، والتي لها زمن انتقال منخفض جدًا ، يتم تخزينها في الذاكرة بتنسيق سلسلة محسّن للكتابة ، ولكن بمجرد وصولها ، فهي متاحة للاستعلام تمامًا مثل البيانات التي تم تنزيلها سابقًا. عملية الخلفية مسؤولة عن نقل البيانات بشكل غير متزامن إلى نظام تخزين عميق مثل HDFS. عندما يتم نقل البيانات إلى التخزين العميق ، يتم تقسيمها إلى أجزاء أصغر ،فصل زمني ، يسمى شرائح ، والتي تم تحسينها بشكل جيد لطلبات البحث ذات زمن الانتقال المنخفض. يحتوي هذا المقطع على طابع زمني لعدة أبعاد يمكنك استخدامها للتصفية والتجميع ، والمقاييس ، وهي حالات محسوبة مسبقًا. في استقبال الرشقات ، يتم حفظ البيانات مباشرة في مقاطع. يدعم Apache Druid بلع الدفع والسحب والتكامل مع Hive و Spark وحتى NiFi. يمكنه استخدام مخزن البيانات الوصفية Hive ويدعم استعلامات Hive SQL ، والتي يتم تحويلها بعد ذلك إلى استعلامات JSON التي يستخدمها Druid. يدعم تكامل Hive JDBC ، لذا يمكنك توصيل أي أداة ذكاء أعمال. كما أن لديها مستودع البيانات الوصفية الخاص بها ، وعادة ما يتم استخدام MySQL لهذا الغرض.يمكن أن تقبل كميات هائلة من البيانات والمقاييس بشكل جيد للغاية. المشكلة الرئيسية هي أنه يحتوي على العديد من المكونات ويصعب إدارته ونشره.
Apache Pinot : هذا هو أحدث بديل Druid مفتوح المصدر من LinkedIn. مقارنةً بـ Druid ، فإنه يوفر وقت استجابة أقل بفضل فهرس Startree ، الذي يقوم بإجراء حساب مسبق جزئي ، بحيث يمكن استخدامه للتطبيقات التي تركز على المستخدم (تم استخدامه للحصول على خلاصات LinkedIn). يستخدم فهرسًا تم فرزه بدلاً من فهرس مقلوب ، وهو أسرع. يحتوي على بنية إضافية قابلة للتوسيع ولديه أيضًا العديد من عمليات الدمج ، لكنه لا يدعم Hive. كما أنه يدمج معالجة الدُفعات والمعالجة في الوقت الفعلي ، ويوفر تحميلًا سريعًا وفهرسًا ذكيًا ويخزن البيانات في قطاعات. إنه أسهل وأسرع للنشر مقارنة بـ Druid ، لكنه يبدو غير ناضج قليلاً في الوقت الحالي.
ClickHouse: مكتوبًا بلغة C ++ ، يوفر هذا المحرك أداءً مذهلاً لاستعلامات OLAP ، خاصةً للتجمعات. إنها تشبه قاعدة البيانات العلائقية ، لذا يمكنك نمذجة البيانات بسهولة. من السهل جدًا إعداده ولديه العديد من عمليات الدمج.
اقرأ هذه المقالة التي تقارن المحركات الثلاثة بالتفصيل.
ابدأ صغيرًا بفحص بياناتك قبل اتخاذ قرار. هذه الآليات الجديدة قوية للغاية ، ولكن يصعب استخدامها. إذا كان بإمكانك الانتظار لساعات ، فاستخدم المعالجة المجمعة وقاعدة بيانات مثل Hive أو Tajo ؛ ثم استخدم Kylin لتسريع استعلامات OLAP وجعلها أكثر تفاعلية. إذا لم يكن ذلك كافيًا وكنت بحاجة إلى وقت وصول أقل وبيانات في الوقت الفعلي ، ففكر في محركات OLAP. يعتبر Druid أكثر ملاءمة للتحليل في الوقت الفعلي. تركز Kaileen بشكل أكبر على حالات OLAP. يتمتع Druid بتكامل جيد مع كافكا كبث مباشر. يتلقى Kylin البيانات من Hive أو Kafka على دفعات ، على الرغم من التخطيط لاستقبال مباشر.
أخيرًا ، Greenplum هو محرك OLAP آخر يركز بشكل أكبر على الذكاء الاصطناعي.
عرض مرئي للمعلومات
هناك العديد من الأدوات التجارية للتصور مثل Qlik أو Looker أو Tableau.
إذا كنت تفضل Open Source ، فابحث عن SuperSet. إنها أداة رائعة تدعم جميع الأدوات التي ذكرناها ، ولها محرر رائع وسريع حقًا ، فهي تستخدم SQLAlchemy لدعم العديد من قواعد البيانات.
الأدوات الأخرى المثيرة للاهتمام هي Metabase أو Falcon .
خاتمة
هناك مجموعة واسعة من الأدوات التي يمكن استخدامها لمعالجة البيانات ، من محركات الاستعلام المرنة مثل Presto إلى المخازن عالية الأداء مثل Kylin. لا يوجد حل واحد يناسب الجميع ، أنصحك بدراسة البيانات المتاحة والبدء صغيرًا. تعد محركات الاستعلام نقطة انطلاق جيدة بسبب مرونتها. بعد ذلك ، بالنسبة لحالات الاستخدام المختلفة ، قد تحتاج إلى إضافة أدوات إضافية لتحقيق مستوى الخدمة الذي تريده.
انتبه بشكل خاص للأدوات الجديدة مثل Druid أو Pinot ، والتي توفر طريقة سهلة لتحليل كميات هائلة من البيانات بزمن انتقال منخفض للغاية ، وسد الفجوة بين OLTP و OLAP من حيث الأداء. قد تميل إلى التفكير في المعالجة والحساب المسبق للتجمعات وما شابه ، لكن ضع في اعتبارك هذه الأدوات إذا كنت تريد تبسيط عملك.