فشل بدء Apache HBase Master (HMaster) في Azure HDInsight

توضح هذه المقالة خطوات استكشاف الأخطاء وإصلاحها، والحلول الممكنة للمشكلات التي تحدث عند التفاعل مع مجموعاتAzure HDInsight.

السيناريو: Master startup cannot progress, in holding-pattern until region comes online

مشكلة

فشل HMaster في البدء بسبب التحذير التالي:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

على سبيل المثال، قد تختلف قيم المعلمات في الرسالة الفعلية:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

السبب

يتحقق HMaster من دليل WAL على خوادم المنطقة قبل إعادة مناطق OPEN عبر الإنترنت. في هذه الحالة، إذا لم يكن هذا الدليل موجودا، فإنه لم يبدأ

الدقة

  1. أنشئ هذا الدليل الوهمي باستخدام الأمر: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. أعد تشغيل خدمة HMaster من واجهة مستخدم Ambari.

إذا كنت تستخدم hbase-2.x، فراجع المزيد من المعلومات حول كيفية استخدام hbck2 لتعيين مساحة الاسم وجدول التعريف

السيناريو: فشل عملية إعادة التسمية الذرية

مشكلة

ملفات غير متوقعة تم تعريفها أثناء عملية بدء التشغيل.

السبب

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

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

الدقة

تحقق من مكدس الاستدعاءات وحاول تحديد المجلد الذي قد يُسبب المشكلة (على سبيل المثال، قد يكون المجلد WAL أو المجلد .tmp). بعد ذلك، في Azure Storage Explorer أو باستخدام أوامر HDFS، حاول تحديد موقع ملف المشكلة. عادة ما يسمى *-renamePending.jsonهذا الملف . (الملف *-renamePending.json هو ملف دفتر يومية يستخدم لتنفيذ عملية إعادة التسمية الذرية في برنامج تشغيل WASB. بسبب الأخطاء في هذا التنفيذ، يمكن ترك هذه الملفات بعد تعطل العملية، وهكذا.) فرض حذف هذا الملف إما في Cloud Explorer أو باستخدام أوامر HDFS.

في بعض الأحيان، قد يكون هناك أيضاً ملف مؤقت يمكن تسميته باسم مثل $$$.$$$ في هذا الموقع. يجب عليك استخدام أمر HDFS ls لمشاهدة هذا الملف؛ لا يمكنك رؤية الملف في Azure Storage Explorer. لحذف هذا الملف، استخدم الأمر HDFS hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$.

بعد تشغيل هذه الأوامر، يجب أن يبدأ HMaster على الفور.


السيناريو: لا يوجد عنوان خادم مُدرج

مشكلة

قد ترى رسالة تشير إلى أن hbase: meta الجدول غير متصل. قد يفيد تشغيل hbck بأن hbase: meta table replicaId 0 is not found on any region.. في سجلات HMaster، قد ترى الرسالة: No server address listed in hbase: meta for region hbase: backup <region name>.

السبب

تعذر على HMaster التهيئة بعد إعادة تشغيل HBase.

الدقة

  1. في HBase shell، أدخل الأوامر التالية (غيّر القيم الفعلية حسب الاقتضاء):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. احذف الإدخال hbase: namespace. قد يكون هذا الإدخال هو نفس الخطأ الذي يتم الإبلاغ عنه عند فحص الجدول hbase: namespace.

  3. أعد تشغيل HMaster النشط من واجهة مستخدم Ambari لإحضار HBase في حالة التشغيل.

  4. في HBase shell، لإحضار جميع الجداول غير المتصلة، قم بتشغيل الأمر التالي:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

السيناريو: java.io.IOException: Timedout

مشكلة

تنتهي مهلة HMaster باستثناء فادح مشابه إلى: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

السبب

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

الدقة

  1. من واجهة مستخدم Apache Ambari، انتقل إلى HBase>التكوينات. في الملف hbase-site.xml المخصص، أضف الإعداد التالي:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. أعد تشغيل الخدمات المطلوبة (HMaster، وربما خدمات HBase أخرى).


السيناريو: عمليات إعادة تشغيل خادم المنطقة المتكررة

مشكلة

إعادة تمهيد العُقد بشكل دوري. من سجلات خادم المنطقة، قد تظهر لك إدخالات مشابهة لما يلي:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

السبب: مهلة جلسة zookeeper

إيقاف مؤقت لفترة طويلة لـ regionserver JVM GC. يؤدي regionserver الإيقاف المؤقت إلى عدم الاستجابة وعدم القدرة على إرسال نبضات القلب إلى HMaster ضمن مهلة جلسة zookeeper 40s. يعتقد regionserver HMaster أنه ميت، ويجهض regionserver ويعيد التشغيل.

للتخفيف، قم بتغيير مهلة جلسة عمل Zookeeper، ليس فقط hbase-site لإعداد zookeeper.session.timeout ولكن أيضًا zoo.cfg Zookeeper لإعداد maxSessionTimeout يحتاج إلى تغييره.

  1. قم بالوصول إلى واجهة مستخدم Ambari، وانتقل إلى HBase -> Configs -> Settings، في قسم المهلات، يمكنك تغيير قيمة مهلة جلسة Zookeeper.

  2. قم بالوصول إلى واجهة مستخدم Ambari، وانتقل إلى Zookeeper -> Configs -> Customzoo.cfg، وأضف/غير الإعداد التالي. تأكد من أن القيمة هي نفسها مثل HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. أعد تشغيل الخدمات المطلوبة.

السبب: خادم المنطقة الذي تم تحميله بشكل زائد

اتبع عدد المناطق لكل RS - الحد الأعلى لحساب الحد الأعلى. على سبيل المثال:8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

للتخفيف، قم بتوسيع نطاق نظام مجموعة HBase.


السيناريو: فشل تقسيم السجل

مشكلة

فشل HMasters في الظهور على نظام مجموعة HBase.

السبب

إعدادات HDFS وHBase التي تم تكوينها بشكل خاطئ لحساب تخزين ثانوي.

الدقة

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase وإعادة تشغيل الخدمات على Ambari.


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

إذا لم تتعرف على مشكلتك أو لم تتمكن من حلها، فتفضل بزيارة إحدى القنوات التالية للحصول على مزيد من الدعم:

  • احصل على إجابات من خبراء Azure عبر Azure Community Support.

  • تواصل مع AzureSupport - حساب Microsoft Azure الرسمي لتحسين تجربة العملاء. وصل مجتمع Azure بالموارد المناسبة: الإجابات، والدعم، والخبراء.

  • إذا كنت بحاجة لمزيد من المساعدة، فيمكنك إرسال طلب دعم من Azure portal. حدد "Support" من شريط القائمة أو افتح المحور "Help + support" . لمزيد من المعلومات التفصيلية، راجع كيفية إنشاء طلب دعم Azure. يتم تضمين الوصول إلى إدارة الاشتراك ودعم الفواتير في اشتراك Microsoft Azure، ويتم توفير الدعم الفني من خلال إحدى خطط دعم Azure.