هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها
يرجى مراجعة هذه المقالة وإزالة وسم المقالات غير المراجعة، ووسمها بوسوم الصيانة المناسبة.

اباتشي خلية

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
Apache Hive
Apache Hive logo.svg
معلومات عامة
نوع
نظام التشغيل
المنصة
النموذج المصدري
المطورون
موقع الويب
معلومات تقنية
لغة البرمجة
الإصدار الأول
الإصدار الأخير
المستودع
الرخصة

أباتشي خلية وبالإنجليزية (Apache Hive) هو مشروع لبرمجيات مستودع البيانات تم إنشاؤه فوق أباتشي هدوب لتوفير الاستعلام عن البيانات وتحليلها. يعطي خليه واجهة تشبه إس كيو إل للاستعلام عن البيانات المخزنة في قواعد البيانات وأنظمة الملفات المختلفة التي تتكامل مع هدوب . يجب تنفيذ استعلامات اس كيو ال التقليدية في MapReduce Java API لتنفيذ تطبيقات واستعلامات اس كيو ال عبر البيانات الموزعة. يوفر خلية تجريد اس كيو ال الضروري لدمج الاستعلامات المشابهة لـ SQL (خلية كيو ال ) في جافا الأساسي دون الحاجة إلى تنفيذ الاستعلامات في Java API منخفض المستوى. نظرًا لأن معظم تطبيقات تخزين البيانات تعمل مع لغات الاستعلام القائمة على SQL ، فإن Hive يساعد على نقل التطبيقات المستندة من اس كيو ال إلى هدوب. بينما تم تطوير أباتشي خلية في البداية بواسطة فيسبوك ، يتم استخدام أباتشي خلية وتطويره بواسطة شركات أخرى مثل نتفليكس وهيئة تنظيم الصناعة المالية الأمريكية (FINRA). تحتفظ أمازون بشوكة برنامج أباتشي خلية المضمنة في Amazon Elastic MapReduce على خدمات أمازون ويب .

سمات[عدل]

يدعم أباتشي خلية تحليل مجموعات البيانات الكبيرة المخزنة في Hadoop's HDFS وأنظمة الملفات المتوافقة مثل نظام ملفات امازون اس 3 و Alluxio . يوفر لغة استعلام شبيهة بلغة اس كيو ال مع مخطط على القراءة وتحويل الاستعلامات بشفافية إلى وظائف MapReduce و Apache Tez و Spark. يمكن تشغيل جميع محركات التنفيذ الثلاثة في مفاوض موارد Hadoop ، YARN (مفاوض موارد آخر). لتسريع الاستعلامات، قدمت فهارس، ولكن تمت إزالة هذه الميزة في الإصدار 3.0 تشمل الميزات الأخرى لـ Hive ما يلي:

  • أنواع التخزين المختلفة مثل نص عادي و RCFile و HBase و ORC وغيرها.
  • تخزين البيانات الوصفية في نظام إدارة قواعد البيانات العلائقية ، مما يقلل بشكل كبير من وقت إجراء عمليات التحقق الدلالية أثناء تنفيذ الاستعلام.
  • التشغيل على البيانات المضغوطة المخزنة في نظام هدوب البيئي باستخدام الخوارزميات بما في ذلك DEFLATE و BWT و snappy وما إلى ذلك.
  • وظائف مدمجة معرّفة من قبل المستخدم (UDFs) لمعالجة التواريخ والسلاسل وأدوات التنقيب عن البيانات الأخرى. يدعم Hive تمديد مجموعة UDF للتعامل مع حالات الاستخدام غير المدعومة من قبل الوظائف المضمنة.
  • استعلامات مثل SQL (HiveQL) ، والتي يتم تحويلها ضمنيًا إلى وظائف MapReduce أو Tez أو Spark.

بشكل افتراضي، يخزن Hive البيانات الوصفية في قاعدة بيانات Apache Derby المضمنة، ويمكن استخدام قواعد بيانات العميل / الخادم الأخرى مثل MySQL اختياريًا. [1] كانت تنسيقات الملفات الأربعة الأولى المدعومة في Hive عبارة عن نص عادي، [1] ملف تسلسل، تنسيق عمودي للصف المحسن (ORC) [2] وملف RC . [3] يمكن قراءة Apache Parquet عبر البرنامج المساعد في إصدارات أحدث من 0.10 وتبدأ أصلاً من 0.13. [4] [5] تدعم ملحقات Hive الإضافية الاستعلام عن Bitcoin Blockchain . [6]

هندسة معمارية[عدل]

المكونات الرئيسية لبنية الخلية هي:

  • ميتاستور: يخزن البيانات الوصفية لكل جدول من الجداول مثل مخططها وموقعها. ويتضمن أيضًا البيانات الوصفية للقسم التي تساعد السائق على تتبع تقدم مجموعات البيانات المختلفة الموزعة على الكتلة. [7] يتم تخزين البيانات بتنسيق RDBMS تقليدي. تساعد البيانات الوصفية السائق على تتبع البيانات وهو أمر بالغ الأهمية. ومن ثم، يقوم خادم النسخ الاحتياطي بانتظام بتكرار البيانات التي يمكن استردادها في حالة فقد البيانات.
  • السائق: يتصرف مثل جهاز التحكم الذي يتلقى عبارات HiveQL. يبدأ تنفيذ البيان من خلال إنشاء جلسات، ويراقب دورة الحياة والتقدم المحرز في التنفيذ. يخزن البيانات الوصفية الضرورية التي تم إنشاؤها أثناء تنفيذ بيان HiveQL. يعمل برنامج التشغيل أيضًا كنقطة تجميع للبيانات أو نتائج الاستعلام التي تم الحصول عليها بعد عملية تقليل. [8]
  • مترجم: يقوم بتجميع استعلام HiveQL ، والذي يحول الاستعلام إلى خطة تنفيذ. تحتوي هذه الخطة على المهام والخطوات المطلوب تنفيذها بواسطة هدوب مابريديوس للحصول على المخرجات كما ترجمها الاستعلام. يقوم المترجم بتحويل الاستعلام إلى شجرة بناء جملة مجردة (AST). بعد التحقق من التوافق وأخطاء وقت التجميع، فإنه يحول AST إلى رسم بياني دوري موجه (DAG). [9] يقسم DAG المشغلين إلى مابريديوس المراحل والمهام بناءً على استعلام الإدخال والبيانات. [7]
  • المُحسِّن: يقوم بإجراء تحويلات مختلفة على خطة التنفيذ للحصول على DAG مُحسَّن. يمكن تجميع التحويلات معًا، مثل تحويل خط أنابيب من الصلات إلى صلة واحدة، للحصول على أداء أفضل. [10] يمكنه أيضًا تقسيم المهام، مثل تطبيق تحويل على البيانات قبل تقليل العملية، لتوفير أداء أفضل وقابلية التوسع. ومع ذلك، يمكن تعديل منطق التحويل المستخدم للتحسين المستخدم أو مد خطوط الأنابيب باستخدام مُحسِّن آخر. [8]
  • المنفذ: بعد التجميع والتحسين، يقوم المنفذ بتنفيذ المهام. يتفاعل مع متتبع الوظائف في Hadoop لجدولة المهام ليتم تشغيلها. إنه يعتني بتوجيه المهام عن طريق التأكد من تنفيذ مهمة ذات تبعية فقط في حالة تشغيل جميع المتطلبات الأساسية الأخرى. [10]
  • CLI و UI و Thrift Server : توفر واجهة سطر الأوامر (CLI) واجهة مستخدم للمستخدم الخارجي للتفاعل مع Hive عن طريق إرسال الاستعلامات والتعليمات ومراقبة حالة العملية. يسمح خادم Thrift للعملاء الخارجيين بالتفاعل مع Hive عبر شبكة، على غرار بروتوكولات JDBC أو ODBC. [11]

HiveQL[عدل]

بينما يعتمد HiveQL على SQL ، فإنه لا يتبع بدقة معيار SQL-92 الكامل. تقدم HiveQL امتدادات ليست في SQL ، بما في ذلك إدخالات متعددة وإنشاء جدول حسب التحديد . تفتقر HiveQL إلى دعم المعاملات وجهات النظر المحققة، ودعم طلب فرعي محدود فقط. [12] [13] تم توفير دعم الإدراج والتحديث والحذف بوظيفة ACID الكاملة مع الإصدار 0.14. [14]

داخليًا، يترجم المترجم عبارات HiveQL إلى رسم بياني لا دوري موجه لوظائف MapReduce أو Tez أو Spark ، والتي يتم إرسالها إلى Hadoop للتنفيذ. [15]

مثال[عدل]

يقوم برنامج عدد الكلمات بحساب عدد مرات ظهور كل كلمة في الإدخال. يمكن كتابة عدد الكلمات في HiveQL على النحو التالي: [16]

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);
LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;

فيما يلي شرح موجز لكل بيان:

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);

للتحقق مما إذا كانت docs الجدول موجودة وإسقاطها إذا كانت موجودة. ينشئ جدولًا جديدًا يسمى docs بعمود واحد من نوع STRING يسمى line .

LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;

يقوم بتحميل الملف أو الدليل المحدد (في هذه الحالة “ملف_المدخل”) في الجدول. OVERWRITE أن الجدول الهدف الذي يتم تحميل البيانات إليه ستتم إعادة كتابته ؛ وإلا سيتم إلحاق البيانات.

CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;

الاستعلام CREATE TABLE word_counts AS SELECT word, count(1) AS count يقوم بإنشاء جدول يسمى عدد word_counts مع عمودين: word and count . يستمد هذا الاستعلام مدخلاته من الاستعلام الداخلي (SELECT explode(split(line, '\s')) AS word FROM docs) temp" . يخدم هذا الاستعلام لتقسيم إدخال الكلمات في صفوف مختلفة من جدول مؤقت مستعارة كما temp . تقوم GROUP BY WORD بتجميع النتائج بناءً على مفاتيحها. ينتج عن ذلك count عمود العد على عدد التكرارات لكل كلمة من عمود word و ORDER BY WORDS فرز الكلمات أبجديا.

مقارنة مع قواعد البيانات التقليدية[عدل]

تشبه عمليات التخزين والاستعلام الخاصة بـ Hive إلى حد كبير عمليات قواعد البيانات التقليدية. في حين أن Hive هي لهجة SQL ، إلا أن هناك الكثير من الاختلافات في هيكل وعمل الخلية بالمقارنة مع قواعد البيانات العلائقية. تعود الاختلافات بشكل أساسي إلى أن Hive مبني على قمة نظام Hadoop البيئي، ويجب أن يتوافق مع قيود Hadoop و MapReduce .

يتم تطبيق مخطط على جدول في قواعد البيانات التقليدية. في قواعد البيانات التقليدية هذه، يفرض الجدول عادةً المخطط عند تحميل البيانات في الجدول. يتيح ذلك لقاعدة البيانات التأكد من أن البيانات المدخلة تتبع تمثيل الجدول كما هو محدد في تعريف الجدول. يسمى هذا التصميم المخطط عند الكتابة . في المقارنة، لا يتحقق Hive من البيانات مقابل مخطط الجدول عند الكتابة. وبدلاً من ذلك، فإنه يقوم بعد ذلك بفحص وقت التشغيل عند قراءة البيانات. هذا النموذج يسمى المخطط عند القراءة . [12] كلا النهجين لهما مزايا وعيوب. يؤدي فحص البيانات مقابل مخطط الجدول أثناء وقت التحميل إلى إضافة عبء إضافي، وهذا هو السبب في أن قواعد البيانات التقليدية تستغرق وقتًا أطول لتحميل البيانات. يتم إجراء فحوصات الجودة على البيانات في وقت التحميل لضمان عدم تلف البيانات. يضمن الكشف المبكر عن البيانات الفاسدة معالجة الاستثناءات المبكرة. نظرًا لأن الجداول تُجبر على مطابقة المخطط بعد / أثناء تحميل البيانات، فإنها تتمتع بأداء أفضل لوقت الاستعلام. من ناحية أخرى، يمكن لـ Hive تحميل البيانات ديناميكيًا دون أي فحص للمخطط، مما يضمن تحميلًا أوليًا سريعًا، ولكن مع عيب الأداء الأبطأ نسبيًا في وقت الاستعلام. تتمتع الخلية بميزة عندما لا يكون المخطط متاحًا في وقت التحميل، ولكن بدلاً من ذلك يتم إنشاؤه لاحقًا ديناميكيًا. [12]

المعاملات هي العمليات الرئيسية في قواعد البيانات التقليدية. مثل أي RDBMS نموذجي، يدعم Hive جميع الخصائص الأربعة للمعاملات ( ACID ): الذرية والاتساق والعزل والمتانة . تم تقديم المعاملات في الخلية في الخلية 0.13 ولكنها اقتصرت فقط على مستوى القسم. [17] تمت إضافة هذه الوظائف بالكامل في الإصدار الأخير من Hive 0.14 لدعم خصائص ACID الكاملة. يوفر Hive 0.14 والإصدارات الأحدث حركات مختلفة على مستوى الصف مثل INSERT و DELETE و UPDATE . [18] يتطلب تمكين معاملات INSERT و UPDATE و DELETE تعيين قيم مناسبة لخصائص التكوين مثل hive.support.concurrency و hive.enforce.bucketing و hive.exec.dynamic.partition.mode . [19]

الحماية[عدل]

أضاف Hive v0.7.0 التكامل مع أمان Hadoop. بدأ Hadoop في استخدام دعم تفويض Kerberos لتوفير الأمان. يسمح Kerberos للمصادقة المتبادلة بين العميل والخادم. في هذا النظام، يتم تمرير طلب العميل للحصول على تذكرة مع الطلب. واجهت الإصدارات السابقة من Hadoop العديد من المشكلات مثل قدرة المستخدمين على hadoop.job.ugi اسم المستخدم الخاص بهم عن طريق تعيين خاصية hadoop.job.ugi وأيضًا عمليات MapReduce التي يتم تشغيلها تحت نفس المستخدم: hadoop أو mapred. مع تكامل Hive v0.7.0 مع أمان Hadoop ، تم إصلاح هذه المشكلات إلى حد كبير. يتم تشغيل مهام TaskTracker بواسطة المستخدم الذي أطلقها ولم يعد من الممكن انتحال اسم المستخدم من خلال تعيين خاصية hadoop.job.ugi تم تحديد أذونات الملفات التي تم إنشاؤها حديثًا في Hive بواسطة HDFS . يستخدم نموذج ترخيص نظام الملفات الموزعة Hadoop ثلاثة كيانات: المستخدم والمجموعة وغيرها مع ثلاثة أذونات: القراءة والكتابة والتنفيذ. يمكن تعيين الأذونات الافتراضية للملفات التي تم إنشاؤها حديثًا عن طريق تغيير قيمة umask لمتغير تكوين الخلية hive.files.umask.value . [16]

المراجع[عدل]

  1. ^ "Release release-1.0.0 · apache/Hive"، غيت هاب، مؤرشف من الأصل في 1 يناير 2021.
  2. ^ "26 August 2019: release 3.1.2 available"، مؤرشف من الأصل في 5 مايو 2021، اطلع عليه بتاريخ 28 أغسطس 2019.
  3. أ ب وصلة مرجع: https://projects.apache.org/json/projects/hive.json. الوصول: 8 أبريل 2020.
  4. أ ب "Apache Hive 3.1.3 Released"، 9 أبريل 2022، اطلع عليه بتاريخ 9 أبريل 2022. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= و|date= (مساعدة)
  5. ^ "The Hive Open Source Project on Open Hub: Code Locations Page"، أهلوه، اطلع عليه بتاريخ 21 سبتمبر 2018. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= (مساعدة)
  6. ^ وصلة مرجع: https://hive.apache.org/.
  7. أ ب "Design - Apache Hive - Apache Software Foundation"، cwiki.apache.org، مؤرشف من الأصل في 19 أغسطس 2021، اطلع عليه بتاريخ 12 سبتمبر 2016.
  8. أ ب "Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop" (PDF)، مؤرشف من الأصل (PDF) في 28 يوليو 2011، اطلع عليه بتاريخ 09 سبتمبر 2011.
  9. ^ "Abstract Syntax Tree"، c2.com، مؤرشف من الأصل في 20 سبتمبر 2016، اطلع عليه بتاريخ 12 سبتمبر 2016.
  10. أ ب Dokeroglu, Tansel؛ Ozal, Serkan؛ Bayir, Murat Ali؛ Cinar, Muhammet Serkan؛ Cosar, Ahmet (29 يوليو 2014)، "Improving the performance of Hadoop Hive by sharing scan and computation tasks"، Journal of Cloud Computing (باللغة الإنجليزية)، 3 (1): 1–11، doi:10.1186/s13677-014-0012-6.
  11. ^ "HiveServer - Apache Hive - Apache Software Foundation"، cwiki.apache.org، مؤرشف من الأصل في 4 نوفمبر 2020، اطلع عليه بتاريخ 12 سبتمبر 2016.
  12. أ ب ت White, Tom (2010)، Hadoop: The Definitive Guide، أوريلي ميديا، ISBN 978-1-4493-8973-4، مؤرشف من الأصل في 27 يوليو 2020.
  13. ^ Hive Language Manual نسخة محفوظة 2021-08-17 على موقع واي باك مشين.
  14. ^ ACID and Transactions in Hive نسخة محفوظة 2021-03-09 على موقع واي باك مشين.
  15. ^ "Hive A Warehousing Solution Over a MapReduce Framework" (PDF)، مؤرشف من الأصل (PDF) في 08 أكتوبر 2013، اطلع عليه بتاريخ 03 سبتمبر 2011.
  16. أ ب Programming Hive [Book]، مؤرشف من الأصل في 23 أغسطس 2018.
  17. ^ "Introduction to Hive transactions"، datametica.com، مؤرشف من الأصل في 03 سبتمبر 2016، اطلع عليه بتاريخ 12 سبتمبر 2016.
  18. ^ "Hive Transactions - Apache Hive - Apache Software Foundation"، cwiki.apache.org، مؤرشف من الأصل في 9 مارس 2021، اطلع عليه بتاريخ 12 سبتمبر 2016.
  19. ^ "Configuration Properties - Apache Hive - Apache Software Foundation"، cwiki.apache.org، مؤرشف من الأصل في 6 مايو 2021، اطلع عليه بتاريخ 12 سبتمبر 2016.

روابط خارجية[عدل]

الموقع الرسمي