البرنامج التعليمي: استخدم Apache HBase في Azure HDInsight

يوضح هذا البرنامج التعليمي كيفية إنشاء مجموعة Apache HBase في Azure HDInsight، وإنشاء جداول HBase، وجداول الاستعلام باستخدام Apache Hive. للحصول على معلومات عامة حول HBase، راجع نظرة عامة على HDInsight HBase.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء مجموعة Apache HBase
  • إنشاء جداول HBase وإدراج البيانات
  • استخدم Apache Hive للاستعلام عن Apache HBase
  • استخدم واجهات برمجة تطبيقات HBase REST باستخدام Curl
  • تحقق من حالة نظام المجموعة

المتطلبات الأساسية

إنشاء مجموعة Apache HBase

يستخدم الإجراء التالي قالب إدارة موارد Azure لإنشاء نظام مجموعة HBase. يُنشئ القالب أيضًا حساب تخزين Azure الافتراضي التابع. لفهم المعلمات المستخدمة في الإجراء وأساليب إنشاء نظام المجموعة الأخرى، راجع إنشاء مجموعات Hadoop المستندة إلى Linux في HDInsight.

  1. حدد الصورة التالية لفتح القالب في مدخل Azure. يقع القالب في قوالب بداية سريعة Azure.

    Deploy to Azure button for new cluster

  2. من مربع الحوار نشر مخصص، أدخل القيم التالية:

    الخاصية ‏‏الوصف
    الاشتراك حدد اشتراك Azure الذي يستخدم لإنشاء نظام المجموعة.
    مجموعة الموارد إنشاء مجموعة إدارة موارد Azure، أو استخدام مجموعة موجودة.
    الموقع تحديد موقع مجموعة الموارد.
    ClusterName أدخل اسمًا لمجموعة HBase.
    اسم وكلمة مرور تسجيل الدخول إلى نظام المجموعة اسم تسجيل الدخول الافتراضي هو admin.
    SSH اسم المستخدم وكلمة المرور اسم المستخدم الافتراضي هو sshuser.

    المعلمات الأخرى اختيارية.

    كل نظام مجموعة لديه تبعية حساب تخزين Azure. بعد حذف نظام مجموعة، تبقى البيانات في حساب التخزين. اسم حساب التخزين الافتراضي لنظام المجموعة هو اسم نظام المجموعة مع إلحاق "مخزن". يتم ترميزه في قسم متغيرات القالب.

  3. حدد أوافق على الشروط والأحكام المذكورة أعلاه، ثم حدد شراء. يستغرق إنشاء نظام المجموعة نحو 20 دقيقة.

بعد حذف نظام مجموعة HBase يمكنك إنشاء نظام مجموعة HBase آخر باستخدام نفس حاوية blob الافتراضي. يلتقط نظام المجموعة الجديد جداول HBase التي أنشأتها في نظام المجموعة الأصلي. لتجنب التناقضات، نوصي بتعطيل جداول HBase قبل حذف نظام المجموعة.

إنشاء الجداول وإدراج البيانات

يمكنك استخدام SSH للاتصال بأنظمة المجموعات المترابطة HBase ثم استخدم Apache HBase Shell لإنشاء جداول HBase وإدراج البيانات وبيانات الاستعلام.

بالنسبة لمعظم الأشخاص، تظهر البيانات في التنسيق الجدولي:

HDInsight Apache HBase tabular data.

في HBase (تنفيذ Cloud BigTable)، تبدو البيانات نفسها كما يلي:

HDInsight Apache HBase BigTable data.

لاستخدام HBase shell

  1. استخدم الأمر ssh للاتصال بنظام مجموعة HBase الخاصة بك. حرر الأمر أدناه عن طريق استبدال CLUSTERNAME باسم نظام مجموعتك ثم إدخال الأمر:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. استخدم الأمر hbase shell لبدء الغلاف التفاعلي لـ HBase. أدخل الأمر التالي في اتصال SSH:

    hbase shell
    
  3. استخدم الأمر create لإنشاء جدول HBase مع عائلات من عمودين. تكون أسماء الجداول والأعمدة حساسة لحالة الأحرف. أدخل الأمر التالي:

    create 'Contacts', 'Personal', 'Office'
    
  4. استخدم الأمر list لسرد جميع الجداول في HBase. أدخل الأمر التالي:

    list
    
  5. استخدم الأمر 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.'
    
  6. استخدم الأمر scan لمسح بيانات الجدول Contacts وإعادتها. أدخل الأمر التالي:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase shell.

  7. استخدم الأمر get لاستدعاء محتويات صف. أدخل الأمر التالي:

    get 'Contacts', '1000'
    

    ترى نتائج مشابهة scan لاستخدام الأمر لأنه يوجد صف واحد فقط.

    للحصول على مزيدٍ من المعلومات عن مخطط جدول HBase، راجع مقدمة حول تصميم مخطط Apache HBase. للحصول على مزيدٍ من أوامر HBase، راجع الدليل المرجعي لـ Apache HBase.

  8. استخدم الأمر 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 أنشأته في الإجراء الأخير.

  1. من اتصال 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
    
  2. قم بتشغيل الأمر التالي لتحميل البيانات من /example/data/storeDataFileOutput إلى جدول HBase:

    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
    
  3. يمكنك فتح HBase shell، واستخدام scan الأمر لسرد محتويات الجدول.

استخدم Apache Hive للاستعلام عن Apache HBase

يمكنك الاستعلام عن البيانات في جداول HBase باستخدام Apache Hive. في هذا القسم، تقوم بإنشاء جدول Hive يقوم بتعيين جدول HBase، ويستخدمه للاستعلام عن البيانات الموجودة في جدول HBase الخاص بك.

  1. من اتصال ssh المفتوح الخاص بك، استخدم الأمر التالي لبدء Beeline:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
    

    لمزيد من المعلومات حول Beeline، راجع استخدام Hive مع Hadoop في HDInsight مع Beeline.

  2. شغّل البرنامج النصي 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');
    
  3. شَغّل البرنامج النصي HiveQL التالي للاستعلام عن البيانات في جدول HBase:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. للخروج من Beeline، استخدم !exit.

  5. للخروج من اتصال ssh الخاص بك، استخدم exit.

مجموعات منفصلة لـ Hive وHbase

لا يلزم تنفيذ استعلام Hive للوصول إلى بيانات HBase من مجموعة HBase. يمكن استخدام أي مجموعة تأتي مع Hive (بما في ذلك Spark أو Hadoop أو HBase أو Interactive Query) للاستعلام عن بيانات HBase، بشرط إكمال الخطوات التالية:

  1. يجب إرفاق كلا المجموعتين بنفس الشبكة الظاهرية والشبكة الفرعية
  2. انسخ /usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml من عقد رأس نظام مجموعة HBase إلى عقد رأس نظام مجموعة Hive وال عقد العامل.

أنظمة المجموعات الآمنة

يمكن أيضًا الاستعلام عن بيانات HBase من Hive باستخدام HBase الذي يدعم ESP:

  1. عند اتباع نمط متعدد المجموعات، يجب تمكين كلا المجموعتين من ESP.
  2. للسماح ل Hive بالاستعلام عن بيانات HBase، تأكد من hive منح المستخدم أذونات للوصول إلى بيانات HBase عبر المكون الإضافي Hbase Apache Ranger
  3. عند استخدام أنظمة مجموعات منفصلة ممكنة بواسطة ESP، يجب إلحاق محتويات /etc/hosts من عقد رأس نظام مجموعة HBase ب /etc/hosts عقد رأس نظام مجموعة Hive وعقد العامل.

إشعار

بعد تحجيم أي من المجموعات، /etc/hosts يجب إلحاقها مرة أخرى

استخدام واجهة برمجة HBase REST عبر Curl

يتم تأمين واجهة برمجة تطبيقات REST عبر المصادقة الأساسية. يجب عليك دائمًا تقديم الطلبات باستخدام Secure HTTP (HTTPS)؛ للمساعدة في ضمان إرسال بيانات الاعتماد الخاصة بك بشكل آمن إلى الخادم.

  1. لتمكين 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
    
  2. عيِّن متغير البيئة لسهولة الاستخدام. قم بتحرير الأوامر أدناه عن طريق استبدال MYPASSWORD بكلمة مرور تسجيل الدخول إلى نظام المجموعة. استبدل MYCLUSTERNAME باسم مجموعة HBase الخاصة بك. ثم أدخل الأوامر.

    export PASSWORD='MYPASSWORD'
    export CLUSTER_NAME=MYCLUSTERNAME
    
  3. استخدم الأمر التالي لسرد جداول HBase الموجودة:

    curl -u admin:$PASSWORD \
    -G https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/
    
  4. استخدم الأمر التالي لإنشاء جدول 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.

  5. استخدم الأمر التالي لإدراج بعض البيانات:

    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: جون دول

      يسمح لك مفتاح الصف الخاطئ بإدراج قيم متعددة (مجمعة).

  6. استخدم الأمر التالي للحصول على صف:

    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

  1. سجل الدخول إلى واجهة مستخدم ويب Ambari حيث https://CLUSTERNAME.azurehdinsight.net CLUSTERNAME هو اسم مجموعة HBase.

  2. حدد HBase من القائمة اليسرى.

  3. حدد الارتباطات السريعة في أعلى الصفحة، وأشر إلى ارتباط عقدة Zookeeper النشط، ثم حدد واجهة مستخدم HBase Master. يتم فتح واجهة المستخدم في علامة تبويب مستعرض أخرى:

    HDInsight Apache HBase HMaster UI.

    تحتوي واجهة مستخدم HBase Master على الأقسام التالية:

    • خوادم المنطقة
    • المحاور الرئيسية للنسخ الاحتياطي
    • الجداول
    • المهام
    • سمات البرامج

الأنشطة الترفيهية لنظام المجموعة

بعد حذف نظام مجموعة HBase يمكنك إنشاء نظام مجموعة HBase آخر باستخدام نفس حاوية blob الافتراضي. يلتقط نظام المجموعة الجديد جداول HBase التي أنشأتها في نظام المجموعة الأصلي. لتجنب التناقضات، رغم ذلك، نوصي بتعطيل جداول HBase قبل حذف نظام المجموعة.

يمكنك استخدام الأمر disable 'Contacts'HBase .

تنظيف الموارد

إذا كنت لن تستمر في استخدام هذا التطبيق، فاحذف نظام المجموعة المترابطة HBase التي قمت بإنشائها مع الخطوات التالية:

  1. قم بتسجيل الدخول إلى بوابة Azure.
  2. في المربع بحث في الأعلى، اكتب HDInsight.
  3. حدد مجموعات HDInsight ضمن الخدمات.
  4. في قائمة المجموعات المترابطة HDInsight التي تظهر، انقر فوق ... بجانب المجموعة التي قمت بإنشائها لهذا البرنامج التعليمي.
  5. انقر فوق حذف. انقر فوق نعم.

الخطوات التالية

في هذا البرنامج التعليمي، تعلمت كيفية إنشاء مجموعة Apache HBase. وكيفية إنشاء الجداول وعرض البيانات في تلك الجداول من HBase shell. لقد تعلمت أيضًا كيفية استخدام استعلام Hive على البيانات في جداول HBase. وكيفية استخدام واجهات برمجة تطبيقات HBase C# REST لإنشاء جدول HBase، واسترداد البيانات من الجدول. لمعرفة المزيد، راجع: