Sdílet prostřednictvím


Použití nástroje Apache HBase HBCK2

V tomto článku se dozvíte, jak používat nástroj HBase HBCK2. HBCK2 je nástroj pro opravu clusterů Apache HBase.

Přehled HBCK2

HBCK2 je v současné době jednoduchý nástroj, který dělá jen jednu věc najednou. V hbase-2.x je master posledním arbiterem veškerého stavu, takže obecný princip pro většinu příkazů HBCK2 je, že požádá Master, aby všechny opravy.

Aby bylo možné spouštět příkazy HBCK2, musí být hlavní server spuštěný a spuštěný. HBCK1 provedl analýzu a nahlásil váš cluster jako dobrý nebo špatný, ale HBCK2 je méně předpokládaný. V hbase-2.x operátor určuje, co je třeba opravit, a pak používá nástroje, včetně HBCK2, k opravě.

HBCK2 vs. HBCK1

HBCK2 je následník HBCK, nástroj pro opravu, který se dodává s hbase-1.x (označovaný také jako HBCK1). K opravě clusterů hbase-2.x můžete použít HBCK2 místo HBCK1. HbCK1 by se nemělo spouštět proti instalaci hbase-2.x, protože by mohlo dojít k poškození. Jeho zařízení pro zápis (-fix) bylo odebráno. Může hlásit stav clusteru hbase-2.x, ale jeho hodnocení jsou nepřesná, protože nerozumí interním fungování hbase-2.x.

HBCK2 nefunguje tak, jak se HBCK1 používá, ani v případech, kdy se příkazy v obou verzích označují podobně.

Získání HBCK2

Vydání najdete v distribučním adresáři HBase. Další informace najdete na stránce pro stahování HBase.

Hlavní uživatelské rozhraní: Sestava HBCK

Stránka sestavy HBCK přidaná na hlavní stránku ve verzi 2.1.6 v /hbck.jsp zobrazení výstupu ze dvou kontrol spuštěných hlavním serverem v intervalu. Jedním z nich je výstup CatalogJanitor při každém spuštění. Pokud se hbase:metapřekrývají nebo jsou nalezeny díry, CatalogJanitor jsou uvedeny v seznamu nalezených. Další proces na pozadí chore porovnává hbase:meta obsah a obsah systému souborů. Pokud se najde anomálie, zobrazí se poznámka v části Sestava HBCK.

Spuštění příkazu CatalogJanitorv prostředí hbase: catalogjanitor_run.

Spuštění příkazu hbck chorev prostředí hbase: hbck_chore_run.

Oba příkazy nepřebírají žádné vstupy.

Spuštění HBCK2

Příkaz můžete spustit hbck spuštěním skriptu $HBASE_HOME/bin/hbase . Ve výchozím nastavení se při spuštění spustí bin/hbase hbckintegrované nástroje HBCK1. Pokud chcete spustit HBCK2, musíte pomocí této možnosti ukázat na sestavený soubor JAR -j HBCK2, jak je znázorněno v tomto příkladu:

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

Tento příkaz vytiskne nápovědu HBCK2 bez předání možností nebo argumentů.

Příkazy HBCK2

Poznámka:

Otestujte tyto příkazy v testovacím clusteru, abyste porozuměli funkcím před jejich spuštěním v produkčním prostředí.

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

Volby:

  • -o,--override: Přepíše vlastnictví jiným postupem.
  • -i,--inputFiles: Přebírá jeden nebo více zakódovaných názvů oblastí.

Toto raw přiřazení lze použít i během inicializace předlohy (pokud -skip je příznak zadán). Obléká koprocesory a předává jeden nebo více zakódovaných názvů oblastí. de00010733901a05f5a2a3a382e27dd4 je příkladem toho, jak vypadá název oblasti kódované uživatelem. Příklad:

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

Vrátí IDENTIFIKÁTORy PIN vytvořeného identifikátoru AssignProcedures nebo -1, pokud žádný. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje kódované názvy oblastí, jeden na řádek. Příklad:

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

Volby:

  • -o,--override: Přepíše vlastnictví jiným postupem.
  • -i,--inputFiles: Přebírá soubory nebo více vstupních souborů kódovaných názvů.

Toto raw zrušení přiřazení lze použít i během inicializace předlohy (pokud -skip je příznak zadán). Obléká koprocesory a předává jeden nebo více zakódovaných názvů oblastí. de00010733901a05f5a2a3a382e27dd4 je příkladem toho, jak vypadá název oblasti kódované uživatelem. Příklad:

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

Vrátí IDENTIFIKÁTORy PIN vytvořeného identifikátoru UnassignProcedures nebo -1, pokud žádný. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje kódované názvy oblastí, jeden na řádek. Příklad:

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

Volby:

  • -o,--override: Přepíše, pokud je procedura spuštěná nebo zablokovaná.
  • -r,--recursive: Obchází nadřazený objekt a jeho podřízené položky. Tato možnost je pomalá a náročná.
  • -w,--lockWait: Čeká milisekundy, než se vzdává. Default=1.
  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů IDENTIFIKÁTORů PIN.

Předá jeden nebo více identifikátorů PID procedury, které přeskočí na dokončení procedury. Nadřazená část vynechaného postupu přeskočí na dokončení. Entity jsou ponechány v nekonzistentním stavu a vyžadují ruční opravu. K vymazání zámků, které jsou stále uloženy, může být nutné restartovat hlavní server. Vynechání selže, pokud má procedura podřízené položky. Pokud recursive máte vše, co máte, je nadřazený PID pro dokončení nadřazeného a podřízeného objektu. Tato možnost je pomalá a nebezpečná, proto ji používejte selektivně. Nefunguje to vždycky.

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

Pokud -i or --inputFiles je zadán, předejte jeden nebo více vstupních názvů souborů. Každý soubor obsahuje IDENTIFIKÁTORy PIN, jeden na řádek. Příklad:

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

Možnost:

  • i,--inputFiles: Přebírá jeden nebo více vstupních souborů názvů oborů názvů nebo tabulek.

Tuto možnost použijte, pokud oblasti chybí, hbase:meta ale pokud jsou adresáře stále přítomné v HDFS. Tento příkaz je pouze metoda kontroly. Je navržený pro účely vytváření sestav a neprovádí žádné opravy. Poskytuje zobrazení, do kterých oblastí (pokud existuje) by se četlo hbase:meta, seskupené podle příslušné tabulky nebo oboru názvů.

Pokud chcete efektivně číst oblasti v meta, spusťte addFsRegionsMissingInMetapříkaz . Tento příkaz musí hbase:meta být online. Pro každý obor názvů nebo tabulku předanou jako parametr provádí rozdíl mezi oblastmi dostupnými v porovnání s diry existujících oblastí v hbase:meta HDFS. Rozpisy oblastí bez shod jsou vytištěny seskupené pod názvem související tabulky. V tabulkách bez chybějících oblastí se zobrazuje zpráva "Chybějící oblasti". Pokud není zadaný žádný obor názvů nebo tabulka, ověří všechny existující oblasti.

Přijímá kombinaci více oborů názvů a tabulek. Názvy tabulek by měly obsahovat část oboru názvů, a to i pro tabulky ve výchozím oboru názvů. V opačném případě předpokládá hodnotu oboru názvů. Tento příklad aktivuje chybějící sestavy oblastí pro tabulky table_1 a table_2ve výchozím oboru názvů:

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

Tento příklad aktivuje sestavu chybějících oblastí pro tabulku table_1 pod výchozím oborem názvů a pro všechny tabulky z oboru názvů 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

Vrátí seznam chybějících oblastí pro každou tabulku předanou jako parametr nebo pro každou tabulku v oborech názvů zadaných jako parametr. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <NAMESPACE|NAMESPACE:TABLENAME>jeden na řádek. Příklad:

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

Možnost:

  • -i,--inputFiles: Vezme jeden nebo více vstupních souborů názvů tabulek oboru názvů, které se použijí, když oblasti chybí, hbase:meta ale adresáře jsou stále přítomné v HDFS. Musí hbase:meta být online.

Pro každý název tabulky předaný jako parametr se provádí rozdíl mezi oblastmi dostupnými v hbase:meta HDFS a oblastmi. Poté pro diry bez hbase:meta shody, přečte regioninfo soubor metadat a znovu vytvoří konkrétní oblast v hbase:meta. Oblasti se znovu vytvoří ve stavu CLOSED v hbase:meta tabulce, ale ne v Masters mezipaměti. Ani nejsou přiřazené. Pokud chcete tyto oblasti získat online, spusťte po dokončení tohoto příkazu příkaz HBCK2 assigns vytištěný.

Pokud používáte verze hbase starší než 2.3.0, je před spuštěním sady assigns výstupů potřeba postupné restartování HMasters. Tento příklad přidá chybějící oblasti pro tabulky tbl_1 ve výchozím oboru názvů, tbl_2 v oboru názvů n1a pro všechny tabulky z oboru názvů 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

Vrátí HBCK2 a assigns příkaz se všemi znovu zalomenými oblastmi. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <NAMESPACE|NAMESPACE:TABLENAME>jeden na řádek. Příklad:

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

Volby:

  • -f, --fix: Opraví meta odebráním všech nalezených dalších oblastí.
  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů názvů oborů názvů nebo tabulek.

Hlásí oblasti, na hbase:meta kterých jsou, ale bez souvisejících adresářů v systému souborů. Musí hbase:meta být online. Pro každý název tabulky předaný jako parametr se provádí rozdíl mezi oblastmi dostupnými v hbase:meta jednotlivých oblastech a oblastmi v konkrétním systému souborů. Pokud se tato možnost předala, další oblasti by se z meta odstranily --fix .

Poznámka:

Než se rozhodnete tuto možnost použít --fix , je vhodné zkontrolovat, jestli se nahlášené další oblasti překrývají s existujícími platnými oblastmi. Pokud ano, je extraRegionsInMeta --fix optimálním řešením. assigns Jinak je příkaz jednodušším řešením. Znovu vytvoří rozdíly oblastí v systému souborů, pokud neexistují.

Tento příklad aktivuje sestavy dalších oblastí pro table_1 výchozí obor názvů a pro všechny tabulky z oboru názvů 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

Tento příklad aktivuje sestavy dalších oblastí pro table_1 výchozí obor názvů a pro všechny tabulky z oboru názvů ns1 s možností oprava:

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

Vrátí seznam dalších oblastí pro každou tabulku předanou jako parametr nebo pro každou tabulku v oborech názvů zadaných jako parametr. Pokud -i or --inputFiles je zadán, předejte jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <NAMESPACE|NAMESPACE:TABLENAME>jeden na řádek. Příklad:

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

Poznámka:

Tato možnost nefunguje dobře s HBase 2.1.6. Nedoporučujeme ho používat v clusteru HBase 2.1.6.

Proveďte opravu špatného nebo nekonzistentního stavu na straně serveru v hbase:metasouboru . Hlavní uživatelské rozhraní má odpovídající novou HBCK Report kartu, která vygeneruje sestavy vygenerované posledním spuštěním catalogjanitor a novým hbck chore.

Než provedete jakékoli další opravy, je důležité, aby hbase:meta se nejprve provedlo v pořádku. Řeší a holes overlapsvytváření (prázdných) adresářů oblastí v HDFS tak, aby odpovídaly oblastem přidaných do hbase:meta.

Tento příkaz není stejný jako starý příkaz hbck1 , který má podobný název. Funguje s sestavy vygenerovanými posledními catalog_janitor a hbck chore spuštěními. Pokud není nic, co by bylo potřeba opravit, spuštění je smyčka. V opačném případě, pokud HBCK Report uživatelské rozhraní hlásí problémy, spuštění fixMeta vymaže hbase:meta problémy.

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

generateMissingTableDescriptorFile <NAMESPACE:TABLENAME>

Tento příkaz se pokusí opravit osamocenou tabulku vygenerováním chybějícího souboru popisovače tabulky. Tento příkaz nemá žádný vliv, pokud složka tabulky chybí nebo pokud .tableinfo je k dispozici. (Nepřepíšeme existující popisovače tabulek.) Tento příkaz nejprve zkontroluje, jestli TableDescriptor je uložen v mezipaměti v hlavním serveru HBase, v takovém případě se odpovídajícím způsobem obnoví .tableinfo . Pokud TableDescriptor není uložený v mezipaměti v hlavním serveru, vytvoří výchozí .tableinfo soubor s následujícími položkami:

  • Název tabulky.
  • Seznam rodin sloupců určený na základě systému souborů.
  • Výchozí vlastnosti pro obě TableDescriptor a ColumnFamilyDescriptors. .tableinfo Pokud byl soubor generován pomocí výchozích parametrů, nezapomeňte později zkontrolovat vlastnosti rodiny tabulek nebo sloupců. (V případě potřeby je změňte.) Tato metoda nemění nic v HBase. Zapíše .tableinfo nový soubor pouze do systému souborů. Pokud například ServerCrashProcedures osamocené tabulky chcete zůstat, možná budete muset chybu opravit po vygenerování chybějících souborů s informacemi o tabulce.
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>...]

Volby:

  • -f, --fix: Opraví všechny zjištěné problémy s replikací.
  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů názvů tabulek.

Vyhledá nedeletované fronty replikace a pokud předá --fix možnost, odstraní je. Předá název tabulky, aby se zkontrolovala bariéra replikace a vyprázdnění, pokud --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

Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <TABLENAME>jeden na řádek. Příklad:

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

Možnost:

  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů s názvy a stavy zakódovaných oblastí.

Možné stavy oblastí:

  • OFFLINE
  • OTEVŘENÍ
  • OTEVŘÍT
  • CLOSIN
  • UZAVŘENO
  • ODDĚLOVÁNÍ
  • ROZDĚLIT
  • FAILED_OPEN
  • FAILED_CLOSE
  • SLUČOVÁNÍ
  • SLOUČENÝ
  • SPLITTING_NEW
  • MERGING_NEW
  • ABNORMALLY_CLOSED

Upozorňující

Tato riziková možnost je určená pouze jako poslední možnost.

Mezi ukázkové scénáře patří nepřiřazené nebo přiřazené položky, které se nedají přesunout dopředu, protože oblast je v nekonzistentním stavu .hbase:meta Příkaz může například pokračovat pouze v případě, unassigns že je předán oblasti v jednom z následujících stavů: ROZDĚLENÍ, ROZDĚLENÍ, SLOUČENÍ, OTEVŘENÍ nebo UZAVŘENÍ.

Před ručním nastavením stavu oblasti pomocí tohoto příkazu ověřte, že tato oblast není zpracována spuštěným postupem, například assign split. Spuštění procedur v prostředí hbase můžete zobrazit pomocí list_procedures příkazu. Tento příklad nastaví oblast de00010733901a05f5a2a3a382e27dd4 na CLOSING:

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

Vrátí 0 , pokud se stav oblasti změnil a 1 jinak. Pokud -i or --inputFiles je zadán, předejte jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <ENCODED_REGIONNAME> <STATE>jeden pár na řádek. Příklad:

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

Možnost:

  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů názvů a stavů tabulky.

Možné stavy tabulek jsou POVOLENÉ, ZAKÁZANÉ, ZAKÁZÁNÍ a POVOLENÍ.

Pokud chcete přečíst aktuální stav tabulky, spusťte v prostředí hbase:

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

Hodnota x08x00 == ENABLED, x08x01 == DISABLED atd. Může také běžet describe <TABLENAME> na příkazovém řádku prostředí. V tomto příkladu je povolené uživatelské jméno tabulky:

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

Vrátí jakýkoli předchozí stav tabulky. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <TABLENAME> <STATE>jeden pár na řádek. Příklad:

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

Možnost:

  • -i,--inputFiles: Přebírá jeden nebo více vstupních souborů názvů serverů.

Plán ServerCrashProcedure(SCP) pro seznam .RegionServers Naformátujte název serveru jako <HOSTNAME>,<PORT>,<STARTCODE>. (Viz uživatelské rozhraní/protokoly HBase.)

Tento příklad používá 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

Pokud není vytvořen žádný postup, vrátí identifikátory PID vytvořeného identifikátoru ServerCrashProcedures nebo -1. (Informace o tom, proč to není, najdete v hlavních protokolech.) Podpora příkazů je přidána v HBase verze 2.0.3, 2.1.2, 2.2.0 nebo novější. Pokud -i or --inputFiles je zadaný, předá jeden nebo více vstupních názvů souborů. Každý soubor obsahuje <SERVERNAME>jeden na řádek. Příklad:

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

Řešení problémů

Tato část vám pomůže vyřešit běžné problémy.

Obecné principy

Při opravě se nejprve ujistěte, že hbase:meta je konzistentní, než opravíte jakýkoli jiný typ problému, například odchylku systému souborů. Odchylka v systému souborů nebo problémy s přiřazením by měla být vyřešena po hbase:meta zadání v pořadí. Pokud hbase:meta dojde k problémům, hlavní server nemůže při přijetí osamocených dat systému souborů provést správné umístění nebo přiřazovat oblasti.

Oblast nelze přiřadit, pokud je ve stavu CLOSING (nebo inverzní, nepřiřazená, pokud je ve stavu OTEVŘENÍ) bez prvního přechodu přes UZAVŘENO. Oblasti se musí vždy přesouvat od ZAVŘENÝCH, na OTEVÍRÁNÍ, na OPEN a potom na ZÁVĚR a UZAVŘENO.

Při opravě opravte tabulky po jednom.

Pokud je tabulka zakázaná, nemůžete přiřadit oblast. V hlavních protokolech vidíte, že hlavní sestavy se přeskočily, protože tabulka je zakázaná. Oblast můžete přiřadit, protože je aktuálně ve stavu OTEVŘENÍ a chcete ji v uzavřeném stavu, aby souhlasila se stavem ZAKÁZÁNO tabulky. V takovém případě může být nutné dočasně nastavit stav tabulky na POVOLENO, abyste mohli přiřazení provést. Potom ho znovu nastavíte po příkazu unassign. HBCK2 má zařízení, které vám umožní tuto změnu provést. Podívejte se na výstup využití HBCK2.

Přiřazení a zrušení přiřazení

Obecně platí, že při přiřazování hlavní předloha trvá, dokud nebude úspěšná. Přiřazení převezme výhradní zámek v oblasti. Zámek zabraňuje spuštění souběžného přiřazení nebo zrušení přiřazení. Přiřazení k uzamčené oblasti čeká, dokud se zámek nevolní, než bude pokračovat.

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.

Hlavní server nemůže pokračovat ve spuštění, protože neexistuje žádný postup přiřazení hbase:meta (nebo hbase:namespace). Pokud ho chcete vložit, použijte nástroj HBCK2:

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

V tomto příkladu 1588230740 je kódovaný název hbase:meta oblasti. -skip Předejte možnost zastavení HBCK2 provedení kontroly verze na vzdáleném hlavním serveru. Pokud vzdálený hlavní server není v provozu, zkontroluje Master is initializing response verze výzvu nebo PleaseHoldException zruší pokus o přiřazení. Příkaz -skip se vyhne kontrole verze a přiřadí naplánované přiřazení.

Totéž se může stát v hbase:namespace systémové tabulce. Vyhledejte název zakódované oblasti hbase:namespace oblasti a proveďte podobné kroky jako v hbase:metapřípadě, že jsme to udělali . V tomto druhém případě předloha ve skutečnosti vytiskne užitečnou zprávu, která vypadá jako v tomto příkladu:

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.

Naplánování přiřazení tabulky hbase:namespace uvedené na předchozím řádku protokolu:

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

Předejte kódovaný název oblasti oboru názvů. (Kódovaný název se liší podle nasazení.)

Chybějící oblasti v hbase:meta region/table restore/rebuild

V některých neobvyklých případech byly z tabulky odebrány hbase:meta oblasti tabulek. Třídění těchto případů ukázalo, že byly operátorem vyvolaným. Uživatelé spustili zastaralý nástroj HBCK1 OfflineMetaRepair pro cluster HBCK2. OfflineMetaRepair je známý nástroj pro opravu hbase:meta problémů souvisejících s tabulkami ve verzích HBase 1.x. Původní verze není kompatibilní s HBase 2.x nebo vyššími verzemi a prošla některými úpravami. V extrémních situacích se teď dá spustit přes HBCK2.

Ve většině případů oblasti náhodně chybí hbase:meta , ale hbase může být stále funkční. V takových situacích je možné problém vyřešit pomocí hlavního online addFsRegionsMissingInMeta příkazu v HBCK2. Tento příkaz je méně rušivý na hbase než úplné hbase:meta opětovné sestavení, které je popsáno později. Dá se použít i k obnovení oblasti tabulky oboru názvů.

Další oblasti v hbase:meta region/table restore/rebuild

Můžou se také vyskytovat situace, kdy oblasti tabulek byly odebrány v systému souborů, ale stále mají související položky v hbase:meta tabulce. K tomuto scénáři může dojít kvůli problémům s rozdělením, chybami ruční operace (například ručním odstraněním nebo přesunutím adresáře oblasti) nebo dokonce kvůli problémům se ztrátou metadat, jako je HBASE-21843.

Tyto problémy je možné vyřešit pomocí hlavního online extraRegionsInMeta --fix příkazu v HBCK2. Tento příkaz je méně rušivý na hbase než úplné hbase:meta opětovné sestavení, které je popsáno později. Je také užitečné, když k tomu dojde u verzí, které nepodporují fixMeta možnost HBCK2 (všechny verze starší než 2.0.6, 2.1.6, 2.2.1, 2.3.0 nebo 3.0.0).

Online hbase:meta rebuild recept

Pokud hbase:meta poškození není příliš důležité, hbase ho pořád může přenést do online režimu. I když oblast oboru názvů patří mezi chybějící oblasti, je možné zkontrolovat hbase:meta během inicializačního období, kdy hlavní server čeká na přiřazení oboru názvů. Pokud chcete tuto situaci ověřit, hbase:meta můžete spustit příkaz pro kontrolu. Pokud časový limit nevypadá nebo se nezobrazí žádné chyby, hbase:meta je online:

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

HBCK2 addFsRegionsMissingInMeta se dá použít, pokud se ve zprávě nezobrazí žádné chyby. Čte informace o metadatech oblastí, které jsou k dispozici v adresářích oblastí FS k opětovnému vytvoření oblastí.hbase:meta Protože může běžet s hbase částečně funkční, pokusí se zakázat online tabulky, které jsou ovlivněny nahlášeným problémem, a bude číst oblasti do hbase:meta. Může zkontrolovat konkrétní tabulky nebo obory názvů nebo všechny tabulky ze všech oborů názvů. Tento příklad ukazuje přidání chybějících oblastí pro tabulky tbl_1 ve výchozím oboru názvů, tbl_2 v oboru názvů n1a pro všechny tabulky z oboru názvů 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

Vzhledem k tomu, že funguje nezávisle na hlavním serveru, je po úspěšném dokončení nutné provést další kroky, aby byly přiřazeny přečtené oblasti. Tyto zprávy jsou uvedeny takto:

  • addFsRegionsMissingInMeta vypíše příkaz assigns se všemi oblastmi, které se přečetly. Tento příkaz se musí spustit později, proto ho zkopírujte a uložte pro usnadnění.
  • U verzí HBase starších než 2.3.0 addFsRegionsMissingInMeta po úspěšném dokončení a uložení výstupu restartujte všechny spuštěné předlohy HBase.

Po restartování předloh a hbase:meta je již online (zkontrolujte, jestli je webové uživatelské rozhraní přístupné), spusťte příkaz assigns z addFsRegionsMissingInMeta výstupu uloženého dříve.

Poznámka:

Pokud oblast oboru názvů patří mezi chybějící oblasti, musíte na začátek vráceného příkazu assigns přidat --skip příznak.

Pokud cluster trpí katastrofickou ztrátou hbase:meta tabulky, je možné hrubý opětovné sestavení pomocí následujícího receptu. V osnově zastavíme cluster. Spusťte nástroj HBCK2 OfflineMetaRepair, který čte adresáře a metadata v systému souborů a snaží se co nejlépe rekonstruovat realizovatelnou hbase:met tabulku. Restartujte cluster. Vložením přiřazení přeneste systémovou tabulku oboru názvů do režimu online. Nakonec znovu přiřaďte tabulky uživatelského prostoru, které chcete povolit. (Znovu sestavená hbase:meta tabulka vytvoří tabulku se všemi tabulkami offline a nepřiřazenými oblastmi.)

Podrobný recept na opětovné sestavení

Poznámka:

Tuto možnost použijte pouze jako poslední možnost. Nedoporučujeme ho.

  • Zastavte cluster.

  • Spusťte příkaz rebuild hbase:meta z HBCK2. Tento příkaz se přesune stranou původního hbase:meta a umístí nově znovu sestavený. Tento příklad ukazuje, jak nástroj spustit. Přidá -details příznak tak, aby nástroj vypsá informace o oblastech, které v HDFS našli:

    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
    
  • Spusťte cluster. Nespustí se úplně. Je zablokovaný, protože tabulka oboru názvů není online a v úložišti procedur neexistuje žádný postup přiřazení pro tuto nepředvídání. Tento stav zobrazuje hlavní protokol HBase. Tento příklad ukazuje, co protokoluje:

    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.
    

    Pokud chcete přiřadit oblast tabulky oboru názvů, nemůžete prostředí použít. Pokud používáte prostředí, selže s PleaseHoldException tím, že hlavní server ještě není v provozu. (Čeká se, až se tabulka oboru názvů převrátí do režimu online, než se deklaruje jako "up".) Musíte použít příkaz HBCK2 assigns. K přiřazení potřebujete název zakódovaného oboru názvů. Zobrazuje se v uvozovaném protokolu. To je 725a0fe6c2c869d3d0a9ed82bfa80fa3 v tomto případě. Pokud chcete přeskočit kontrolu hlavní verze, musíte předat -skip příkaz. (Bez toho vyvolá vaše vyvolání HBCK2 vyvolá PleaseHoldException , protože master ještě není.) Tento příklad přidá přiřazení tabulky oboru názvů:

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

    Pokud se vyvolání vrátí Connection refuseds , je mistr vzhůru? Hlavní server se po chvíli vypne, pokud se nemůže inicializovat sám. Restartujte cluster nebo hlavní server a spusťte příkaz assigns znovu.

  • Když se přiřazení úspěšně spustí, uvidíte, že se vygeneruje něco podobného jako v následujícím příkladu. Na 48 konci je PID plánu postupu přiřazení. Pokud je -1vrácený kód PID , hlavní spuštění nepostupuje dostatečně, proto to zkuste znovu. Nebo název zakódované oblasti může být nesprávný, proto zkontrolujte tento problém.

    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]
    
  • Zkontrolujte hlavní protokoly. Pán by měl přijít. Zobrazí se úspěšné dokončení PID=48. Vyhledejte řádek podobný tomuto příkladu a ověřte úspěšné spuštění předlohy:

    master.HMaster: Master has completed initialization 132.515sec
    

    Zobrazení může chvíli trvat.

    Opětovné sestavení hbase:meta přidá uživatelské tabulky ve stavu ZAKÁZÁNO a oblasti v režimu CLOSED. Opětovné povolení tabulek prostřednictvím prostředí, aby se všechny oblasti tabulek vrátily do online režimu. Udělejte to po jednom nebo se podívejte na příkaz enable all ".*", který povolí všechny tabulky najednou.

    Meta opětovného sestavení chybí úpravy a může vyžadovat následné opravy a čištění pomocí zařízení popsaného dříve v tomto článku.

Vyřazené referenční soubory, chybějící soubor hbase.version a poškozené soubory

HBCK2 může zkontrolovat předsazení odkazů a poškozených souborů. Můžete ji požádat, aby se na straně chybných souborů, které můžou být potřeba dostat přes humpsy, kde oblasti nebudou online nebo čtení selhávají. Podívejte se na příkaz systému souborů v seznamu HBCK2. Předejte jeden nebo více názvů tabulek (nebo použijte none ke kontrole všech tabulek). Jsou hlášeny chybné soubory. --fix Předejte možnost provést opravy.

Restartování procedury

Jako poslední možnost platí, že pokud je mistr rozbitý a všechny pokusy o opravu se změní pouze zpětné zámky nebo procedury, které nelze dokončit, nebo pokud je sada MasterProcWALs rozrůstající se bez hranic, je možné vymazat hlavní stav čistý. Přesuňte se do /hbase/MasterProcWALs/ adresáře v rámci instalace HBase a restartujte hlavní proces. Vrátí se jako tabulkový formát bez paměti.

Pokud v době vymazání byly všechny oblasti šťastně přiřazeny nebo offline, měl by hlavní restart pokračovat a pokračovat, jako by se nic nestalo. Pokud se však v době přechodu vyskytly oblasti, musí operátor zasahovat, aby nepřiřadil nebo nepřiřadil svůj koncový bod.

hbase:meta info:state Přečtěte si sloupce podle popisu a určete, co je potřeba přiřadit nebo zrušit přiřazení. Po vymazání veškeré historie přesunutím stranou MasterProcWALs, žádná z entit by neměla být uzamčena, takže můžete volně přiřazovat nebo zrušit přiřazení.