استخدام أداة Apache HBase HBCK2

توضح لك هذه المقالة كيفية استخدام أداة HBase HBCK2. HBCK2 هي أداة الإصلاح لمجموعات Apache HBase.

نظرة عامة على HBCK2

HBCK2 هي حاليا أداة بسيطة تقوم بشيء واحد فقط في كل مرة. في hbase-2.x، الشكل الرئيسي هو الحكم النهائي لجميع الحالات، لذلك فإن المبدأ العام لمعظم أوامر HBCK2 هو أنه يطلب من الرئيس إجراء جميع الإصلاحات.

يجب أن يكون Master قيد التشغيل قبل أن تتمكن من تشغيل أوامر HBCK2. أجرى HBCK1 تحليلا وأبلغ عن مجموعتك على أنها جيدة أو سيئة، ولكن HBCK2 أقل افتراضا. في hbase-2.x، يحدد المشغل ما يجب إصلاحه ثم يستخدم الأدوات، بما في ذلك HBCK2، لإجراء الإصلاحات.

HBCK2 مقابل HBCK1

HBCK2 هو خلف HBCK، أداة الإصلاح التي تم شحنها مع hbase-1.x (المعروفة أيضا باسم HBCK1). يمكنك استخدام HBCK2 بدلا من HBCK1 لإجراء إصلاحات مقابل مجموعات hbase-2.x. لا ينبغي تشغيل HBCK1 مقابل تثبيت hbase-2.x لأنه قد يحدث تلفا. تمت إزالة مرفق الكتابة الخاص به (-fix). يمكنه الإبلاغ عن حالة نظام مجموعة hbase-2.x، ولكن تقييماته غير دقيقة لأنه لا يفهم الأعمال الداخلية ل hbase-2.x.

لا يعمل HBCK2 بالطريقة التي اعتاد عليها HBCK1، حتى في الحالات التي يتم فيها تسمية الأوامر بشكل مماثل عبر الإصدارين.

الحصول على HBCK2

يمكنك العثور على الإصدار ضمن دليل توزيع HBase. لمزيد من المعلومات، راجع صفحة تنزيلات HBase.

واجهة المستخدم الرئيسية: تقرير HBCK

تظهر صفحة تقرير HBCK المضافة إلى الشكل الرئيسي في 2.1.6 في /hbck.jsp الإخراج من فحصين يتم تشغيلهما بواسطة Master على فاصل زمني. أحدهما هو الإخراج حسب CatalogJanitor كلما تم تشغيله. إذا تم العثور على تداخلات أو ثقوب في hbase:meta، يسرد CatalogJanitor ما عثر عليه. تقارن عملية خلفية chore أخرى محتوى نظام الملفات hbase:meta و. إذا تم العثور على حالة شاذة، فإنه يقوم بتدوين ملاحظة في قسم تقرير HBCK الخاص به.

لتشغيل CatalogJanitor، قم بتنفيذ الأمر في hbase shell: catalogjanitor_run.

لتشغيل hbck chore، قم بتنفيذ الأمر في hbase shell: hbck_chore_run.

لا يأخذ كلا الأمرين أي مدخلات.

تشغيل HBCK2

يمكنك تشغيل hbck الأمر عن طريق تشغيله عبر $HBASE_HOME/bin/hbase البرنامج النصي. بشكل افتراضي، عند تشغيل bin/hbase hbck، يتم تشغيل أدوات HBCK1 المضمنة. لتشغيل HBCK2، تحتاج إلى الإشارة إلى جرة HBCK2 مضمنة -j باستخدام الخيار ، كما هو الحال في هذا المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar

يطبع هذا الأمر تعليمات HBCK2، دون تمرير الخيارات أو الوسيطات.

أوامر HBCK2

ملاحظة

اختبر هذه الأوامر على نظام مجموعة اختبار لفهم الوظائف قبل تشغيلها في بيئة إنتاج.

assigns [OPTIONS] <ENCODED_REGIONNAME/INPUTFILES_FOR_REGIONNAMES>... | -i <INPUT_FILE>...

خيارات:

  • -o,--override: يتجاوز الملكية عن طريق إجراء آخر.
  • -i,--inputFiles: يأخذ اسما واحدا أو أكثر من أسماء المناطق المشفرة.

يمكن استخدام هذا raw التعيين حتى أثناء التهيئة الرئيسية (إذا تم تحديد العلامة -skip ). فهو ينورة المعالجات المشتركة ويمرر اسما واحدا أو أكثر من أسماء المناطق المشفرة. de00010733901a05f5a2a3a382e27dd4 هو مثال على ما يبدو عليه اسم المنطقة المشفرة لمساحة المستخدم. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar assigns de00010733901a05f5a2a3a382e27dd4

يقوم بإرجاع PIDs للمنشأة AssignProcedures أو -1 إذا لم يكن أي منها. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على أسماء مناطق مشفرة، واحدة لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar assigns -i fileName1 fileName2

unassigns [OPTIONS] <ENCODED_REGIONNAME>...| -i <INPUT_FILE>...

خيارات:

  • -o,--override: يتجاوز الملكية عن طريق إجراء آخر.
  • -i,--inputFiles: يأخذ منها أو أكثر من ملفات الإدخال من الأسماء المشفرة.

يمكن استخدام هذا raw إلغاء التعيين حتى أثناء التهيئة الرئيسية (إذا تم تحديد العلامة -skip ). فهو ينورة المعالجات المشتركة ويمرر اسما واحدا أو أكثر من أسماء المناطق المشفرة. de00010733901a05f5a2a3a382e27dd4 مثال على ما يبدو عليه اسم المنطقة المشفرة لتجاوز المستخدم للمساحة. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar unassign de00010733901a05f5a2a3a382e27dd4 

يقوم بإرجاع PIDs للمنشأة UnassignProcedures أو -1 إذا لم يكن أي منها. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على أسماء مناطق مشفرة، واحدة لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar unassigns fileName1 -i fileName2

bypass [OPTIONS] <PID>...

خيارات:

  • -o,--override: يتجاوز إذا كان الإجراء قيد التشغيل أو عالقا.
  • -r,--recursive: يتجاوز الأصل وأبنائه. هذا الخيار بطيء ومكلفة.
  • -w,--lockWait: ينتظر بالمللي ثانية قبل الاستسلام. Default=1.
  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من PIDs.

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

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar bypass <PID>

إذا -i or --inputFiles تم تحديده، فمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على PIDs، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar bypass -i fileName1 fileName2

reportMissingRegionsInMeta <NAMESPACE|NAMESPACE:TABLENAME>... | -i <INPUT_FILE>...

الخيار:

  • i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من مساحة الاسم أو أسماء الجداول.

استخدم هذا الخيار عندما تكون المناطق مفقودة من hbase:meta ولكن عندما لا تزال الدلائل موجودة في HDFS. هذا الأمر هو أسلوب فحص فقط. تم تصميمه لأغراض إعداد التقارير ولا يقوم بأي إصلاحات. يوفر طريقة عرض للمناطق (إن وجدت) التي ستتم إعادة إضافتها إلى hbase:meta، مجمعة حسب الجدول أو مساحة الاسم المعنية.

للمناطق المقروءة بفعالية في التعريف، قم بتشغيل addFsRegionsMissingInMeta. يجب hbase:meta أن يكون هذا الأمر متصلا بالإنترنت. لكل مساحة اسم/جدول تم تمريره كمعلمة، فإنه يقوم بإجراء تباعد بين المناطق المتوفرة في hbase:meta مقابل dirs المناطق الموجودة على HDFS. تتم طباعة diات المنطقة بدون تطابقات مجمعة تحت اسم الجدول ذي الصلة. تظهر الجداول التي لا تحتوي على مناطق مفقودة رسالة "لا توجد مناطق مفقودة". إذا لم يتم تحديد مساحة اسم أو جدول، فإنه يتحقق من جميع المناطق الموجودة.

يقبل مجموعة من مساحات الأسماء والجداول المتعددة. يجب أن تتضمن أسماء الجداول جزء مساحة الاسم، حتى بالنسبة للجداول في مساحة الاسم الافتراضية. وإلا، فإنه يفترض قيمة مساحة الاسم. يؤدي هذا المثال إلى تشغيل تقارير المناطق المفقودة للجداول table_1 و table_2، ضمن مساحة اسم افتراضية:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar reportMissingRegionsInMeta default:table_1 default:table_2

يؤدي هذا المثال إلى تشغيل تقرير المناطق المفقودة للجدول table_1 ضمن مساحة اسم افتراضية، ولكل الجداول من مساحة ns1الاسم :

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar reportMissingRegionsInMeta default:table_1 ns1

يقوم بإرجاع قائمة بالمناطق المفقودة لكل جدول تم تمريره كمعلمة، أو لكل جدول على مساحات الأسماء المحددة كمعلمة. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <NAMESPACE|NAMESPACE:TABLENAME>، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar reportMissingRegionsInMeta -i fileName1 fileName2

addFsRegionsMissingInMeta <NAMESPACE|NAMESPACE:TABLENAME>... | -i <INPUT_FILE>...

الخيار:

  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من أسماء جداول مساحة الاسم لاستخدامها عندما تكون المناطق مفقودة من hbase:meta ولكن الدلائل لا تزال موجودة في HDFS. يجب hbase:meta أن تكون متصلا بالإنترنت.

لكل اسم جدول تم تمريره كمعلمة، فإنه يقوم بإجراء تباعد بين المناطق المتوفرة في hbase:meta ومناطق dirs على HDFS. ثم بالنسبة إلى dirs بدون hbase:meta تطابقات، فإنه يقرأ regioninfo ملف بيانات التعريف ويعيد إنشاء منطقة معينة في hbase:meta. تتم إعادة إنشاء المناطق في حالة CLOSED في hbase:meta الجدول، ولكن ليس في Masters ذاكرة التخزين المؤقت. لم يتم تعيينها أيضا. للحصول على هذه المناطق عبر الإنترنت، قم بتشغيل الأمر HBCK2 assigns المطبوع عند انتهاء تشغيل هذا الأمر.

إذا كنت تستخدم إصدارات hbase أقدم من 2.3.0، يلزم إعادة تشغيل HMasters قبل تنفيذ مجموعة assigns الإخراج. يضيف هذا المثال مناطق مفقودة للجداول tbl_1 في مساحة الاسم الافتراضية، tbl_2 وفي مساحة n1الاسم، ولكل الجداول من مساحة n2الاسم :

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar addFsRegionsMissingInMeta default:tbl_1 n1:tbl_2 n2

يقوم بإرجاع HBCK2 والأمر assigns مع جميع المناطق التي تمت إعادة إدخالها. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <NAMESPACE|NAMESPACE:TABLENAME>، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar addFsRegionsMissingInMeta -i fileName1 fileName2

extraRegionsInMeta <NAMESPACE|NAMESPACE:TABLENAME>... | -i <INPUT_FILE>...

خيارات:

  • -f, --fix: إصلاح التعريف عن طريق إزالة جميع المناطق الإضافية التي تم العثور عليها.
  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من مساحة الاسم أو أسماء الجداول.

يبلغ عن المناطق الموجودة على hbase:meta ولكن بدون دلائل ذات صلة على نظام الملفات. يجب hbase:meta أن تكون متصلا بالإنترنت. لكل اسم جدول تم تمريره كمعلمة، فإنه ينفذ تباينا بين المناطق المتوفرة في hbase:meta و dirs المنطقة على نظام الملفات المحدد. سيتم حذف مناطق إضافية من Meta إذا مرت بالخيار --fix .

ملاحظة

قبل أن تقرر استخدام --fix الخيار، يجدر التحقق مما إذا كانت المناطق الإضافية المبلغ عنها متداخلة مع المناطق الصالحة الحالية. إذا كان الأمر كذلك، فهذا extraRegionsInMeta --fix هو الحل الأمثل. وإلا، assigns فإن الأمر هو الحل الأبسط. يعيد إنشاء dirs للمناطق في نظام الملفات، إذا لم تكن موجودة.

يؤدي هذا المثال إلى تشغيل تقارير مناطق إضافية ضمن table_1 مساحة الاسم الافتراضية، ولكل الجداول من مساحة ns1الاسم :

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar extraRegionsInMeta default:table_1 ns1

يؤدي هذا المثال إلى تشغيل تقارير مناطق إضافية ضمن table_1 مساحة الاسم الافتراضية، ولكل الجداول من مساحة ns1 الاسم مع خيار الإصلاح:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar extraRegionsInMeta -f default:table_1 ns1

يقوم بإرجاع قائمة بالمناطق الإضافية لكل جدول تم تمريره كمعلمة، أو لكل جدول على مساحات الأسماء المحددة كمعلمة. إذا -i or --inputFiles تم تحديده، فمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <NAMESPACE|NAMESPACE:TABLENAME>، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar extraRegionsInMeta -i fileName1 fileName2

fixMeta

ملاحظة

لا يعمل هذا الخيار بشكل جيد مع HBase 2.1.6. لا نوصي باستخدامه على نظام مجموعة HBase 2.1.6.

قم بإصلاح من جانب الخادم للحالة السيئة أو غير المتسقة في hbase:meta. تحتوي واجهة المستخدم الرئيسية على علامة تبويب جديدة HBCK Report مطابقة تقوم بتفريغ التقارير التي تم إنشاؤها بواسطة أحدث تشغيل و catalogjanitor جديد hbck chore.

من الضروري أولا أن hbase:meta تكون سليمة قبل إجراء أي إصلاحات أخرى. يقوم بإصلاح holes و overlaps، وإنشاء أدلة منطقة (فارغة) في HDFS لمطابقة المناطق المضافة إلى hbase:meta.

هذا الأمر ليس نفس الأمر hbck1 القديم المسمى بالمثل. يعمل مقابل التقارير التي تم إنشاؤها بواسطة الأخير catalog_janitor ويتم hbck chore تشغيله. إذا لم يكن هناك شيء لإصلاحه، فإن التشغيل هو حلقة. وإلا، إذا كانت HBCK Report واجهة المستخدم تبلغ عن مشاكل، فإن تشغيل المشكلات fixMeta يمسح hbase:meta المشكلات.

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar fixMeta

generateMissingTableDescriptorFile <NAMESPACE:TABLENAME>

يحاول هذا الأمر إصلاح جدول معزول عن طريق إنشاء ملف واصف جدول مفقود. هذا الأمر ليس له أي تأثير إذا كان مجلد الجدول مفقودا أو إذا كان .tableinfo موجودا. (لا نتجاوز واصفات الجدول الموجودة.) يتحقق هذا الأمر أولا مما إذا كان TableDescriptor مخزنا مؤقتا في HBase Master، وفي هذه الحالة يتم استرداده .tableinfo وفقا لذلك. إذا TableDescriptor لم يتم تخزينه مؤقتا في Master، فإنه ينشئ ملفا افتراضيا .tableinfo بالعناصر التالية:

  • اسم الجدول.
  • قائمة عائلة العمود التي تم تحديدها استنادا إلى نظام الملفات.
  • الخصائص الافتراضية لكل من TableDescriptor و ColumnFamilyDescriptors. .tableinfo إذا تم إنشاء الملف باستخدام المعلمات الافتراضية، فتأكد من التحقق من خصائص عائلة الجدول أو العمود لاحقا. (قم بتغييرها إذا لزم الأمر.) لا يغير هذا الأسلوب أي شيء في HBase. يكتب الملف الجديد .tableinfo فقط إلى نظام الملفات. بالنسبة للجداول المعزولة، على سبيل المثال، ServerCrashProcedures لتثبيتها، قد تحتاج إلى إصلاح الخطأ بعد إنشاء ملفات معلومات الجدول المفقودة.
hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar generateMissingTableDescriptorFile namespace:table_name

replication [OPTIONS] [<NAMESPACE:TABLENAME>... | -i <INPUT_FILE>...]

خيارات:

  • -f, --fix: إصلاح أي مشكلات في النسخ المتماثل تم العثور عليها.
  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من أسماء الجداول.

يبحث عن قوائم انتظار النسخ المتماثل غير المنسوخة ويحذفها إذا اجتاز --fix الخيار . يمرر اسم جدول للتحقق من وجود حاجز النسخ المتماثل وإزالة إذا .--fix

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar replication namespace:table_name

إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <TABLENAME>، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar replication -i fileName1 fileName2

setRegionState [<ENCODED_REGIONNAME> <STATE> | -i <INPUT_FILE>...]

الخيار:

  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من أسماء المناطق المرمزة وحالاتها.

حالات المنطقة المحتملة:

  • دون اتصال
  • فتح
  • فتح
  • CLOSIN
  • مغلقه
  • تقسيم
  • تقسيم
  • FAILED_OPEN
  • FAILED_CLOSE
  • دمج
  • المدمجه
  • SPLITTING_NEW
  • MERGING_NEW
  • ABNORMALLY_CLOSED

تحذير

هذا الخيار المحفوء بالمخاطر مخصص للاستخدام فقط كملاذ أخير.

تتضمن سيناريوهات المثال إلغاء التعيينات أو التعيينات التي لا يمكن المضي قدما لأن المنطقة في حالة غير متناسقة في hbase:meta. على سبيل المثال، unassigns يمكن متابعة الأمر فقط إذا تم تمرير منطقة في إحدى الحالات التالية: SPLITTING أو SPLIT أو MERGING أو OPEN أو CLOSING.

قبل تعيين حالة منطقة يدويا باستخدام هذا الأمر، تأكد من أن هذه المنطقة لا تتم معالجتها بواسطة إجراء قيد التشغيل، مثل assign أو split. يمكنك الحصول على عرض لإجراءات التشغيل في hbase shell باستخدام list_procedures الأمر . يعين هذا المثال المنطقة de00010733901a05f5a2a3a382e27dd4 إلى إغلاق:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar setRegionState de00010733901a05f5a2a3a382e27dd4 CLOSING

ترجع 0 إذا تغيرت حالة المنطقة وبخلاف 1 ذلك. إذا -i or --inputFiles تم تحديده، فمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <ENCODED_REGIONNAME> <STATE>، زوج واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar setRegionState -i fileName1 fileName2

setTableState [<TABLENAME> <STATE> | -i <INPUT_FILE>...]

الخيار:

  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من أسماء الجداول وحالاتها.

يتم تمكين حالات الجدول المحتملة وتعطيلها وتعطيلها وتمكينها.

لقراءة حالة الجدول الحالية، في hbase shell، قم بتشغيل:

hbase> get 'hbase:meta', '<TABLENAME>', 'table:state'

قيمة x08x00 == ENABLED، x08x01 == DISABLED، إلخ. كما يمكن تشغيله describe <TABLENAME> في موجه shell. يجعل هذا المثال اسم الجدول ممكنا للمستخدم:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar setTableState users ENABLED

يقوم بإرجاع كل ما كانت عليه حالة الجدول السابقة. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <TABLENAME> <STATE>، زوج واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar setTableState -i fileName1 fileName2

scheduleRecoveries <SERVERNAME>... | -i <INPUT_FILE>...

الخيار:

  • -i,--inputFiles: يأخذ ملف إدخال واحد أو أكثر من أسماء الخوادم.

جدولة ServerCrashProcedure(SCP) قائمة ب RegionServers. تنسيق اسم الخادم ك <HOSTNAME>,<PORT>,<STARTCODE>. (راجع HBase UI/logs.)

يستخدم RegionServera.example.org, 29100,1540348649479هذا المثال :

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar scheduleRecoveries a.example.org,29100,1540348649479

يقوم بإرجاع PIDs للمنشأة ServerCrashProcedures أو -1 إذا لم يتم إنشاء أي إجراء. (راجع السجلات الرئيسية لمعرفة سبب عدم وجودها.) تتم إضافة دعم الأوامر في إصدارات HBase 2.0.3 أو 2.1.2 أو 2.2.0 أو أحدث. إذا -i or --inputFiles تم تحديده، فإنه يمرر اسما واحدا أو أكثر من أسماء ملفات الإدخال. يحتوي كل ملف على <SERVERNAME>، واحد لكل سطر. على سبيل المثال:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar scheduleRecoveries -i fileName1 fileName2 

إصلاح المشاكل

يساعدك هذا القسم في استكشاف المشكلات الشائعة وإصلاحها.

المبادئ العامة

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

لا يمكن تعيين منطقة إذا كانت في حالة CLOSING (أو العكس، غير معين إذا كانت في حالة الفتح) دون الانتقال أولا عبر CLOSED. يجب أن تنتقل المناطق دائما من مغلقة، إلى فتح، إلى فتح، ثم إلى إغلاق وإغلاق.

عند إجراء إصلاح، قم بإصلاح الجداول واحدا تلو الآخر.

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

تعيين وإلغاء تعيين

بشكل عام، عند التعيين، يستمر Master حتى ينجح. يأخذ التعيين تأمينا حصريا على المنطقة. يمنع التأمين تعيينا متزامنا أو إلغاء تعيينه من التشغيل. ينتظر التعيين مقابل منطقة مؤمنة حتى يتم تحرير التأمين قبل إحراز تقدم.

Master startup cannot progress, in holding-pattern until region online:

2018-10-01 22:07:42,792 WARN org.apache.hadoop.hbase.master.HMaster: hbase:meta,1.1588230740 isn't online; state={1588230740 state=CLOSING, ts=1538456302300, server=ve1017.example.org,22101,1538449648131}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region online.

يتعذر على Master متابعة بدء التشغيل لأنه لا يوجد إجراء لتعيينه hbase:meta (أو hbase:namespace). لإدخال واحدة، استخدم أداة HBCK2:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar assigns -skip 1588230740

في هذا المثال، 1588230740 هو الاسم hbase:meta المشفر للمنطقة. -skip مرر خيار إيقاف HBCK2 من إجراء فحص إصدار مقابل Master البعيد. إذا لم يكن "الشكل الرئيسي" البعيد لأعلى، فإن التحقق من الإصدار يطالب ب Master is initializing response أو PleaseHoldException ويسقط محاولة التعيين. يتجنب -skip الأمر فحص الإصدار ويهبط التعيين المجدول.

قد يحدث الشيء نفسه لجدول hbase:namespace النظام. ابحث عن اسم hbase:namespace المنطقة المشفرة للمنطقة واتخذ خطوات مماثلة لما فعلناه من أجل hbase:meta. في هذه الحالة الأخيرة، يطبع الشكل الرئيسي بالفعل رسالة مفيدة تبدو مثل هذا المثال:

2019-07-09 22:08:38,966 WARN  [master/localhost:16000:becomeActiveMaster] master.HMaster: hbase:namespace,,1562733904278.9559cf72b8e81e1291c626a8e781a6ae. isn't online; state={9559cf72b8e81e1291c626a8e781a6ae state=CLOSED, ts=1562735318897, server=null}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.

لجدولة تعيين للجدول hbase:namespace المذكور في سطر السجل السابق:

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar -skip assigns 9559cf72b8e81e1291c626a8e781a6ae

مرر الاسم المشفر لمنطقة مساحة الاسم. (يختلف الاسم المشفر لكل عملية نشر.)

المناطق المفقودة في hbase:meta region/table restore/rebuild

تمت إزالة مناطق الجدول من الجدول في hbase:meta بعض الحالات غير العادية. وكشفت فرز هذه الحالات عن أنها كانت محفزة للمشغل. قام المستخدمون بتشغيل أداة HBCK1 القديمة OfflineMetaRepair مقابل نظام مجموعة HBCK2. OfflineMetaRepair هي أداة معروفة لإصلاح hbase:meta المشكلات المتعلقة بالجدول على إصدارات HBase 1.x. الإصدار الأصلي غير متوافق مع HBase 2.x أو إصدارات أعلى، وقد خضع لبعض التعديلات. في الحالات القصوى، يمكن تشغيله الآن عبر HBCK2.

في معظم هذه الحالات، ينتهي الأمر بالمناطق المفقودة hbase:meta عشوائيا، ولكن قد تظل hbase قيد التشغيل. في مثل هذه الحالات، يمكن معالجة المشكلة مع Master عبر الإنترنت باستخدام addFsRegionsMissingInMeta الأمر في HBCK2. هذا الأمر أقل تعطيلا ل hbase من إعادة البناء الكاملة hbase:meta ، والتي تتم تغطيتها لاحقا. يمكن استخدامه حتى لاسترداد منطقة جدول مساحة الاسم.

مناطق إضافية في hbase:meta region/table restore/rebuild

يمكن أن تكون هناك أيضا حالات تمت فيها إزالة مناطق الجدول في نظام الملفات ولكن لا تزال هناك إدخالات ذات صلة على hbase:meta الجدول. قد يحدث هذا السيناريو بسبب مشاكل في التقسيم أو أخطاء العملية اليدوية (مثل حذف أو نقل منطقة dir يدويا)، أو حتى مشكلات فقدان بيانات معلومات التعريف مثل HBASE-21843.

يمكن معالجة مثل هذه المشاكل باستخدام Master عبر الإنترنت باستخدام extraRegionsInMeta --fix الأمر في HBCK2. هذا الأمر أقل تعطيلا ل hbase من إعادة البناء الكاملة hbase:meta ، والتي تتم تغطيتها لاحقا. من المفيد أيضا عندما يحدث هذا على الإصدارات التي لا تدعم fixMeta خيار HBCK2 (أي إصدارات قبل 2.0.6 أو 2.1.6 أو 2.2.1 أو 2.3.0 أو 3.0.0).

وصفة إعادة إنشاء hbase:meta عبر الإنترنت

إذا hbase:meta لم يكن الفساد حرجا للغاية، فلا يزال بإمكان hbase إحضاره عبر الإنترنت. حتى إذا كانت منطقة مساحة الاسم من بين المناطق المفقودة، فمن الممكن الفحص hbase:meta أثناء فترة التهيئة، حيث ينتظر Master تعيين مساحة الاسم. للتحقق من هذا الموقف، hbase:meta يمكن تنفيذ أمر فحص. إذا لم مهلة أو تظهر أي أخطاء، يكون متصلا hbase:meta بالإنترنت:

echo "scan 'hbase:meta', {COLUMN=>'info:regioninfo'}" | hbase shell

يمكن استخدام HBCK2 addFsRegionsMissingInMeta إذا لم تظهر الرسالة أي أخطاء. يقرأ معلومات بيانات تعريف المنطقة المتوفرة على دلائل منطقة FS لإعادة إنشاء المناطق في hbase:meta. نظرا لأنه يمكن تشغيله مع hbase يعمل جزئيا، فإنه يحاول تعطيل الجداول عبر الإنترنت المتأثرة بالمشكلة التي تم الإبلاغ عنها وينتقل إلى المناطق المقروءة إلى hbase:meta. يمكنه التحقق من وجود جداول أو مساحات أسماء معينة، أو جميع الجداول من جميع مساحات الأسماء. يوضح هذا المثال إضافة مناطق مفقودة للجداول tbl_1 في مساحة الاسم الافتراضية، tbl_2 في مساحة n1الاسم ، ولكل الجداول من مساحة n2الاسم :

hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar addFsRegionsMissingInMeta default:tbl_1 n1:tbl_2 n2

نظرا لأنه يعمل بشكل مستقل عن Master، بعد الانتهاء بنجاح، يلزم اتخاذ المزيد من الخطوات لتعيين المناطق المعاد إضافتها. يتم سرد هذه الرسائل على النحو التالي:

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

بعد إعادة تشغيل Masters والإنترنت hbase:meta بالفعل (تحقق مما إذا كان يمكن الوصول إلى واجهة مستخدم الويب)، قم بتشغيل الأمر assigns من addFsRegionsMissingInMeta الإخراج المحفوظ سابقا.

ملاحظة

إذا كانت منطقة مساحة الاسم من بين المناطق المفقودة، فستحتاج إلى إضافة العلامة --skip في بداية الأمر تعيينات التي تم إرجاعها.

إذا عانى نظام مجموعة من خسارة كارثية للجدول hbase:meta ، فمن الممكن إعادة بناء تقريبية باستخدام الوصفة التالية. في المخطط التفصيلي، نقوم بإيقاف نظام المجموعة. قم بتشغيل أداة HBCK2 OfflineMetaRepair، التي تقرأ الدلائل وبيانات التعريف التي تم إسقاطها في نظام الملفات وتبذل قصارى جهدها في إعادة إنشاء جدول قابل للتطبيق hbase:met . أعد تشغيل نظام المجموعة. أدخل تعيينا لإحضار جدول مساحة اسم النظام عبر الإنترنت. وأخيرا، أعد تعيين جداول مساحة المستخدم التي تريد تمكينها. (تنشئ إعادة الإنشاء hbase:meta جدولا مع كافة الجداول دون اتصال ولا يتم تعيين أي مناطق.)

وصفة إعادة بناء مفصلة

ملاحظة

استخدم هذا الخيار فقط كملاذ أخير. لا نوصي بذلك.

  • إيقاف نظام المجموعة.

  • قم بتشغيل أمر إعادة البناء hbase:meta من HBCK2. ينقل هذا الأمر جانبا الأصل hbase:meta ويضع في مكان واحد أعيد إنشاؤه حديثا. يوضح هذا المثال كيفية تشغيل الأداة. يضيف العلامة -details بحيث تقوم الأداة بنسخ المعلومات عن المناطق التي وجدتها في HDFS:

    hbase --config /etc/hbase/conf -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar org.apache.hbase.hbck1.OfflineMetaRepair -details
    
  • بدء تشغيل نظام المجموعة. لن يبدأ بشكل كامل. إنه عالق لأن جدول مساحة الاسم غير متصل ولا يوجد إجراء تعيين في مخزن الإجراءات لهذا الطوارئ. يعرض سجل HBase Master هذه الحالة. يوضح هذا المثال ما يسجله:

    2019-07-10 18:30:51,090 WARN  [master/localhost:16000:becomeActiveMaster] master.HMaster: hbase:namespace,,1562808216225.725a0fe6c2c869d3d0a9ed82bfa80fa3. isn't online; state={725a0fe6c2c869d3d0a9ed82bfa80fa3 state=CLOSED, ts=1562808619952, server=null}; ServerCrashProcedures=false. Master startup can't progress, in holding-pattern until region onlined.
    

    لتعيين منطقة جدول مساحة الاسم، لا يمكنك استخدام shell. إذا كنت تستخدم shell، فإنه يفشل مع PleaseHoldException لأن Master لم يصل بعد. (ينتظر أن يأتي جدول مساحة الاسم عبر الإنترنت قبل أن يعلن عن نفسه "لأعلى".) يجب عليك استخدام الأمر تعيين HBCK2. لتعيين، تحتاج إلى اسم مشفر لمساحة الاسم. يظهر في السجل المقتبس. 725a0fe6c2c869d3d0a9ed82bfa80fa3 هذا في هذه الحالة. يجب عليك تمرير -skip الأمر لتخطي التحقق من الإصدار الرئيسي. (بدونه، استدعاء HBCK2 الخاص بك يثير PleaseHoldException لأن Master لم يصل بعد.) يضيف هذا المثال تعيين جدول مساحة الاسم:

    hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar -skip assigns 725a0fe6c2c869d3d0a9ed82bfa80fa3
    

    إذا كان استدعاء يعود مع Connection refused، هل ماستر يصل؟ يتم إيقاف تشغيل Master بعد فترة من الوقت إذا لم يتمكن من تهيئة نفسه. أعد تشغيل نظام المجموعة/الشكل الرئيسي وأعد تشغيل الأمر assigns.

  • عند تشغيل التعيينات بنجاح، سترى أنه يصدر شيئا مشابها للمثال التالي. 48 في النهاية هو PID لجدول إجراءات التعيين. إذا كان PID الذي تم إرجاعه هو -1، لم تتقدم الشركة الناشئة الرئيسية بشكل كاف، لذا أعد المحاولة. أو، قد يكون اسم المنطقة المشفرة غير صحيح، لذا تحقق من هذه المشكلة.

    hbase --config /etc/hbase/conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.x.x-SNAPSHOT.jar -skip assigns 725a0fe6c2c869d3d0a9ed82bfa80fa3
    
    18:40:43.817 [main] WARN  org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    18:40:44.315 [main] INFO  org.apache.hbase.HBCK2 - hbck sufpport check skipped
    [48]
    
  • تحقق من السجلات الرئيسية. السيد كان يجب أن يأتي ترى إكمالا ناجحا ل PID=48. ابحث عن سطر مثل هذا المثال للتحقق من نجاح التشغيل الرئيسي:

    master.HMaster: Master has completed initialization 132.515sec
    

    قد يستغرق ظهوره بعض الوقت.

    تضيف إعادة إنشاء hbase:meta جداول المستخدم في حالة DISABLED والمناطق في وضع CLOSED. جداول قابلة لإعادة تمكينها عبر shell لإعادة جميع مناطق الجدول إلى الاتصال بالإنترنت. قم بذلك واحدا تلو الآخر أو راجع الأمر تمكين الكل ".*" لتمكين جميع الجداول في وقت واحد.

    ملف تعريف إعادة البناء يفتقد إلى عمليات التحرير وقد يحتاج إلى إصلاح وتنظيف لاحق باستخدام المرفق الموضح سابقا في هذه المقالة.

الملفات المرجعية التي تم إسقاطها وملف hbase.version المفقود والملفات التالفة

يمكن ل HBCK2 التحقق من وجود مراجع معلقة وملفات تالفة. يمكنك أن تطلب منه تهميش الملفات السيئة، والتي قد تكون هناك حاجة إلى تجاوز الحدب حيث المناطق لن تكون متصلة بالإنترنت أو تفشل القراءات. راجع أمر نظام الملفات في قائمة HBCK2. قم بتمرير اسم جدول واحد أو أكثر (أو استخدم none للتحقق من جميع الجداول). يتم الإبلاغ عن ملفات غير صالحة. --fix مرر الخيار لإجراء الإصلاحات.

إعادة تشغيل الإجراء

كحل أخير، إذا كانت ميزة Master غير قابلة للانتهاك وكانت جميع محاولات الإصلاح تؤدي فقط إلى ظهور أقفال أو إجراءات لا يمكن التراجع عنها لا يمكن إنهائها، أو إذا كانت مجموعة MasterProcWALs من تنمو دون حدود، فمن الممكن مسح حالة Master نظيفة. انقل الدليل جانبا /hbase/MasterProcWALs/ ضمن تثبيت HBase وأعد تشغيل العملية الرئيسية. يعود بتنسيق جدولي بدون ذاكرة.

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

اقرأ الأعمدة hbase:metainfo:state كما هو موضح لتحديد ما يجب تعيينه أو إلغاء تعيينه. بعد مسح جميع المحفوظات عن طريق نقل جانبا MasterProcWALs، يجب قفل أي من الكيانات، لذلك أنت حر في التعيين المجمع أو إلغاء التعيين.