قم بترحيل Apache HBase إلى إصدار جديد وحساب تخزين

تتناول هذه المقالة كيفية تحديث مجموعة Apache HBase على Azure HDInsight إلى إصدار أحدث باستخدام حساب تخزين Azure مختلف.

تنطبق هذه المقالة فقط إذا كنت بحاجة إلى استخدام حسابات تخزين مختلفة لمجموعات المصدر والوجهة. لترقية الإصدارات بنفس حساب التخزين لمجموعات المصدر والوجهة، راجع ترحيل Apache HBase إلى إصدار جديد.

يجب أن تكون فترة التوقف أثناء الترقية بضع دقائق فقط. يحدث هذا التوقف عن العمل بسبب خطوات مسح جميع البيانات الموجودة في الذاكرة، ووقت تكوين الخدمات وإعادة تشغيلها على المجموعة الجديدة. ستختلف نتائجك، اعتماداً على عدد العقد وكمية البيانات والمتغيرات الأخرى.

مراجعة توافق Apache HBase

قبل ترقية Apache HBase، تأكد من توافق إصدارات HBase على مجموعات المصدر والوجهة. راجع مصفوفة توافق إصدار HBase وملاحظات الإصدار في الدليل المرجعي HBase للتأكد من أن تطبيقك متوافق مع الإصدار الجديد.

هنا مثال مصفوفة التوافق. تشير Y إلى التوافق وتشير N إلى عدم توافق محتمل:

نوع التوافق الإصدار الرئيسي الإصدار الثانوي Patch
التوافق السلكي بين الخادم والعميل N نعم نعم
التوافق بين الخادم والخادم N نعم نعم
توافق تنسيق الملف N نعم نعم
توافق واجهة برمجة تطبيقات العميل N نعم نعم
التوافق الثنائي مع العميل N N Y
توافق محدود لواجهة برمجة التطبيقات من جانب الخادم
Stable N نعم نعم
Evolving N N Y
Unstable N N N
توافق التبعية N نعم نعم
التوافق التشغيلي N N Y

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

لمزيد من المعلومات حول إصدارات HDInsight والتوافق، راجع إصدارات Azure HDInsight.

نظرة عامة على ترحيل مجموعة Apache HBase

لترقية مجموعة Apache HBase الخاصة بك على Azure HDInsight وترحيلها إلى حساب تخزين جديد، يجب إكمال الخطوات الأساسية التالية. للحصول على إرشادات مفصلة، راجع الخطوات والأوامر التفصيلية.

تحضير نظام مجموعة المصدر:

  1. أوقف عرض البيانات.
  2. مسح memstore البيانات.
  3. وقف HBase من Ambari.
  4. بالنسبة للكتل ذات عمليات الكتابة المتسارعة، قم بعمل نسخة احتياطية من دليل الكتابة إلى الأمام (WAL).

تحضير نظام مجموعة الوجهة:

  1. إنشاء نظام مجموعة الوجهة.
  2. وقف HBase من Ambari.
  3. تنظيف بيانات Zookeeper.
  4. تبديل المستخدم إلى HBase.

إكمال الترحيل

  1. قم بتنظيف نظام الملفات الوجهة وترحيل البيانات وإزالة /hbase/hbase.id.
  2. تنظيف وترحيل الجدار.
  3. ابدأ جميع الخدمات من مجموعة وجهة Ambari.
  4. تحقق من HBase.
  5. احذف مجموعة المصدر.

خطوات وأوامر الترحيل التفصيلية

استخدم هذه الخطوات والأوامر التفصيلية لترحيل مجموعة Apache HBase باستخدام حساب تخزين جديد.

تحضير نظام مجموعة المصدر

  1. أوقف الاستيعاب في مجموعة HBase المصدر.

  2. قم بمسح مجموعة HBase المصدر التي تقوم بترقيتها.

    يكتب HBase البيانات الواردة إلى مخزن في الذاكرة يسمى memstore. memstore بعد أن يصل إلى حجم معين، يقوم HBase بمسحه إلى القرص للتخزين طويل المدى في حساب التخزين الخاص بالمجموعة. يؤدي حذف نظام المجموعة المصدر بعد الترقية أيضا إلى حذف أي بيانات في memstores. للاحتفاظ بالبيانات، قم بمسح كل جدول memstore يدويا إلى القرص قبل الترقية.

    يمكنك مسح memstore البيانات عن طريق تشغيل البرنامج النصي flush_all_tables.sh من مستودع gitHub hbase-utils.

    يمكنك أيضا مسح memstore البيانات عن طريق تشغيل الأمر HBase shell التالي من داخل مجموعة HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. سجّل الدخول إلى Apache Ambari في مجموعة المصدر باستخدام https://<OLDCLUSTERNAME>.azurehdinsight.net، وأوقف خدمات HBase.

  4. في موجه التأكيد، حدد المربع لتشغيل وضع الصيانة لـ HBase.

    لمزيد من المعلومات حول الاتصال بـ Ambari واستخدامه، راجع إدارة مجموعات HDInsight باستخدام Ambari Web UI.

  5. إذا كانت مجموعة HBase المصدر لديك لا تحتوي على ميزة Accelerated Writes، فتخط هذه الخطوة. بالنسبة لمجموعات HBase المصدر ذات عمليات الكتابة السريعة، قم بعمل نسخة احتياطية من دليل WAL ضمن HDFS عن طريق تشغيل الأوامر التالية من جلسة SSH على أي عقدة Zookeeper أو عقدة عاملة لمجموعة مصدر.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

تحضير نظام مجموعة الوجهة

  1. في مدخل Microsoft Azure، قم بإعداد مجموعة HDInsight جديدة للوجهة التي تستخدم حساب تخزين مختلفاً عن نظام المجموعة المصدر.

  2. سجّل الدخول إلى Apache Ambari في المجموعة الجديدة في https://<NEWCLUSTERNAME>.azurehdinsight.net، وأوقف خدمات HBase.

  3. قم بتنظيف بيانات Zookeeper على الكتلة الوجهة عن طريق تشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عاملة:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    
  4. قم بتحويل المستخدم إلى HBase بتشغيل sudo su hbase.

تنظيف وترحيل نظام الملفات وWAL

قم بتشغيل الأوامر التالية، بناءً على إصدار HDI المصدر وما إذا كانت مجموعات المصدر والوجهة تحتوي على عمليات كتابة سريعة. دائماً ما تكون الكتلة الوجهة هي الإصدار 4.0 من HDI، نظراً لأن HDI 3.6 موجود في الدعم الأساسي ولا يوصى به للكتل الجديدة.

<container-endpoint-url> لحساب التخزين هو https://<storageaccount>.blob.core.windows.net/<container-name>. قم بتمرير رمز SAS لحساب التخزين في نهاية عنوان URL.

  • <container-fullpath> لنوع التخزين WASB هو wasbs://<container-name>@<storageaccount>.blob.core.windows.net
  • <container-fullpath> لنوع التخزين Azure Data Lake Storage Gen2 هو abfs://<container-name>@<storageaccount>.dfs.core.windows.net.

أوامر النسخ

أمر نسخ HDFS هو hdfs dfs <copy properties starting with -D> -cp

استخدم hadoop distcp للحصول على أداء أفضل عند نسخ ملفات ليست في ملف blob للصفحة: hadoop distcp <copy properties starting with -D>

لتمرير مفتاح حساب التخزين، استخدم:

  • -Dfs.azure.account.key.<storageaccount>.blob.core.windows.net='<storage account key>'
  • -Dfs.azure.account.keyprovider.<storageaccount>.blob.core.windows.net=org.apache.hadoop.fs.azure.SimpleKeyProvider

يمكنك أيضاً استخدام AzCopy للحصول على أداء أفضل عند نسخ ملفات بيانات HBase.

  1. قم بتشغيل الأمر AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. إذا كان حساب التخزين الوجهة هو تخزين Azure Blob، فقم بهذه الخطوة بعد النسخة. إذا كان حساب التخزين الوجهة هو Data Lake Storage Gen2، فتجاوز هذه الخطوة.

    يستخدم برنامج تشغيل Hadoop WASB نقاطاً بحجم 0 خاصة تتوافق مع كل دليل. يتخطى AzCopy هذه الملفات عند القيام بالنسخ. تستخدم بعض عمليات WASB هذه النقاط، لذا يجب عليك إنشاؤها في الكتلة الوجهة. لإنشاء blobs، قم بتشغيل أمر Hadoop التالي من أي عقدة في الكتلة الوجهة:

    sudo -u hbase hadoop fs -chmod -R 0755 /hbase
    

يمكنك تنزيل AzCopy من Get started with AzCopy. لمزيد من المعلومات حول استخدام AzCopy، راجع نسخة azcopy.

كتلة المصدر هي HDI 3.6 أو HDI 4.0 مع عمليات الكتابة المتسارعة، وتحتوي الكتلة الوجهة على عمليات كتابة سريعة

  1. لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. قم بإزالة hbase.id by running hdfs dfs -rm /hbase/hbase.id

  3. لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
    

نظام مجموعة المصدر هي HDI 3.6 دون عمليات الكتابة المتسارعة، وتحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة

  1. لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. قم بإزالة hbase.id by running hdfs dfs -rm /hbase/hbase.id

  3. لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs hdfs://<destination-cluster>/hbasewal
    

كتلة المصدر هي HDI 3.6 دون عمليات الكتابة المتسارعة، ولا تحتوي الكتلة الوجهة على عمليات كتابة متسارعة

  1. لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase 
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase /
    hdfs dfs -rm -r /hbase/*WALs
    
  2. قم بإزالة hbase.id by running hdfs dfs -rm /hbase/hbase.id

  3. لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals
    

نظام مجموعة المصدر هي HDI 4.0 دون عمليات الكتابة المتسارعة، وتحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة

  1. لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. قم بإزالة hbase.id by running hdfs dfs -rm /hbase/hbase.id

  3. لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals hdfs://<destination-cluster>/hbasewal
    

كتلة المصدر هي HDI 4.0 دون عمليات الكتابة المتسارعة، ولا تحتوي الكتلة الوجهة على عمليات كتابة متسارعة

  1. لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. قم بإزالة hbase.id by running hdfs dfs -rm /hbase/hbase.id

  3. لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:

    hdfs dfs -rm -r /hbase-wals/*
    hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
    

إكمال الترحيل

  1. في الكتلة الوجهة، احفظ التغييرات وأعد تشغيل جميع الخدمات المطلوبة كما هو موضح بواسطة Ambari.

  2. قم بتوجيه التطبيق الخاص بك إلى نظام مجموعة الوجهة.

    إشعار

    يتغير اسم DNS الثابت للتطبيق الخاص بك عند الترقية. بدلاً من الترميز المضمن لاسم DNS هذا، يمكنك تكوين CNAME في إعدادات DNS لاسم المجال الخاص بك والتي تشير إلى اسم المجموعة. هناك خيار آخر وهو استخدام ملف التكوين للتطبيق الخاص بك والذي يمكنك تحديثه دون إعادة التوزيع.

  3. ابدأ بالاستيعاب.

  4. تحقق من تناسق HBase وعمليات لغة تعريف البيانات البسيطة (DDL) ولغة معالجة البيانات (DML).

  5. إذا كان نظام مجموعة الوجهة مرضياً، فاحذف نظام مجموعة المصدر.

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

لمعرفة المزيد حول Apache HBase وترقية مجموعات HDInsight، راجع المقالات التالية: