كيفية تثبيت وتكوين HIVE M1Astore مع MYSQL
⚡ ملخص ذكي
يخزن مستودع بيانات Hive التعريفية كل تعريف جدول واسم عمود ونوع بيانات خلف Apache Hive، ونقل هذا المستودع من قاعدة بيانات Derby الافتراضية إلى MySQL وهذا ما يسمح لعدة مستخدمين بالاتصال في وقت واحد.

ما هو متجر HIVE للأثاث؟
مخزن بيانات Hive هو مستودع يخزن البيانات الوصفية (أسماء الأعمدة، وأنواع البيانات، والتعليقات، وما إلى ذلك) المتعلقة بـ اباتشي خلية استخدام MySQL or PostgreSQL. يتم تنفيذ هذا Hive metastore باستخدام الجداول الموجودة في قاعدة بيانات علائقية.
لا يحتوي مخزن البيانات الوصفية على الصفوف نفسها. تبقى السجلات على نظام ملفات Hadoop الموزع (HDFS)، ويسجل مخزن البيانات الوصفية فقط مكان وجود كل جدول وأسماء أعمدته، ولهذا السبب فإن فقدانه يؤثر على المخطط وليس على البيانات.
لماذا تستخدم MySQL في Hive باسم متجر
يُعدّ نظام إدارة البيانات الوصفية خيارًا، وليس جزءًا ثابتًا من Hive، والإعداد الافتراضي المُضمّن بسيطٌ عمدًا. ثلاثة قيود تدفع معظم عمليات التثبيت إلى الابتعاد عنه.
- بشكل افتراضي، يأتي Hive مزودًا بقاعدة بيانات Derby كمخزن بيانات تعريفية.
- لا يدعم برنامج ديربي سوى مستخدم واحد نشط في كل مرة.
- لا يُنصح باستخدام ديربي في بيئة إنتاجية.
إذن الحل هنا هو
- استعمل MySQL كمساحة تخزين بيانات وصفية في الواجهة الخلفية لربط عدة مستخدمين بـ Hive في وقت واحد
- MySQL يُعد الخيار الأفضل لمتجر البيانات الوصفية المستقل
كيفية تثبيت وتكوين Hive MITEAstore MySQL قاعدة البيانات
تُنفَّذ الخطوات التسع التالية بالترتيب على جهاز مُثبَّت عليه مسبقًا كلٌّ من Hadoop وHive. وتنتهي كل خطوة بصورة شاشة لمخرجات الطرفية أو سطر الأوامر.
الخطوة 1) التثبيت MySQL المخدم
في هذه الخطوة، سنقوم بتنفيذ مهمتين
- تثبيت mysql-server
- فحص خادم MySQL وعملياته
باستخدام sudo apt-get install mysql-server أمر، يمكننا تنزيله MySQL الخادم. تثبيت MySQL كما هو موضح في لقطة الشاشة أدناه.
بعد التثبيت الناجح ، MySQL سيتم تشغيله كما هو موضح في لقطة الشاشة أدناه، حيث يؤكد فحص العملية أن الخدمة تعمل.
الخطوة 2) التثبيت MySQL Java الموصل
تثبيت MySQL Java موصل. هذا لـ Java التبعيات وأغراض الاتصال، لأن Hive يصل MySQL عبر JDBC. تُظهر لقطة الشاشة التالية تثبيت الحزمة.
الخطوة 3) إنشاء رابط ناعم للموصل
إنشاء رابط رمزي للموصل في دليل مكتبة Hive. هذا هو الرابط الرمزي بين Java و MySQLوهذا ما يضع ملف JAR الخاص بالسائق في مسار فئة Hive. يظهر الأمر ونتيجته أدناه.
الخطوة الرابعة: التهيئة MySQL التخزين في Hive
استخدم MySQL يجب فتح shell كحساب الجذر قبل إنشاء أي مستخدم Hive، كما هو موضح لاحقًا.
- اكتب mysql –u root –p متبوعًا بكلمة المرور
- هنا، يمثل الرمز -u اسم المستخدم الجذر، ويشير الرمز -p إلى كلمة المرور.
- بعد إدخال الأمر أعلاه، يتعين على المستخدم إدخال كلمة مرور صحيحة ثم الضغط على زر الإدخال (Enter).
- ثم سيدخل في MySQL وضع الصدفة
الخطوة 5) إنشاء اسم المستخدم وكلمة المرور
إنشاء اسم مستخدم وكلمة مرور لـ MySQLومنح الصلاحيات. تُظهر لقطة الشاشة أدناه العبارات الثلاث التي يتم تشغيلها داخل MySQL قذيفة.
علينا تنفيذ الأوامر كما هو موضح أدناه،
mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; mysql> flush privileges;
On MySQL 8. لم يعد بالإمكان تحليل الصيغة المدمجة للعبارة الثانية، لأن عبارة IDENTIFIED BY قد أُزيلت من أمر GRANT. أنشئ الحساب أولاً ثم امنحه الصلاحيات، وكرر سطر CREATE USER لكل من المضيف المحلي (localhost) والمضيف ذي النطاق العام (wildcard).
الخطوة 6) تهيئة ملف hive-site.xml
- بعد الخطوة الخامسة، يتم تعيين اسم مستخدم وكلمة مرور لـ MySQL قاعدة البيانات ومنح الامتيازات.
- سنقوم هنا بضبط بعض الخصائص في Hive للحصول على اتصال مع MySQL قاعدة البيانات.
يتم فتح ملف التكوين من دليل Hive conf، كما توضح لقطة الشاشة التالية.
تُظهر لقطة الشاشة التالية الملف النهائي مع جميع الخصائص الأربع في مكانها.
من لقطة الشاشة أعلاه، نلاحظ ما يلي. هنا نحدد 4 خصائص ضرورية لإنشاء MySQL كمستودع بيانات تعريفية في Hive.
هذه كالتالي:
- هذه الخاصية مخصصة للاتصال URLهنا نُعرّف مفهوم الاتصالURL في هذه الخاصية. تعمل كسلسلة اتصال JDBC وتمثل موقع مخزن البيانات الوصفية أيضًا.
- هذه الخاصية مخصصة لاسم برنامج تشغيل الاتصال. هنا، com.mysql.jdbc.Driver هي القيمة التي يجب ذكرها في علامة القيمة.
- تُستخدم هذه الخاصية لتحديد اسم مستخدم الاتصال. في هذا المثال، حددنا "hiveuser" كاسم المستخدم.
- تُستخدم هذه الخاصية لتحديد كلمة مرور الاتصال. في هذا المثال، حددنا "hivepassword" ككلمة مرور المستخدم.
بعد وضع الخصائص في ملف hive-site.xml، يجب حفظ الملف يدويًا (Ctrl+S) وإغلاقه. بعد إغلاق هذا الملف، يجب إنشاء جدول Hive والتحقق من تفاصيل الجدول في MySQL تخزين.
ضع هذا الكود في hive-site.xml
خلية-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> <description>metadata is stored in a MySQL server</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>MySQL JDBC driver class</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> <description>user name for connecting to mysql server</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> <description>password for connecting to mysql server</description> </property> </configuration>
تعتمد القيمتان المذكورتان أعلاه على إصدار الموصل المستخدم. MySQL أعاد Connector/J 8 تسمية فئة برنامج التشغيل إلى com.mysql.cj.jdbc.Driver، ويتوقع أيضًا منفذًا وإعداد SSL صريحين، لذا فهو حديث URL عادةً ما يكون عنوان URL هو jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. ولأن كلمة المرور موجودة كنص عادي، يجب أن يكون الملف قابلاً للقراءة فقط بواسطة حساب خدمة Hive.
الخطوة 7) إنشاء الجدول
قم بإنشاء جدول "guru99" في Hive، كما هو موضح في واجهة Hive أدناه.
من لقطة الشاشة أعلاه، يمكننا ملاحظة ما يلي
- إنشاء جدول باسم "guru99" يحتوي على اسمين للعمودين
- تم ذكر أسماء الأعمدة مع أنواع بياناتها، أحدهما عدد صحيح والآخر سلسلة نصية
في الخطوة التالية، سنتحقق مما إذا كان مخزناً في MySQL أم لا.
الخطوة 8) الدخول إلى MySQL وضع الصدفة
يتم تحديد قاعدة بيانات metastore أولاً، ويتم عرض قائمة الجداول التي تليها أدناه.
من لقطة الشاشة أعلاه، يمكننا ملاحظة ما يلي
- أولاً، علينا تحديد قاعدة البيانات باستخدام "استخدام مخزن البيانات الوصفية".
- بمجرد اختيار مخزن البيانات الوصفية، يمكننا التحقق من الجداول الموجودة فيه باستخدام الأمر "show tables" كما هو موضح في لقطة الشاشة.
- بغض النظر عن الجداول التي يتم إنشاؤها في Hive، يتم تخزين البيانات الوصفية المقابلة لتلك الجداول ضمن TBLS في MySQL قاعدة بيانات
- يتم إنشاء جدول "guru99" في Hive، لذا يتم تخزين البيانات الوصفية المقابلة في MySQL تحت TBLS
الخطوة 9) أدخل حدد * من TBLS
التحقق مما إذا كان الجدول الذي تم إنشاؤه موجودًا في MySQL أو لا. يظهر الاستعلام ونتيجته في لقطة الشاشة أدناه.
من خلال إدخال تحديد * من TBLS، سيتم عرض الجداول التي أنشأناها في وضع Hive Shell
من لقطة الشاشة أعلاه يمكننا ملاحظة الأشياء التالية:
- يمكن عرض اسم الجدول "guru99" الذي تم إنشاؤه في Hive في MySQL وضع الصدفة
- إلى جانب ذلك، سيوفر أيضًا معلومات مثل وقت إنشاء الجدول، ووقت الوصول إليه، وخصائص أخرى كما هو موضح في لقطة الشاشة أعلاه.
كيفية تهيئة مخطط Hive Metatastore باستخدام schematool
علامة createDatabaseIfNotExist في الاتصال URL يُنشئ قاعدة بيانات فارغة، لكنه لا يُنشئ الجداول السبعين تقريبًا التي يتوقعها Hive بداخلها. في Hive 1.x والإصدارات الأحدث، تقع هذه المهمة على عاتق أداة schematool، لذا يُنصح بتجاوزها.ping وهو السبب الأكثر شيوعًا لرفض مخزن البيانات الوصفية الذي تم تكوينه حديثًا البدء.
$HIVE_HOME/bin/schematool -dbType mysql -initSchema
يقرأ الأمر نفس الخصائص الأربع من ملف hive-site.xml، ويتصل بحساب مستخدم Hive، ثم يُشغّل نص SQL المرفق الذي يتوافق مع إصدار Hive. عند نجاح العملية، تظهر رسالة تأكيد، وبعدها يمكن التحقق من الحالة في أي وقت.
$HIVE_HOME/bin/schematool -dbType mysql -info
تغطي العلامات أدناه دورة حياة مخطط البيانات الوصفية بالكامل.
| خيار | ماذا يفعل |
|---|---|
| -dbType | يُحدد اسم قاعدة البيانات الخلفية، مثل mysql أو derby أو postgres أو oracle أو mssql |
| -initSchema | يقوم بإنشاء جداول البيانات الوصفية لإصدار Hive الحالي |
| -معلومات | يعرض إصدار المخطط المسجل في قاعدة البيانات |
| -ترقية المخطط | يقوم بنقل مخطط موجود بعد ترقية Hive |
| -تحقق | يتحقق من المخطط بحثًا عن الجداول المفقودة وعدم تطابق الإصدارات. |
هناك خاصية ذات صلة يجدر معرفتها قبل البدء الأول. عندما تكون قيمة hive.metastore.schema.verification صحيحة، يقارن Hive إصدار المخطط في MySQL يتعارض مع نفسه ويرفض التشغيل في حالة عدم التوافق. هذا الفحص هو إجراء وقائي، لذا فإن الاستجابة الصحيحة هي تشغيل الترقية بدلاً من إيقافها. MySQL يتم استخدام الواجهة الخلفية بواسطة تثبيت Hive المشمول في قم بتثبيت Hive على Ubuntu.
أخطاء شائعة في متجر Hive وكيفية إصلاحها
معظم حالات الفشل في هذه المرحلة تنتج واحدة من عدد قليل من الرسائل، وتشير كل منها إلى خطوة محددة أعلى بدلاً من الإشارة إلى Hive نفسه.
| عرض | السبب والحل |
|---|---|
| لم يتم العثور على معلومات الإصدار في مخزن البيانات الوصفية | لم يتم إنشاء المخطط مطلقًا. شغّل أداة schematool مع الخيار -initSchema على قاعدة البيانات نفسها المُسماة في الاتصال. URL |
| استثناء ClassNotFoundException لبرنامج تشغيل JDBC | ملف JAR الخاص بالموصل مفقود من مجلد مكتبة Hive، أو أن الإصدار 8 من Connector/J قيد الاستخدام، والفئة الآن هي com.mysql.cj.jdbc.Driver. أعد التحقق من الرابط الرمزي من الخطوة 3. |
| تم رفض الوصول للمستخدم hiveuser | تم منح الصلاحيات لمضيف واحد فقط. أنشئ حسابًا لكل من المضيف المحلي والمضيف العام، ثم نفّذ الأمر flush privileges. |
| خطأ في بناء الجملة بالقرب من IDENTIFIED BY | MySQL 8. قم بإزالة IDENTIFIED BY من عبارة GRANT. قم بتنفيذ CREATE USER أولاً ثم GRANT بعد ذلك. |
| لا يُسمح باسترجاع المفتاح العام | يرفض موصل JDBC 8 المصافحة غير المشفرة افتراضيًا. أضف useSSL=false و allowPublicKeyRetrieval=true إلى JDBC URL على شبكة موثوقة |
| اختفت الجداول بعد ترقية Hive | لا يزال المخطط مطابقًا للإصدار القديم. شغّل أداة schematool مع الخيار -upgradeSchema بدلاً من تعطيل التحقق من المخطط. |
بمجرد أن يجيب مخزن البيانات الوصفية بشكل موثوق، يتم إنشاء تعريفات الجداول التي يسجلها باستخدام العبارات الموضحة في إنشاء وتعديل وحذف الجداول في Hive.








