قم بترحيل 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 وترحيلها إلى حساب تخزين جديد، يجب إكمال الخطوات الأساسية التالية. للحصول على إرشادات مفصلة، راجع الخطوات والأوامر التفصيلية.
تحضير نظام مجموعة المصدر:
- أوقف عرض البيانات.
- مسح
memstore
البيانات. - وقف HBase من Ambari.
- بالنسبة للكتل ذات عمليات الكتابة المتسارعة، قم بعمل نسخة احتياطية من دليل الكتابة إلى الأمام (WAL).
تحضير نظام مجموعة الوجهة:
- إنشاء نظام مجموعة الوجهة.
- وقف HBase من Ambari.
- تنظيف بيانات Zookeeper.
- تبديل المستخدم إلى HBase.
إكمال الترحيل
- قم بتنظيف نظام الملفات الوجهة وترحيل البيانات وإزالة
/hbase/hbase.id
. - تنظيف وترحيل الجدار.
- ابدأ جميع الخدمات من مجموعة وجهة Ambari.
- تحقق من HBase.
- احذف مجموعة المصدر.
خطوات وأوامر الترحيل التفصيلية
استخدم هذه الخطوات والأوامر التفصيلية لترحيل مجموعة Apache HBase باستخدام حساب تخزين جديد.
تحضير نظام مجموعة المصدر
أوقف الاستيعاب في مجموعة HBase المصدر.
قم بمسح مجموعة HBase المصدر التي تقوم بترقيتها.
يكتب HBase البيانات الواردة إلى مخزن في الذاكرة يسمى
memstore
.memstore
بعد أن يصل إلى حجم معين، يقوم HBase بمسحه إلى القرص للتخزين طويل المدى في حساب التخزين الخاص بالمجموعة. يؤدي حذف نظام المجموعة المصدر بعد الترقية أيضا إلى حذف أي بيانات فيmemstores
. للاحتفاظ بالبيانات، قم بمسح كل جدولmemstore
يدويا إلى القرص قبل الترقية.يمكنك مسح
memstore
البيانات عن طريق تشغيل البرنامج النصي flush_all_tables.sh من مستودع gitHub hbase-utils.يمكنك أيضا مسح
memstore
البيانات عن طريق تشغيل الأمر HBase shell التالي من داخل مجموعة HDInsight:hbase shell flush "<table-name>"
سجّل الدخول إلى Apache Ambari في مجموعة المصدر باستخدام
https://<OLDCLUSTERNAME>.azurehdinsight.net
، وأوقف خدمات HBase.في موجه التأكيد، حدد المربع لتشغيل وضع الصيانة لـ HBase.
لمزيد من المعلومات حول الاتصال بـ Ambari واستخدامه، راجع إدارة مجموعات HDInsight باستخدام Ambari Web UI.
إذا كانت مجموعة HBase المصدر لديك لا تحتوي على ميزة Accelerated Writes، فتخط هذه الخطوة. بالنسبة لمجموعات HBase المصدر ذات عمليات الكتابة السريعة، قم بعمل نسخة احتياطية من دليل WAL ضمن HDFS عن طريق تشغيل الأوامر التالية من جلسة SSH على أي عقدة Zookeeper أو عقدة عاملة لمجموعة مصدر.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
تحضير نظام مجموعة الوجهة
في مدخل Microsoft Azure، قم بإعداد مجموعة HDInsight جديدة للوجهة التي تستخدم حساب تخزين مختلفاً عن نظام المجموعة المصدر.
سجّل الدخول إلى Apache Ambari في المجموعة الجديدة في
https://<NEWCLUSTERNAME>.azurehdinsight.net
، وأوقف خدمات HBase.قم بتنظيف بيانات Zookeeper على الكتلة الوجهة عن طريق تشغيل الأوامر التالية في أي عقدة Zookeeper أو عقدة عاملة:
hbase zkcli rmr /hbase-unsecure quit
قم بتحويل المستخدم إلى HBase بتشغيل
sudo su hbase
.
تنظيف وترحيل نظام الملفات وWAL
قم بتشغيل الأوامر التالية، بناءً على إصدار HDI المصدر وما إذا كانت مجموعات المصدر والوجهة تحتوي على عمليات كتابة سريعة. دائماً ما تكون الكتلة الوجهة هي الإصدار 4.0 من HDI، نظراً لأن HDI 3.6 موجود في الدعم الأساسي ولا يوصى به للكتل الجديدة.
- كتلة المصدر هي HDI 3.6 مع عمليات الكتابة المتسارعة، وتحتوي المجموعة الوجهة على عمليات كتابة سريعة.
- نظام مجموعة المصدر هي HDI 3.6 دون عمليات الكتابة المتسارعة، ويحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة.
- نظام مجموعة المصدر هي HDI 3.6 دون عمليات الكتابة المتسارعة، ولا تحتوي المجموعة الوجهة على عمليات الكتابة السريعة.
- نظام مجموعة المصدر هي HDI 4.0 مع عمليات الكتابة المتسارعة، وتحتوي المجموعة الوجهة على عمليات كتابة سريعة.
- نظام مجموعة المصدر هي HDI 4.0 دون عمليات الكتابة المتسارعة، ويحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة.
- كتلة المصدر هي HDI 4.0 دون عمليات الكتابة المتسارعة، ولا تحتوي مجموعة الوجهة على عمليات الكتابة السريعة.
<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.
قم بتشغيل الأمر AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
إذا كان حساب التخزين الوجهة هو تخزين 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 مع عمليات الكتابة المتسارعة، وتحتوي الكتلة الوجهة على عمليات كتابة سريعة
لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
قم بإزالة
hbase.id
by runninghdfs dfs -rm /hbase/hbase.id
لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:
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 دون عمليات الكتابة المتسارعة، وتحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة
لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:
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
قم بإزالة
hbase.id
by runninghdfs dfs -rm /hbase/hbase.id
لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:
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 دون عمليات الكتابة المتسارعة، ولا تحتوي الكتلة الوجهة على عمليات كتابة متسارعة
لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:
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
قم بإزالة
hbase.id
by runninghdfs dfs -rm /hbase/hbase.id
لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:
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 دون عمليات الكتابة المتسارعة، وتحتوي نظام مجموعة الوجهة على عمليات كتابة سريعة
لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
قم بإزالة
hbase.id
by runninghdfs dfs -rm /hbase/hbase.id
لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:
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 دون عمليات الكتابة المتسارعة، ولا تحتوي الكتلة الوجهة على عمليات كتابة متسارعة
لتنظيف نظام الملفات وترحيل البيانات، قم بتشغيل الأوامر التالية:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
قم بإزالة
hbase.id
by runninghdfs dfs -rm /hbase/hbase.id
لتنظيف الجدار وترحيله، قم بتشغيل الأوامر التالية:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
إكمال الترحيل
في الكتلة الوجهة، احفظ التغييرات وأعد تشغيل جميع الخدمات المطلوبة كما هو موضح بواسطة Ambari.
قم بتوجيه التطبيق الخاص بك إلى نظام مجموعة الوجهة.
إشعار
يتغير اسم DNS الثابت للتطبيق الخاص بك عند الترقية. بدلاً من الترميز المضمن لاسم DNS هذا، يمكنك تكوين CNAME في إعدادات DNS لاسم المجال الخاص بك والتي تشير إلى اسم المجموعة. هناك خيار آخر وهو استخدام ملف التكوين للتطبيق الخاص بك والذي يمكنك تحديثه دون إعادة التوزيع.
ابدأ بالاستيعاب.
تحقق من تناسق HBase وعمليات لغة تعريف البيانات البسيطة (DDL) ولغة معالجة البيانات (DML).
إذا كان نظام مجموعة الوجهة مرضياً، فاحذف نظام مجموعة المصدر.
الخطوات التالية
لمعرفة المزيد حول Apache HBase وترقية مجموعات HDInsight، راجع المقالات التالية: