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 CatalogJanitor
futtatásához futtassa a parancsot a hbase rendszerhéjban: catalogjanitor_run
.
A hbck chore
futtatá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 hbck
a 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:meta
vagy 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_2
egy 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 ns1
szá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 kellhbase: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 n2
szá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 ns1
szá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 chore
ké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 overlaps
a 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
ColumnFamilyDescriptors
a 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 RegionServer
a.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:meta
hasonló 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 n2
lé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 eredetithbase: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 az725a0fe6c2c869d3d0a9ed82bfa80fa3
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 aPleaseHoldException
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:meta
info: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, MasterProcWALs
a () elemet félretéve egyik entitást sem kell zárolni, így tömegesen hozzárendelheti vagy megszüntetheti az hozzárendelést.