ترحيل مجموعة Apache HBase إلى إصدار جديد

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. إنشاء نظام مجموعة الوجهة.
  2. وقف HBase من Ambari.
  3. تحديث fs.defaultFS في تكوينات خدمة HDFS للإشارة إلى حاوية مجموعة المصدر الأصلية.
  4. بالنسبة للكتل ذات عمليات الكتابة المتسارعة، قم بتحديث hbase.rootdir في تكوينات خدمة HBase للإشارة إلى حاوية مجموعة المصدر الأصلية.
  5. تنظيف بيانات Zookeeper.

أكمل الترحيل:

  1. تنظيف وترحيل الجدار.
  2. انسخ التطبيقات من الحاوية الافتراضية لمجموعة الوجهة إلى حاوية المصدر الأصلية.
  3. ابدأ جميع الخدمات من مجموعة وجهة Ambari.
  4. تحقق من HBase.
  5. احذف مجموعة المصدر.

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

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

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

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

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

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

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

    يمكنك أيضاً مسح بيانات 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. ضمن Services>HDFS>Configs>Advanced>Advanced core-site، قم بتغيير إعداد HDFS fs.defaultFS للإشارة إلى اسم حاوية نظام مجموعة المصدر الأصلي. على سبيل المثال، يجب تغيير الإعداد في لقطة الشاشة التالية إلى wasbs://hbase-upgrade-old-2021-03-22.

    في Ambari، حدد Services > HDFS > Configs > Advanced > Advanced core-site ثم قم بتغيير اسم الحاوية.

  4. إذا كان نظام مجموعة الوجهة الخاص بك يحتوي على ميزة "عمليات الكتابة المسرَّعة"، فقم بتغيير المسار hbase.rootdir للإشارة إلى اسم حاوية نظام مجموعة المصدر الأصلي. على سبيل المثال، يجب تغيير المسار التالي إلى hbase-upgrade-old-2021-03-22. إذا كانت مجموعتك لا تحتوي على عمليات الكتابة السريعة، فتجاوز هذه الخطوة.

    In Ambari, change the container name for the HBase rootdir.

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

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

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

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

  • دائماً ما تكون نظام مجموعة الوجهة هي الإصدار 4.0 من HDI، نظراً لأن HDI 3.6 موجود في الدعم الأساسي ولا يوصى به للكتل الجديدة.
  • أمر نسخ HDFS هو hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

ملاحظة

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

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

قم بتنظيف بيانات WAL FS لنظام مجموعة الوجهة، وانسخ دليل WAL من نظام المجموعة المصدر إلى HDFS لنظام مجموعة الوجهة. انسخ الدليل عن طريق تشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عامل على نظام مجموعة الوجهة:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://mycluster/

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

قم بتنظيف بيانات WAL FS لنظام مجموعة الوجهة، وانسخ دليل WAL من نظام المجموعة المصدر إلى HDFS لنظام مجموعة الوجهة. انسخ الدليل عن طريق تشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عامل على نظام مجموعة الوجهة:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container>/hbase/*WALs hdfs://mycluster/hbasewal

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

قم بتنظيف بيانات WAL FS لنظام مجموعة الوجهة، وانسخ دليل WAL الخاص بنظام المجموعة المصدر إلى HDFS لنظام مجموعة الوجهة. لنسخ الدليل، قم بتشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عاملة في نظام مجموعة الوجهة:

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

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

قم بتنظيف بيانات WAL FS لنظام مجموعة الوجهة، وانسخ دليل WAL من نظام المجموعة المصدر إلى HDFS لنظام مجموعة الوجهة. انسخ الدليل عن طريق تشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عامل على نظام مجموعة الوجهة:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

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

قم بتنظيف بيانات WAL FS لنظام مجموعة الوجهة، وانسخ دليل WAL الخاص بنظام المجموعة المصدر إلى HDFS لنظام مجموعة الوجهة. لنسخ الدليل، قم بتشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عاملة في نظام مجموعة الوجهة:

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

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

  1. باستخدام sudo -u hdfs سياق المستخدم، انسخ المجلد /hdp/apps/<new-version-name> ومحتوياته من <destination-container-fullpath> إلى المجلد /hdp/apps الموجود ضمن <source-container-fullpath>. يمكنك نسخ المجلد عن طريق تشغيل الأوامر التالية على نظام مجموعة الوجهة:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    على سبيل المثال:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/4.1.3.6 wasbs://hbase-upgrade-old-2021-03-22@hbaseupgrade.blob.core.windows.net/hdp/apps
    
  2. في نظام مجموعة الوجهة، احفظ التغييرات، وأعد تشغيل جميع الخدمات المطلوبة كما يشير Ambari.

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

    ملاحظة

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

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

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

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

ترحيل HBase باستخدام البرامج النصية

  1. قم بتنفيذ البرنامج النصي migrate-hbase-source.sh على نظام مجموعة المصدر وmigrate-hbase-dest.sh على نظام مجموعة الوجهة. استخدم الإرشادات التالية لتنفيذ هذه البرامج النصية.

    ملاحظة

    لا تنسخ هذه البرامج النصية سجلات WAL القديمة لـ HBase كجزء من الترحيل؛ لذلك، لا يتم استخدام البرامج النصية على أنظمة المجموعات التي تم تمكين ميزة النسخ الاحتياطي HBase أو النسخ المتماثل بها.

  2. على نظام المجموعة المصدر

    sudo bash migrate-hbase-source.sh
    
  3. على نظام المجموعة الوجهة

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

الوسيطة الإلزامية للأمر أعلاه:

   -f, --src-fs
   The fs.defaultFS of the source cluster
   For example:
   -f wasb://anynamehbase0316encoder-2021-03-17t01-07-55-935z@anynamehbase0hdistorage.blob.core.windows.net

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

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