البرنامج التعليمي: استخدم Apache HBase في Azure HDInsight
يوضح هذا البرنامج التعليمي كيفية إنشاء مجموعة Apache HBase في Azure HDInsight، وإنشاء جداول HBase، وجداول الاستعلام باستخدام Apache Hive. للحصول على معلومات عامة حول HBase، راجع نظرة عامة على HDInsight HBase.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء مجموعة Apache HBase
- إنشاء جداول HBase وإدراج البيانات
- استخدم Apache Hive للاستعلام عن Apache HBase
- استخدم واجهات برمجة تطبيقات HBase REST باستخدام Curl
- تحقق من حالة نظام المجموعة
المتطلبات الأساسية
عميل SSH. لمزيد من المعلومات، يرجى الرجوع إلى الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH .
Bash. تستخدم الأمثلة في هذه المقالة غلاف Bash على نظام التشغيل Windows 10 لأوامر curl. راجع دليل تثبيت نظام Windows الفرعي لنظام Linux لنظام التشغيل Windows 10 لمعرفة خطوات التثبيت. ستعمل Unix shells الأخرى كذلك. يمكن أن تعمل أمثلة curl، مع بعض التعديلات الطفيفة، على موجه أوامر Windows. أو يمكنك استخدام Windows PowerShell cmdlet Invoke-RestMethod.
إنشاء مجموعة Apache HBase
يستخدم الإجراء التالي قالب إدارة موارد Azure لإنشاء نظام مجموعة HBase. يُنشئ القالب أيضًا حساب تخزين Azure الافتراضي التابع. لفهم المعلمات المستخدمة في الإجراء وأساليب إنشاء نظام المجموعة الأخرى، راجع إنشاء مجموعات Hadoop المستندة إلى Linux في HDInsight.
حدد الصورة التالية لفتح القالب في مدخل Azure. يقع القالب في قوالب بداية سريعة Azure.
من مربع الحوار نشر مخصص، أدخل القيم التالية:
الخاصية الوصف الاشتراك حدد اشتراك Azure الذي يستخدم لإنشاء نظام المجموعة. مجموعة الموارد إنشاء مجموعة إدارة موارد Azure، أو استخدام مجموعة موجودة. الموقع تحديد موقع مجموعة الموارد. ClusterName أدخل اسمًا لمجموعة HBase. اسم وكلمة مرور تسجيل الدخول إلى نظام المجموعة اسم تسجيل الدخول الافتراضي هو admin
.SSH اسم المستخدم وكلمة المرور اسم المستخدم الافتراضي هو sshuser
.المعلمات الأخرى اختيارية.
كل نظام مجموعة لديه تبعية حساب تخزين Azure. بعد حذف نظام مجموعة، تبقى البيانات في حساب التخزين. اسم حساب التخزين الافتراضي لنظام المجموعة هو اسم نظام المجموعة مع إلحاق "مخزن". يتم ترميزه في قسم متغيرات القالب.
حدد أوافق على الشروط والأحكام المذكورة أعلاه، ثم حدد شراء. يستغرق إنشاء نظام المجموعة نحو 20 دقيقة.
بعد حذف نظام مجموعة HBase يمكنك إنشاء نظام مجموعة HBase آخر باستخدام نفس حاوية blob الافتراضي. يلتقط نظام المجموعة الجديد جداول HBase التي أنشأتها في نظام المجموعة الأصلي. لتجنب التناقضات، نوصي بتعطيل جداول HBase قبل حذف نظام المجموعة.
إنشاء الجداول وإدراج البيانات
يمكنك استخدام SSH للاتصال بأنظمة المجموعات المترابطة HBase ثم استخدم Apache HBase Shell لإنشاء جداول HBase وإدراج البيانات وبيانات الاستعلام.
بالنسبة لمعظم الأشخاص، تظهر البيانات في التنسيق الجدولي:
في HBase (تنفيذ Cloud BigTable)، تبدو البيانات نفسها كما يلي:
لاستخدام HBase shell
استخدم الأمر
ssh
للاتصال بنظام مجموعة HBase الخاصة بك. حرر الأمر أدناه عن طريق استبدالCLUSTERNAME
باسم نظام مجموعتك ثم إدخال الأمر:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
استخدم الأمر
hbase shell
لبدء الغلاف التفاعلي لـ HBase. أدخل الأمر التالي في اتصال SSH:hbase shell
استخدم الأمر
create
لإنشاء جدول HBase مع عائلات من عمودين. تكون أسماء الجداول والأعمدة حساسة لحالة الأحرف. أدخل الأمر التالي:create 'Contacts', 'Personal', 'Office'
استخدم الأمر
list
لسرد جميع الجداول في HBase. أدخل الأمر التالي:list
استخدم الأمر
put
لإدراج قيم في عمود محدد في صف محدد في جدول معين. أدخل الأوامر التالية:put 'Contacts', '1000', 'Personal:Name', 'John Dole' put 'Contacts', '1000', 'Personal:Phone', '1-425-000-0001' put 'Contacts', '1000', 'Office:Phone', '1-425-000-0002' put 'Contacts', '1000', 'Office:Address', '1111 San Gabriel Dr.'
استخدم الأمر
scan
لمسح بيانات الجدولContacts
وإعادتها. أدخل الأمر التالي:scan 'Contacts'
استخدم الأمر
get
لاستدعاء محتويات صف. أدخل الأمر التالي:get 'Contacts', '1000'
ترى نتائج مشابهة
scan
لاستخدام الأمر لأنه يوجد صف واحد فقط.للحصول على مزيدٍ من المعلومات عن مخطط جدول HBase، راجع مقدمة حول تصميم مخطط Apache HBase. للحصول على مزيدٍ من أوامر HBase، راجع الدليل المرجعي لـ Apache HBase.
استخدم الأمر
exit
لإيقاف الغلاف التفاعلي لـ HBase. أدخل الأمر التالي:exit
لتحميل البيانات بشكل مجمع في جدول HBase لجهات الاتصال
يتضمن HBase عدة طرق لتحميل البيانات في الجداول. لمزيد من المعلومات، راجع التحميل المجمع.
يمكن العثور على نموذج ملف بيانات في حاوية كائن ثنائي كبير الحجم عام، wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt
. محتوى ملف البيانات هو:
8396 Calvin Raji 230-555-0191 230-555-0191 5415 San Gabriel Dr.
16600 Karen Wu 646-555-0113 230-555-0192 9265 La Paz
4324 Karl Xie 508-555-0163 230-555-0193 4912 La Vuelta
16891 Jonn Jackson 674-555-0110 230-555-0194 40 Ellis St.
3273 Miguel Miller 397-555-0155 230-555-0195 6696 Anchor Drive
3588 Osa Agbonile 592-555-0152 230-555-0196 1873 Lion Circle
10272 Julia Lee 870-555-0110 230-555-0197 3148 Rose Street
4868 Jose Hayes 599-555-0171 230-555-0198 793 Crawford Street
4761 Caleb Alexander 670-555-0141 230-555-0199 4775 Kentucky Dr.
16443 Terry Chander 998-555-0171 230-555-0200 771 Northridge Drive
يمكنك إنشاء ملف نصي بشكل اختياري، وتحميل الملف إلى حساب التخزين الخاص بك. للحصول على الإرشادات، راجع تحميل البيانات لوظائف Apache Hadoop في HDInsight.
يستخدم هذا الإجراء جدول HBase الذي Contacts
أنشأته في الإجراء الأخير.
من اتصال ssh المفتوح، قم بتشغيل الأمر التالي لتحويل ملف البيانات إلى StoreFiles وتخزينه في مسار نسبي محدد بواسطة
Dimporttsv.bulk.output
.hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns="HBASE_ROW_KEY,Personal:Name,Personal:Phone,Office:Phone,Office:Address" -Dimporttsv.bulk.output="/example/data/storeDataFileOutput" Contacts wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt
قم بتشغيل الأمر التالي لتحميل البيانات من
/example/data/storeDataFileOutput
إلى جدول HBase:hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
يمكنك فتح HBase shell، واستخدام
scan
الأمر لسرد محتويات الجدول.
استخدم Apache Hive للاستعلام عن Apache HBase
يمكنك الاستعلام عن البيانات في جداول HBase باستخدام Apache Hive. في هذا القسم، تقوم بإنشاء جدول Hive يقوم بتعيين جدول HBase، ويستخدمه للاستعلام عن البيانات الموجودة في جدول HBase الخاص بك.
من اتصال ssh المفتوح الخاص بك، استخدم الأمر التالي لبدء Beeline:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
لمزيد من المعلومات حول Beeline، راجع استخدام Hive مع Hadoop في HDInsight مع Beeline.
شغّل البرنامج النصي HiveQL التالي لإنشاء جدول Apache Hive الذي يعيّن جدول HBase. تأكد من إنشاء نموذج الجدول المشار إليه سابقًا في هذه المقالة باستخدام shell HBase قبل تشغيل هذه العبارة.
CREATE EXTERNAL TABLE hbasecontacts(rowkey STRING, name STRING, homephone STRING, officephone STRING, officeaddress STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,Personal:Name,Personal:Phone,Office:Phone,Office:Address') TBLPROPERTIES ('hbase.table.name' = 'Contacts');
شَغّل البرنامج النصي HiveQL التالي للاستعلام عن البيانات في جدول HBase:
SELECT count(rowkey) AS rk_count FROM hbasecontacts;
للخروج من Beeline، استخدم
!exit
.للخروج من اتصال ssh الخاص بك، استخدم
exit
.
مجموعات منفصلة لـ Hive وHbase
لا يلزم تنفيذ استعلام Hive للوصول إلى بيانات HBase من مجموعة HBase. يمكن استخدام أي مجموعة تأتي مع Hive (بما في ذلك Spark أو Hadoop أو HBase أو Interactive Query) للاستعلام عن بيانات HBase، بشرط إكمال الخطوات التالية:
- يجب إرفاق كلا المجموعتين بنفس الشبكة الظاهرية والشبكة الفرعية
- انسخ
/usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml
من عقد رأس نظام مجموعة HBase إلى عقد رأس نظام مجموعة Hive وال عقد العامل.
أنظمة المجموعات الآمنة
يمكن أيضًا الاستعلام عن بيانات HBase من Hive باستخدام HBase الذي يدعم ESP:
- عند اتباع نمط متعدد المجموعات، يجب تمكين كلا المجموعتين من ESP.
- للسماح ل Hive بالاستعلام عن بيانات HBase، تأكد من
hive
منح المستخدم أذونات للوصول إلى بيانات HBase عبر المكون الإضافي Hbase Apache Ranger - عند استخدام أنظمة مجموعات منفصلة ممكنة بواسطة ESP، يجب إلحاق محتويات
/etc/hosts
من عقد رأس نظام مجموعة HBase ب/etc/hosts
عقد رأس نظام مجموعة Hive وعقد العامل.
إشعار
بعد تحجيم أي من المجموعات، /etc/hosts
يجب إلحاقها مرة أخرى
استخدام واجهة برمجة HBase REST عبر Curl
يتم تأمين واجهة برمجة تطبيقات REST عبر المصادقة الأساسية. يجب عليك دائمًا تقديم الطلبات باستخدام Secure HTTP (HTTPS)؛ للمساعدة في ضمان إرسال بيانات الاعتماد الخاصة بك بشكل آمن إلى الخادم.
لتمكين HBase REST APIs في مجموعة HDInsight، أضف البرنامج النصي المخصص التالي لبدء التشغيل إلى قسم Script Action. يمكنك إضافة البرنامج النصي لبدء التشغيل عند إنشاء نظام المجموعة، أو بعد إنشاء نظام المجموعة. بالنسبة إلى نوع العقدة، حدد خوادم المنطقة للتأكد من تنفيذ البرنامج النصي فقط في خوادم منطقة HBase.
#! /bin/bash THIS_MACHINE=`hostname` if [[ $THIS_MACHINE != wn* ]] then printf 'Script to be executed only on worker nodes' exit 0 fi RESULT=`pgrep -f RESTServer` if [[ -z $RESULT ]] then echo "Applying mitigation; starting REST Server" sudo python /usr/lib/python2.7/dist-packages/hdinsight_hbrest/HbaseRestAgent.py else echo "REST server already running" exit 0 fi
عيِّن متغير البيئة لسهولة الاستخدام. قم بتحرير الأوامر أدناه عن طريق استبدال
MYPASSWORD
بكلمة مرور تسجيل الدخول إلى نظام المجموعة. استبدلMYCLUSTERNAME
باسم مجموعة HBase الخاصة بك. ثم أدخل الأوامر.export PASSWORD='MYPASSWORD' export CLUSTER_NAME=MYCLUSTERNAME
استخدم الأمر التالي لسرد جداول HBase الموجودة:
curl -u admin:$PASSWORD \ -G https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/
استخدم الأمر التالي لإنشاء جدول HBase جديد بعائلات من عمودين:
curl -u admin:$PASSWORD \ -X PUT "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/schema" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{\"@name\":\"Contact1\",\"ColumnSchema\":[{\"name\":\"Personal\"},{\"name\":\"Office\"}]}" \ -v
يتم توفير المخطط بتنسيق JSon.
استخدم الأمر التالي لإدراج بعض البيانات:
curl -u admin:$PASSWORD \ -X PUT "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/false-row-key" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{\"Row\":[{\"key\":\"MTAwMA==\",\"Cell\": [{\"column\":\"UGVyc29uYWw6TmFtZQ==\", \"$\":\"Sm9obiBEb2xl\"}]}]}" \ -v
يقوم Base64 بترميز القيم المحددة في رمز التبديل -d. في المثال:
MTAwMA==: 1000
UGVyc29uYWw6TmFtZQ==: شخصي: الاسم
Sm9obiBEb2xl: جون دول
يسمح لك مفتاح الصف الخاطئ بإدراج قيم متعددة (مجمعة).
استخدم الأمر التالي للحصول على صف:
curl -u admin:$PASSWORD \ GET "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/1000" \ -H "Accept: application/json" \ -v
لمزيد من المعلومات حول HBase Rest، راجع الدليل المرجعي Apache HBase.
إشعار
Thrift غير معتمد من قبل HBase في HDInsight.
عند استخدام Curl أو أي اتصال REST آخر مع WebHCat، يجب عليك مصادقة الطلبات من خلال توفير اسم المستخدم وكلمة المرور لمسؤول مجموعة HDInsight. يجب أيضًا استخدام اسم نظام المجموعة كجزء من معرف الموارد الموحد (URI) المستخدم لإرسال الطلبات إلى الخادم:
curl -u <UserName>:<Password> \
-G https://<ClusterName>.azurehdinsight.net/templeton/v1/status
ينبغي أن تتلقى ردًا مشابهًا للرد التالي:
{"status":"ok","version":"v1"}
تحقق من حالة نظام المجموعة
يأتي HBase في HDInsight مزودًا بواجهة مستخدم ويب لمراقبة المجموعات. باستخدام واجهة مستخدم ويب، يمكنك طلب إحصائيات، أو معلومات عن المناطق.
للوصول إلى واجهة مستخدم HBase Master
سجل الدخول إلى واجهة مستخدم ويب Ambari حيث
https://CLUSTERNAME.azurehdinsight.net
CLUSTERNAME
هو اسم مجموعة HBase.حدد HBase من القائمة اليسرى.
حدد الارتباطات السريعة في أعلى الصفحة، وأشر إلى ارتباط عقدة Zookeeper النشط، ثم حدد واجهة مستخدم HBase Master. يتم فتح واجهة المستخدم في علامة تبويب مستعرض أخرى:
تحتوي واجهة مستخدم HBase Master على الأقسام التالية:
- خوادم المنطقة
- المحاور الرئيسية للنسخ الاحتياطي
- الجداول
- المهام
- سمات البرامج
الأنشطة الترفيهية لنظام المجموعة
بعد حذف نظام مجموعة HBase يمكنك إنشاء نظام مجموعة HBase آخر باستخدام نفس حاوية blob الافتراضي. يلتقط نظام المجموعة الجديد جداول HBase التي أنشأتها في نظام المجموعة الأصلي. لتجنب التناقضات، رغم ذلك، نوصي بتعطيل جداول HBase قبل حذف نظام المجموعة.
يمكنك استخدام الأمر disable 'Contacts'
HBase .
تنظيف الموارد
إذا كنت لن تستمر في استخدام هذا التطبيق، فاحذف نظام المجموعة المترابطة HBase التي قمت بإنشائها مع الخطوات التالية:
- قم بتسجيل الدخول إلى بوابة Azure.
- في المربع بحث في الأعلى، اكتب HDInsight.
- حدد مجموعات HDInsight ضمن الخدمات.
- في قائمة المجموعات المترابطة HDInsight التي تظهر، انقر فوق ... بجانب المجموعة التي قمت بإنشائها لهذا البرنامج التعليمي.
- انقر فوق حذف. انقر فوق نعم.
الخطوات التالية
في هذا البرنامج التعليمي، تعلمت كيفية إنشاء مجموعة Apache HBase. وكيفية إنشاء الجداول وعرض البيانات في تلك الجداول من HBase shell. لقد تعلمت أيضًا كيفية استخدام استعلام Hive على البيانات في جداول HBase. وكيفية استخدام واجهات برمجة تطبيقات HBase C# REST لإنشاء جدول HBase، واسترداد البيانات من الجدول. لمعرفة المزيد، راجع: