sql >> Databáze >  >> NoSQL >> HBase

Úvod do Apache HBase Snapshots

Aktuální (4.2) verze CDH – 100% open source distribuce Apache Hadoop a souvisejících projektů Cloudera společnosti Cloudera (včetně Apache HBase) – představila novou funkci HBase, která se nedávno objevila v kufru, která umožňuje administrátorovi pořídit snímek zadaného tabulka.

Před CDH 4.2 bylo jediným způsobem zálohování nebo klonování tabulky použití Kopírovat/Exportovat tabulku nebo po deaktivaci tabulky zkopírovat všechny hfiles v HDFS. Copy/Export Table je sada nástrojů, která používá MapReduce ke skenování a kopírování tabulky, ale s přímým dopadem na výkon Region Serveru. Zakázání tabulky zastaví všechna čtení a zápis, což bude téměř vždy nepřijatelné.

Naproti tomu snímky HBase umožňují správci klonovat tabulku bez kopií dat as minimálním dopadem na servery regionů. Export snímku do jiného clusteru přímo neovlivní žádný z regionů; export je pouze distcp s trochou logiky navíc.

Zde je několik případů použití snímků HBase:

  • Obnova po chybách uživatele/aplikace
    • Obnovit/obnovit ze známého bezpečného stavu.
    • Zobrazit předchozí snímky a selektivně začlenit rozdíl do produkce.
    • Uložte snímek těsně před velkým upgradem nebo změnou aplikace.
  • Audit a/nebo podávání zpráv o zobrazeních údajů v konkrétním čase
    • Zaznamenávejte měsíční údaje pro účely dodržování předpisů.
    • Spouštějte přehledy na konci dne/měsíce/čtvrtletí.
  • Testování aplikací
    • Otestujte změny schématu nebo aplikace na datech podobných těm v produkci ze snímku a poté je zahoďte. Například:pořiďte snímek, vytvořte novou tabulku z obsahu snímku (schéma plus data) a manipulujte s novou tabulkou změnou schématu, přidáváním a odebíráním řádků a tak dále. (Původní tabulka, snímek a nová tabulka zůstávají vzájemně nezávislé.)
  • Vykládání práce
    • Pořiďte snímek, exportujte jej do jiného clusteru a spusťte své úlohy MapReduce. Protože snímek exportu funguje na úrovni HDFS, nezpomalíte svůj hlavní cluster HBase tolik jako CopyTable.

Co je to snímek?

Snímek je sada informací o metadatech, která umožňuje správci vrátit se do předchozího stavu tabulky. Snímek není kopií tabulky; je to pouze seznam názvů souborů a nekopíruje data. Úplná obnova snímku znamená, že se vrátíte k předchozímu „schématu tabulky“ a vrátíte se zpět k předchozím datům, ztratíte veškeré změny provedené od pořízení snímku.

Operace

  • Pořídit snímek: Tato operace se pokusí pořídit snímek zadané tabulky. Operace může selhat, pokud se oblasti během vyvažování, rozdělování nebo slučování pohybují.
  • Klonovat snímek: Tato operace vytvoří novou tabulku se stejným schématem a se stejnými daty, která jsou na zadaném snímku. Výsledkem této operace je nová plně funkční tabulka, kterou lze upravovat bez dopadu na původní tabulku nebo snímek.
  • Obnovení snímku: Tato operace vrátí schéma tabulky a data zpět do stavu snímku. (Poznámka:Tato operace zruší všechny změny provedené od pořízení snímku.)
  • Odstranit snímek: Tato operace odebere snímek ze systému a uvolní nesdílené místo na disku, aniž by to ovlivnilo jakékoli klony nebo jiné snímky.
  • Export snímku: Tato operace zkopíruje data snímku a metadata do jiného clusteru. Operace zahrnuje pouze HDFS, takže nedochází k žádné komunikaci s hlavním serverem nebo serverem regionu, a proto může být cluster HBase mimo provoz.

Snímek s nulovou kopií, obnovení, klonování

Hlavní rozdíl mezi snímkem a CopyTable/ExportTable je v tom, že operace snímku zapisují pouze metadata. Nejedná se o rozsáhlé kopie dat.

Jedním z hlavních principů návrhu HBase je, že jakmile je soubor zapsán, nebude již nikdy upraven. Mít neměnné soubory znamená, že snímek pouze sleduje soubory používané v okamžiku operace snímku a během komprimace je odpovědností snímku informovat systém, že soubor by neměl být odstraněn, ale měl by být archivován.

Stejný princip platí pro operaci klonování nebo obnovení. Protože soubory jsou neměnné, vytvoří se nová tabulka pouze s „odkazy“ na soubory, na které snímek odkazuje.

Export Snapshot je jediná operace, která vyžaduje kopii dat, protože druhý cluster nemá datové soubory.

Exportovat snímek vs. Kopírovat/Exportovat tabulku

Kromě lepší konzistence, kterou může snímek poskytnout ve srovnání s úlohou kopírování/exportu, je hlavním rozdílem mezi exportem snímku a kopírováním/exportováním tabulky to, že ExportSnapshot funguje na úrovni HDFS. To znamená, že hlavní a regionální servery nejsou zapojeny do této operace. V důsledku toho se nevytvářejí žádné zbytečné mezipaměti pro data a nedochází ke spouštění dalších GC pauz kvůli počtu objektů vytvořených během procesu kontroly. Dopad na výkon na cluster HBase pramení z mimořádné zátěže sítě a disku, kterou zažívají DataNodes.

HBase Shell:Snapshot Operations

Ověřte, že je podpora snímků zapnutá, tím, že zkontrolujete, zda hbase.snapshot.enabled vlastnost v hbase-site.xml je nastavena na hodnotu true. Chcete-li pořídit snímek zadané tabulky, použijte snapshot příkaz. (Neprovádějí se žádné kopie souborů)

hbase> snapshot ‘tableName’, ‘snapshotName’

Chcete-li zobrazit všechny snímky, použijte list_snapshot příkaz. zobrazí název snímku, zdrojovou tabulku a datum a čas vytvoření.

hbase> list_snapshots
SNAPSHOT               TABLE + CREATION TIME
 TestSnapshot          TestTable (Mon Feb 25 21:13:49 +0000 2013)

Chcete-li snímek odstranit, použijte delete_snapshot příkaz. Odstranění snímku neovlivní klonované tabulky ani další následné pořízené snímky.

hbase> delete_snapshot 'snapshotName'

Chcete-li vytvořit novou tabulku ze zadaného snímku (klonu), použijte clone_snapshot příkaz. Neprovádějí se žádné kopie dat, takže nespotřebujete dvakrát více místa pro stejná data.

hbase> clone_snapshot 'snapshotName', 'newTableName'

Chcete-li nahradit aktuální schéma/data tabulky zadaným obsahem snímku, použijte restore_snapshot  příkaz.

hbase> restore_snapshot 'snapshotName'

Chcete-li exportovat existující snímek do jiného clusteru, použijte ExportSnapshot nářadí. Export nemá vliv na zátěž RegionServers, funguje na úrovni HDFS a musíte zadat umístění HDFS (hbase.rootdir druhého clusteru).

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase

Aktuální omezení

Snímky se spoléhají na některé předpoklady a v současné době existuje několik nástrojů, které nejsou plně integrovány s novou funkcí:

  • Sloučení oblastí, na které snímky odkazují, způsobí ztrátu dat na snímku a na klonovaných tabulkách.
  • Obnovení tabulky se zapnutou replikací pro obnovenou tabulku skončí tím, že dva clustery nebudou synchronizovány. Tabulka není na replice obnovena.

Závěr

V současné době funkce snapshot obsahuje všechny základní požadované funkce, ale zbývá ještě mnoho práce, včetně metrik, integrace webového uživatelského rozhraní, optimalizace využití disku a dalších.

Chcete-li se dozvědět více o tom, jak nakonfigurovat HBase a používat snímky, projděte si dokumentaci.

Matteo Bertozzi je softwarovým inženýrem v týmu Platform a pověřencem HBase.


  1. HDFS Disk Balancer Úvod, operace a funkce

  2. Jak provedu dotaz NOT IN v Mongo?

  3. Redis se v systému Windows 7 nespustí jako služba systému Windows

  4. Přineste si své vlastní účty Azure – Hosting pro MongoDB® &Redis™ na ScaleGrid