Share via


Az Apache HBase HBCK2 eszköz használata

Ez a cikk bemutatja, hogyan használhatja a HBase HBCK2 eszközt. A HBCK2 az Apache HBase-fürtök javítóeszköze.

A HBCK2 áttekintése

A HBCK2 jelenleg egy egyszerű eszköz, amely egyszerre csak egy dolgot tesz. A hbase-2.x-ben a Mester az összes állapot végső arbiterje, ezért a legtöbb HBCK2-parancs általános alapelve, hogy a mestertől kéri az összes javítást.

A HBCK2-parancsok futtatása előtt a főkiszolgálónak futnia kell. A HBCK1 elemzést végzett, és jónak vagy rossznak jelentette a fürtöt, de a HBCK2 kevésbé vélhető. A hbase-2.x-ben az operátor határozza meg, hogy mit kell kijavítani, majd a javításhoz eszközkészletet (beleértve a HBCK2-t is) használ.

HBCK2 és HBCK1

A HBCK2 a HBCK utódja, a hbase-1.x (más néven HBCK1) javítóeszköz. A HBCK1 helyett a HBCK2 használatával végezhet javításokat a hbase-2.x fürtökön. A HBCK1-et nem szabad hbase-2.x telepítéssel futtatni, mert az kárt okozhat. Az írási létesítmény (-fix) el lett távolítva. Jelentést tud készíteni egy hbase-2.x fürt állapotáról, de az értékelés pontatlan, mert nem érti a hbase-2.x belső működését.

A HBCK2 nem úgy működik, mint a HBCK1, még akkor sem, ha a parancsok neve hasonló a két verzióban.

A HBCK2 beszerzése

A kiadás a HBase terjesztési könyvtárában található. További információt a HBase letöltési oldalán talál.

Fő felhasználói felület: A HBCK-jelentés

A főkiszolgálóhoz a 2.1.6-ban /hbck.jsp hozzáadott HBCK-jelentésoldal a master által időközönként végzett két vizsgálat kimenetét jeleníti meg. Az egyik a kimenet a CatalogJanitor futtatáskor. Ha átfedések vagy lyukak találhatók a fájlban hbase:meta, a listázza a CatalogJanitor talált elemeket. Egy másik háttérfolyamat chore összehasonlítja a és a hbase:meta fájlrendszer tartalmát. Ha anomáliát talál, a HBCK-jelentés szakaszában jegyzetet készít.

A CatalogJanitorfuttatásához futtassa a parancsot a hbase rendszerhéjban: catalogjanitor_run.

A hbck chorefuttatásához futtassa a parancsot a hbase rendszerhéjban: hbck_chore_run.

Mindkét parancs nem fogad bemenetet.

HBCK2 futtatása

A parancsot a hbck szkripten keresztül $HBASE_HOME/bin/hbase indíthatja el. Alapértelmezés szerint a futtatáskor bin/hbase hbcka beépített HBCK1 eszköz fut. A HBCK2 futtatásához egy beépített HBCK2 jarra kell mutatnia az -j alábbi példához hasonlóan:

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

Ez a parancs a HBCK2 súgóját nyomtatja ki a beállítások vagy argumentumok megadása nélkül.

HBCK2-parancsok

Megjegyzés

Tesztelje ezeket a parancsokat egy tesztfürtön, hogy megismerje a funkciókat, mielőtt éles környezetben futtatja őket.

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

Paraméterek:

  • -o,--override: Felülbírálja a tulajdonjogot egy másik eljárással.
  • -i,--inputFiles: Egy vagy több kódolt régiónevet vesz fel.

Ez a raw hozzárendelés a fő inicializálás során is használható (ha a -skip jelölő meg van adva). Koprocesszorokat használ, és átad egy vagy több kódolt régiónevet. de00010733901a05f5a2a3a382e27dd4 egy példa arra, hogyan néz ki egy felhasználótér kódolt régióneve. Például:

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

A létrehozott AssignProcedures VAGY -1 PID-ket adja vissza, ha nincs. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl kódolt régióneveket tartalmaz, soronként egyet. Például:

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>...

Paraméterek:

  • -o,--override: Felülbírálja a tulajdonjogot egy másik eljárással.
  • -i,--inputFiles: Kódolt nevekből álló bemeneti fájlokat vesz fel.

Ez a raw hozzárendelés visszavonása a fő inicializálás során is használható (ha a -skip jelölő meg van adva). Koprocesszorokat használ, és átad egy vagy több kódolt régiónevet. de00010733901a05f5a2a3a382e27dd4 egy példa arra, hogy a felhasználó hogyan bírálja felül a térkódolt régió nevét. Például:

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

A létrehozott UnassignProcedures VAGY -1 PID-ket adja vissza, ha nincs. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl kódolt régióneveket tartalmaz, soronként egyet. Például:

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>...

Paraméterek:

  • -o,--override: Felülbírálja, ha az eljárás fut vagy elakad.
  • -r,--recursive: Átadja a szülőnek és gyermekeinek. Ez a lehetőség lassú és költséges.
  • -w,--lockWait: Ezredmásodpercet vár, mielőtt feladja. Default=1.
  • -i,--inputFiles: Egy vagy több PID bemeneti fájlját veszi fel.

Egy vagy több eljárásazonosítót ad át az eljárás befejezéséhez. A kihagyott eljárás szülője a befejezésig ugrik. Az entitások inkonzisztens állapotban maradnak, és manuális javítást igényelnek. Előfordulhat, hogy a főkiszolgáló újraindítására van szükség a még megtartott zárolások törléséhez. A megkerülés meghiúsul, ha az eljárás gyermekekkel rendelkezik. Adja hozzá recursive , ha csak egy szülő PID van a szülő és a gyermekek befejezéséhez. Ez a beállítás lassú és veszélyes, ezért használja szelektíven. Nem mindig működik.

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

Ha -i or --inputFiles meg van adva, adjon meg egy vagy több bemeneti fájlnevet. Minden fájl tartalmaz PID-ket, soronként egyet. Például:

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>...

Lehetőség:

  • i,--inputFiles: Egy vagy több névtér- vagy táblanév bemeneti fájlját veszi fel.

Akkor használja ezt a beállítást, ha a régiók hiányoznak, hbase:meta de a könyvtárak továbbra is megtalálhatók a HDFS-ben. Ez a parancs csak ellenőrzési módszer. Jelentéskészítési célokra tervezték, és nem végez javításokat. Azt a nézetet jeleníti meg, hogy mely régiók (ha vannak ilyenek) lesznek beolvasva a táblába hbase:metavagy névtérbe csoportosítva.

A metabeli régiók hatékony olvasásához futtassa a parancsot addFsRegionsMissingInMeta. Ennek a parancsnak online állapotúnak kell hbase:meta lennie. Minden paraméterként átadott névtér/tábla esetében különbséget hajt végre a meglévő régiók dir-jei között a HDFS-en hbase:meta . Az egyezések nélküli régiónaplók a kapcsolódó táblanév alatt vannak csoportosítva. A hiányzó régiókkal nem rendelkező táblázatokban a "nincs hiányzó régió" üzenet jelenik meg. Ha nincs megadva névtér vagy tábla, ellenőrzi az összes meglévő régiót.

Több névtér és tábla kombinációját fogadja el. A táblaneveknek tartalmazniuk kell a névtérrészt, még az alapértelmezett névtérben lévő táblák esetében is. Ellenkező esetben névtérértéket feltételez. Ez a példa a táblák table_1 hiányzó régiójelentéseit aktiválja, és table_2egy alapértelmezett névtérben:

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

Ez a példa egy hiányzó régiók jelentését aktiválja az alapértelmezett névtér alatti táblához table_1 , valamint a névtérből ns1származó összes táblához:

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

A paraméterként átadott táblákhoz, illetve a paraméterként megadott névterekhez tartozó összes tábla hiányzó régióinak listáját adja vissza. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl soronként egyet tartalmaz <NAMESPACE|NAMESPACE:TABLENAME>. Például:

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>...

Lehetőség:

  • -i,--inputFiles: Egy vagy több névtértábla nevét tartalmazó bemeneti fájlt használ, ha a régiók hiányoznak, hbase:meta de a könyvtárak továbbra is megtalálhatók a HDFS-ben. Online állapotúnak kell hbase:meta lennie.

Minden paraméterként átadott táblanév esetében különbséget hajt végre a HDFS-ben hbase:meta elérhető régiók és a régiónaplók között. Ezután az egyezés nélküli hbase:meta naplók esetében beolvassa a regioninfo metaadatfájlt, és újra létrehoz egy adott régiót a fájlban hbase:meta. A régiók újra létrejönnek zárt állapotban a hbase:meta táblában, de a Masters gyorsítótárban nem. Ezek sincsenek hozzárendelve. A régiók online állapotba helyezéséhez futtassa a HBCK2 assigns parancsot, amely a parancsfuttatás befejeződésekor jelenik meg.

Ha 2.3.0-nál régebbi hbase-kiadásokat használ, a kimenetkészlet végrehajtása előtt a HMasters működés közbeni újraindítására assigns van szükség. Ez a példa hiányzó régiókat ad hozzá az alapértelmezett névtér tábláihoz tbl_1 , tbl_2 a névtérhez n1és a névtérből n2származó összes táblához:

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

Visszaadja a HBCK2-t és egy assigns parancsot az összes újraszerkesztett régióval. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl soronként egyet tartalmaz <NAMESPACE|NAMESPACE:TABLENAME>. Például:

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>...

Paraméterek:

  • -f, --fix: Kijavítja a metaadatot az összes talált további régió eltávolításával.
  • -i,--inputFiles: Egy vagy több névtér- vagy táblanevet tartalmazó bemeneti fájlt vesz fel.

Jelentést készít azokról a régiókról, amelyeken jelen vannak, hbase:meta de nincsenek kapcsolódó könyvtárak a fájlrendszerben. Online állapotúnak kell hbase:meta lennie. Minden paraméterként átadott táblanév esetében különbséget hajt végre az adott fájlrendszerben hbase:meta elérhető régiók és régiónaplók között. További régiók törlődnek a Meta-ból, ha az megfelel a --fix lehetőségnek.

Megjegyzés

Mielőtt a lehetőség használata mellett dönt, érdemes ellenőrizni, hogy a --fix jelentett további régiók átfedésben vannak-e a meglévő érvényes régiókkal. Ha igen, akkor extraRegionsInMeta --fix az optimális megoldás. Ellenkező esetben a assigns parancs az egyszerűbb megoldás. Újra létrehozza a régiók naplóit a fájlrendszerben, ha nem léteznek.

Ez a példa további régiók jelentéseit table_1 aktiválja az alapértelmezett névtérben, valamint a névtérből ns1származó összes táblához:

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

Ez a példa további régiókra vonatkozó jelentéseket table_1 aktivál az alapértelmezett névtérben, valamint a névtérből ns1 származó összes táblához a javítás lehetőséggel:

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

A paraméterként átadott táblákhoz, illetve a paraméterként megadott névtereken lévő táblákhoz további régiók listáját adja vissza. Ha -i or --inputFiles meg van adva, adjon meg egy vagy több bemeneti fájlnevet. Minden fájl soronként egyet tartalmaz <NAMESPACE|NAMESPACE:TABLENAME>. Például:

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

Megjegyzés

Ez a beállítás nem működik jól a HBase 2.1.6-ossal. 2.1.6-os HBase-fürtön való használatra nem javasoljuk.

Hibás vagy inkonzisztens állapotú kiszolgálóoldali javítást hajthat végre a fájlban hbase:meta. A fő felhasználói felületnek van egy megfelelő új HBCK Report lapja, amely a legutóbbi futtatás catalogjanitor által létrehozott jelentéseket és egy újat hbck chorekészít.

Kritikus fontosságú, hogy hbase:meta először kifogástalan állapotban kell lennie, mielőtt bármilyen más javítást végezne. Kijavítja a és overlapsa holes régiókönyvtárak létrehozását (üres) a HDFS-ben, hogy megfeleljenek a következőhöz hozzáadott régióknakhbase:meta: .

Ez a parancs nem ugyanaz, mint a régi hbck1 parancs, amely hasonló nevű. Az utolsó catalog_janitor által létrehozott és hbck chore futtatott jelentésekkel működik. Ha nincs mit kijavítani, a futtatás egy hurok. Ellenkező esetben, ha a HBCK Report felhasználói felület problémákat jelez, egy futtatás fixMeta törli a hbase:meta problémákat.

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

generateMissingTableDescriptorFile <NAMESPACE:TABLENAME>

Ez a parancs egy hiányzó táblaleíró fájl létrehozásával próbál kijavítani egy árva táblát. Ennek a parancsnak nincs hatása, ha a táblamappa hiányzik vagy .tableinfo jelen van. (A meglévő táblaleírókat nem bíráljuk felül.) Ez a parancs először ellenőrzi TableDescriptor , hogy a rendszer gyorsítótárazott-e a HBase-főkiszolgálón, és ebben az esetben ennek megfelelően helyreáll .tableinfo . Ha TableDescriptor nincs gyorsítótárazva a főkiszolgálón, létrehoz egy alapértelmezett .tableinfo fájlt a következő elemekkel:

  • A tábla neve.
  • A fájlrendszer alapján meghatározott oszlopcsaládlista.
  • A és ColumnFamilyDescriptorsa alapértelmezett tulajdonságai.TableDescriptor Ha a .tableinfo fájl az alapértelmezett paraméterekkel lett létrehozva, ellenőrizze később a tábla- vagy oszlopcsalád tulajdonságait. (Szükség esetén módosítsa őket.) Ez a metódus semmit sem módosít a HBase-ben. Csak az új .tableinfo fájlt írja a fájlrendszerbe. Árva táblák esetén például a hiányzó táblainformációs fájlok létrehozása után előfordulhat, ServerCrashProcedures hogy ki kell javítania a hibát.
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>...]

Paraméterek:

  • -f, --fix: Kijavítja a talált replikációs problémákat.
  • -i,--inputFiles: Egy vagy több táblaneveket tartalmazó bemeneti fájlt vesz fel.

Megkeresi a nem törölt replikációs üzenetsorokat, és törli őket, ha megfelelt a --fix lehetőségnek. Átad egy táblanevet, hogy ellenőrizze a replikációs korlátot, és kiürítse, ha --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

Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl soronként egyet tartalmaz <TABLENAME>. Például:

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>...]

Lehetőség:

  • -i,--inputFiles: Egy vagy több, kódolt régióneveket és állapotokat tartalmazó bemeneti fájlt vesz fel.

Lehetséges régióállapotok:

  • OFFLINE
  • MEGNYITÁSA
  • MEGNYITÁS
  • CLOSIN
  • ZÁRT
  • FELOSZTÁSA
  • SPLIT
  • FAILED_OPEN
  • FAILED_CLOSE
  • EGYESÜLŐ
  • EGYESÍTETT
  • SPLITTING_NEW
  • MERGING_NEW
  • ABNORMALLY_CLOSED

Figyelmeztetés

Ez a kockázatos lehetőség csak végső megoldásként használható.

Példaforgatókönyvek például az olyan hozzárendelések vagy hozzárendelések, amelyek nem tudnak előrehaladni, mert a régió inkonzisztens állapotban van a-ben hbase:meta. A parancs például csak akkor folytathatja a műveletet, unassigns ha a következő állapotok valamelyikében adott át egy régiót: FELOSZTÁS, FELOSZTÁS, EGYESÍTÉS, OPEN vagy CLOSING.

Mielőtt manuálisan beállítana egy régióállapotot ezzel a paranccsal, tanúsítsa, hogy ezt a régiót nem egy futó eljárás( például assign vagy split) kezeli. A parancs használatával list_procedures megtekintheti a hbase-rendszerhéjban futó eljárásokat. Ez a példa a régiót de00010733901a05f5a2a3a382e27dd4 ZÁRÓ értékre állítja:

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

Akkor ad 0 vissza, ha a régió állapota megváltozott, máskülönben 1 . Ha -i or --inputFiles meg van adva, adjon meg egy vagy több bemeneti fájlnevet. Minden fájl tartalmazza a <ENCODED_REGIONNAME> <STATE>elemet, soronként egy pár. Például:

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>...]

Lehetőség:

  • -i,--inputFiles: Egy vagy több, táblázatneveket és állapotokat tartalmazó bemeneti fájlt vesz fel.

Lehetséges táblaállapotok: ENABLED, DISABLED, DISABLING és ENABLEING.

Az aktuális táblaállapot beolvasásához futtassa a következőt a hbase-rendszerhéjban:

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

X08x00 == ENABLED, x08x01 == DISABLED stb. A rendszerhéj-parancssorban is futtatható describe <TABLENAME> . Ebben a példában a táblanév engedélyezve van:

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

Azt adja vissza, ami az előző táblaállapot volt. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl tartalmazza a <TABLENAME> <STATE>elemet, soronként egy pár. Például:

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>...

Lehetőség:

  • -i,--inputFiles: Egy vagy több kiszolgálóneveket tartalmazó bemeneti fájlt vesz fel.

A lista ütemezése ServerCrashProcedure(SCP)RegionServers. Formázza a kiszolgáló nevét a következő formátumban: <HOSTNAME>,<PORT>,<STARTCODE>. (Lásd: HBase felhasználói felület/naplók.)

Ez a példa a következőt használja 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

Visszaadja a létrehozott ServerCrashProcedures vagy a -1 azonosítót, ha nincs eljárás létrehozva. (Ennek okáért tekintse meg a főnaplókat.) A parancsok támogatása a HBase 2.0.3-s, 2.1.2-s, 2.2.0-s vagy újabb verzióiban érhető el. Ha -i or --inputFiles meg van adva, egy vagy több bemeneti fájlnevet ad át. Minden fájl soronként egyet tartalmaz <SERVERNAME>. Például:

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

Problémák megoldása

Ez a szakasz segít a gyakori problémák elhárításában.

Általános alapelvek

Ha javítást végez, először győződjön meg arról, hogy hbase:meta konzisztens, mielőtt bármilyen más problématípust, például a fájlrendszer devianciáját kijavítja. A fájlrendszer devianciáját vagy a hozzárendeléssel kapcsolatos problémákat a hbase:meta sorrendbe állítása után kell kezelni. Ha hbase:meta problémákat tapasztal, a főkiszolgáló nem tud megfelelő elhelyezéseket végezni, amikor árva fájlrendszeradatokat fogad el, vagy régió-hozzárendeléseket tesz.

A régió nem rendelhető hozzá, ha ZÁRÓ állapotban van (vagy inverz, nincs hozzárendelve, ha OPENING állapotban van), anélkül, hogy először a CLOSED-en keresztül váltanál. A régióknak mindig át kell lépnie a ZÁRT, a MEGNYITÁS, a MEGNYITÁS, majd a BEZÁRÁS és a LEZÁRÁS között.

Ha javítást végez, egyenként javítsa ki a táblákat.

Ha egy tábla LE VAN TILTVA, nem rendelhet hozzá régiót. A Főnaplókban láthatja, hogy a fő jelentések kimaradtak, mert a tábla LE VAN TILTVA. Hozzárendelhet egy régiót, mert az jelenleg OPENING állapotban van, és zárt állapotban szeretné, hogy az megegyezzon a tábla DISABLED (LETILTVA) állapotával. Ebben az esetben előfordulhat, hogy ideiglenesen ENGEDÉLYEZVE értékre kell állítania a tábla állapotát, hogy elvégezhesse a hozzárendelést. Ezután a visszavonási utasítás után ismét beállítja. A HBCK2 rendelkezik a lehetőségekkel, hogy lehetővé tegye ezt a módosítást. Lásd a HBCK2 használati kimenetét.

Hozzárendelés és hozzárendelés megszüntetése

Hozzárendeléskor a főkiszolgáló általában mindaddig megmarad, amíg sikeres nem lesz. A hozzárendelés kizárólagos zárolást rendel a régióhoz. A zárolás megakadályozza, hogy egy egyidejű hozzárendelés futjon, vagy törölje a hozzárendelést. A zárolt régióhoz rendelt hozzárendelés megvárja, amíg a zárolás feloldódik, mielőtt továbblép.

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.

A főkiszolgáló nem tudja folytatni az indítást, mert nincs hozzárendelhető hbase:meta eljárás (vagy hbase:namespace). Ha be szeretne szúrni egyet, használja a HBCK2 eszközt:

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

Ebben a példában 1588230740 a régió kódolt neve hbase:meta . Adja meg azt a lehetőséget, amely megakadályozza, hogy a -skip HBCK2 verzióellenőrzést végez a távoli főkiszolgálón. Ha a távoli főkiszolgáló nem működik, a verzióellenőrzés rákérdez a Master is initializing response vagy PleaseHoldException a parancsra, és elveti a hozzárendelési kísérletet. A -skip parancs elkerüli a verzióellenőrzést, és lekérte az ütemezett hozzárendelést.

Ugyanez történhet a hbase:namespace rendszertáblával is. Keresse meg a régió kódolt régiónevét hbase:namespace , és hajtsa végre a következőhöz hbase:metahasonló lépéseket: . Ebben az utóbbi esetben a mesteralakzat egy hasznos üzenetet nyomtat ki, amely az alábbi példához hasonlóan néz ki:

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.

Az előző naplósorban feljegyzett tábla hozzárendelésének hbase:namespace ütemezése:

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

Adja át a névtérrégió kódolt nevét. (A kódolt név üzemelő példányonként eltérő.)

Hiányzó régiók a hbase-ben:metarégió/tábla visszaállítása/újraépítése

Néhány szokatlan esetben a táblaterületeket eltávolították a hbase:meta táblából. Ezen esetek osztályozása feltárta, hogy operátor által kiváltottak. A felhasználók egy HBCK2-fürtön futtatták az elavult HBCK1 OfflineMetaRepair eszközt. Az OfflineMetaRepair egy jól ismert eszköz a HBase 1.x-verziók táblázatokkal kapcsolatos problémáinak megoldásához hbase:meta . Az eredeti verzió nem kompatibilis a HBase 2.x vagy újabb verzióival, és néhány módosításon esett át. Szélsőséges helyzetekben most már a HBCK2-n keresztül is futtatható.

A legtöbb ilyen esetben a régiók véletlenszerűen hiányoznak hbase:meta , de a hbase továbbra is működőképes lehet. Ilyen helyzetekben a probléma online megoldható a főkiszolgálóval a addFsRegionsMissingInMeta HBCK2-ben található paranccsal. Ez a parancs kevésbé zavaró a hbase számára, mint a teljes hbase:meta újraépítés, amelyről később lesz szó. A névtértábla régiójának helyreállítására is használható.

További régiók a hbase-ben:metarégió/tábla visszaállítása/újraépítése

Előfordulhatnak olyan helyzetek is, amikor a rendszer eltávolította a táblázatterületeket a fájlrendszerből, de továbbra is vannak kapcsolódó bejegyzések a hbase:meta táblában. Ez a forgatókönyv a felosztással kapcsolatos problémák, a manuális műveleti hibák (például a régió dir manuális törlése vagy áthelyezése) vagy akár a metaadatok adatvesztési problémái, például a HBASE-21843 miatt fordulhat elő.

Az ilyen problémák a főkiszolgálóval online megoldhatók a extraRegionsInMeta --fix HBCK2-ben található paranccsal. Ez a parancs kevésbé zavaró a hbase számára, mint a teljes hbase:meta újraépítés, amelyről később lesz szó. Akkor is hasznos, ha ez olyan verziókban fordul elő, amelyek nem támogatják a fixMeta HBCK2 beállítást (a 2.0.6, 2.1.6, 2.2.1, 2.3.0 vagy 3.0.0 előtti verziók esetében).

Online hbase:meta-újraépítési recept

Ha hbase:meta a sérülés nem túl kritikus, a hbase továbbra is online állapotba helyezheti. Még ha a névtérrégió is a hiányzó régiók közé tartozik, az inicializálási időszak alatt is vizsgálható hbase:meta , ahol a főkiszolgáló a névtér hozzárendelésére vár. A helyzet ellenőrzéséhez végrehajthat egy hbase:meta vizsgálati parancsot. Ha nem időtúllépés vagy hibák jelennek meg, az hbase:meta online állapotban van:

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

A HBCK2 addFsRegionsMissingInMeta akkor használható, ha az üzenetben nem jelennek meg hibák. Beolvassa a régió metaadatait, amelyek az FS-régió könyvtáraiban érhetők el a régiók újralétrehozásához a-ben hbase:meta. Mivel a hbase részben működőképes, megpróbálja letiltani a jelentett probléma által érintett online táblákat, és olvasási régiókba kerül.hbase:meta Adott táblákat vagy névtereket, illetve az összes névtérből származó összes táblát ellenőrizheti. Ez a példa azt mutatja be, hogyan adhat hozzá hiányzó régiókat tbl_1 az alapértelmezett névtérben, tbl_2 a névtérben n1és a névtérben n2lévő összes táblához:

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

Mivel a főkiszolgálótól függetlenül működik, a sikeres befejezése után további lépésekre van szükség az olvasási régiók hozzárendeléséhez. Ezek az üzenetek a következőképpen jelennek meg:

  • addFsRegionsMissingInMeta egy assigns parancsot ad ki az összes beolvasott régióval együtt. Ezt a parancsot később kell végrehajtani, ezért másolja és mentse az egyszerűség kedvéért.
  • A 2.3.0-snál korábbi HBase-verziók esetében a sikeres befejezés és a kimenet mentése után addFsRegionsMissingInMeta indítsa újra az összes futó HBase-főkiszolgálót.

Miután a főkiszolgálók újraindultak, és hbase:meta már online állapotban vannak (ellenőrizze, hogy a webes felhasználói felület elérhető-e), futtassa a korábban mentett kimenet hozzárendelési addFsRegionsMissingInMeta parancsát.

Megjegyzés

Ha a névtérrégió a hiányzó régiók közé tartozik, a visszaadott assigns parancs elején hozzá kell adnia --skip a jelzőt.

Ha egy fürt a táblázat katasztrofális elvesztését szenvedi hbase:meta el, az alábbi recept használatával durva újraépítés lehetséges. A vázlatban leállítjuk a fürtöt. Futtassa a HBCK2 OfflineMetaRepair eszközt, amely beolvassa a fájlrendszerbe dobott könyvtárakat és metaadatokat, és a legjobb erőfeszítést teszi egy működőképes hbase:met tábla rekonstruálásához. Indítsa újra a fürtöt. Rendeljen be egy hozzárendelést a rendszernévtértábla online állapotba helyezéséhez. Végül rendelje hozzá újra az engedélyezni kívánt felhasználóitér-táblákat. (Az újraépített táblázat offline állapotban hoz létre egy táblát hbase:meta , amelyhez nincs hozzárendelve régió.)

Részletes újraépítési recept

Megjegyzés

Ezt a beállítást csak végső megoldásként használja. Nem javasoljuk.

  • Állítsa le a fürtöt.

  • Futtassa az újraépítési hbase:meta parancsot a HBCK2-ből. Ez a parancs félreteszi az eredetit hbase:meta , és elhelyez egy újonnan újraépítettt. Ez a példa bemutatja, hogyan futtathatja az eszközt. Hozzáadja a -details jelzőt, hogy az eszköz adatokat készítsen a HDFS-ben talált régiókról:

    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
    
  • Indítsa el a fürtöt. Nem indul el teljesen. Elakadt, mert a névtértábla nincs online állapotban, és nincs hozzárendelési eljárás az eljárástárolóban ehhez a vészhelyzethez. A HBase főnaplója ezt az állapotot jeleníti meg. Ez a példa a naplókat mutatja be:

    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.
    

    A névtértábla régiójának hozzárendeléséhez nem használhatja a rendszerhéjat. Ha a rendszerhéjat használja, azzal meghiúsul PleaseHoldException , mert a mesteralakzat még nincs beállítva. (Megvárja, amíg a névtértábla online állapotba kerül, mielőtt "felfelé" deklarálja magát.) A HBCK2 assigns parancsot kell használnia. A hozzárendeléshez szüksége van a névtér kódolt nevére. Az idézett naplóban jelenik meg. Ebben az 725a0fe6c2c869d3d0a9ed82bfa80fa3 esetben. A főverzió ellenőrzésének kihagyásához át kell adnia -skip a parancsot. (Enélkül a HBCK2-hívása kiváltja a PleaseHoldException parancsot, mert a Mester még nincs beállítva.) Ez a példa a névtértábla hozzárendelését adja hozzá:

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

    Ha a hívás visszatér a következővel Connection refused: , akkor a mester áll? A főkiszolgáló egy idő után leáll, ha nem tudja inicializálni magát. Indítsa újra a fürtöt/főkiszolgálót, és futtassa újra a hozzárendelési parancsot.

  • Amikor a hozzárendelések sikeresen lefutnak, látni fogjuk, hogy az a következő példához hasonlót bocsát ki. A 48 végén a hozzárendelési eljárás ütemezésének PID-je van. Ha a visszaadott PID az -1, a fő indítás nem haladt megfelelően, ezért próbálkozzon újra. Vagy előfordulhat, hogy a kódolt régió neve helytelen, ezért ellenőrizze a problémát.

    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]
    
  • Ellenőrizze a főnaplókat. A Mesternek fel kellett volna jönnie. A PID=48 sikeres befejezését látja. Keressen egy ehhez hasonló sort a sikeres főindítás ellenőrzéséhez:

    master.HMaster: Master has completed initialization 132.515sec
    

    Eltarthat egy ideig, amíg megjelenik.

    Az újraépítés letiltott hbase:meta állapotú felhasználói táblákat és a régiókat ZÁRT módban adja hozzá. A rendszerhéjon keresztül újraküldhető táblák az összes táblarégió online állapotba hozásához. Egyenként végezze el, vagy tekintse meg az összes tábla egyidejű engedélyezéséhez az összes ".*" parancsot.

    A meta újraépítése hiányzó szerkesztéseket tartalmaz, és a cikkben korábban ismertetett létesítmény használatával további javításra és tisztításra lehet szükség.

Eldobott referenciafájlok, hiányzó hbase.version fájl és sérült fájlok

A HBCK2 ellenőrizheti a függő hivatkozásokat és a sérült fájlokat. Megkérheti, hogy mellékelje a hibás fájlokat, amelyekre szükség lehet ahhoz, hogy túllépje azokat a púpokat, ahol a régiók nem lesznek online, vagy az olvasások sikertelenek. Tekintse meg a fájlrendszer parancsát a HBCK2-listaelemben. Adjon meg egy vagy több táblanevet (vagy használja az none összes tábla ellenőrzéséhez). A rendszer hibás fájlokat jelent. Adja meg a --fix javításra vonatkozó lehetőséget.

Eljárás újraindítása

Végső megoldásként, ha a főkiszolgáló nem működik, és a javításra tett minden kísérlet csak visszavonhatatlan zárolásokat vagy olyan eljárásokat hoz létre, amelyek nem fejeződhetnek be, vagy ha a készlet MasterProcWALs korlátok nélkül növekszik, törölheti a master állapotot. Helyezze félre a könyvtárat a /hbase/MasterProcWALs/ HBase-telepítés alatt, és indítsa újra a master folyamatot. Táblázatos formátumként tér vissza memória nélkül.

Ha a törlés időpontjában az összes régiót boldogan hozzárendelték vagy offline állapotba hozták, a főkiszolgáló újraindításakor a főkiszolgálónak úgy kell felvennie és folytatnia a műveletet, mintha semmi sem történt volna. Ha azonban akkoriban áttűntek régiók, az operátornak közbe kell avatkoznia, hogy ki nem egyenlített hozzárendeléseket vagy hozzárendeléseket rendeljen a terminálponthoz.

Olvassa el a hbase:metainfo:state leírt oszlopokat annak meghatározásához, hogy mit kell hozzárendelni vagy hozzárendelni. Miután az összes előzmény törölve lett, MasterProcWALsa () elemet félretéve egyik entitást sem kell zárolni, így tömegesen hozzárendelheti vagy megszüntetheti az hozzárendelést.