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

Jak škálování skutečně funguje v Apache HBase

Tento příspěvek byl původně publikován prostřednictvím blogs.apache.org, pro vaše pohodlí jej zde znovu publikujeme v mírně upravené podobě:

Na první pohled se zdá, že architektura Apache HBase sleduje model master/slave, kde master přijímá všechny požadavky, ale skutečnou práci dělají slave. Ve skutečnosti tomu tak není a v tomto článku popíši, jaké úkoly ve skutečnosti řeší master a slave.

Regiony a regionální servery

HBase je správce úložiště Hadoop, který poskytuje náhodné čtení a zápisy s nízkou latencí nad HDFS a dokáže zpracovat petabajty dat. Jednou ze zajímavých funkcí v HBase je automatické sharding, což jednoduše znamená, že tabulky jsou dynamicky distribuovány systémem, když jsou příliš velké.

Základní jednotka horizontální škálovatelnosti v HBase se nazývá Region . Oblasti jsou podmnožinou dat tabulky a jsou v podstatě souvislým, seřazeným rozsahem řádků, které jsou uloženy společně.

Zpočátku existuje pouze jedna oblast pro stůl. Jak je znázorněno níže, když se oblasti po přidání dalších řádků příliš zvětší, oblast se prostředním tlačítkem rozdělí na dvě, čímž se vytvoří dvě zhruba stejné poloviny.

V HBase se podřízené jednotky nazývají Region Servers . Každý regionový server je zodpovědný za obsluhu sady regionů a jeden region (tj. rozsah řádků) může obsluhovat pouze jeden regionový server.

Architektura HBase má dvě hlavní služby:HMaster který je zodpovědný za koordinaci clusteru a provádění administrativních operací a HRegionServer zodpovědný za zpracování podmnožiny dat tabulky.

HMaster, Region Assignment a Balancing

Jak již bylo zmíněno, HBase Master koordinuje HBase Cluster a je zodpovědný za administrativní operace.

Region Server může obsluhovat jednu nebo více oblastí. Každá oblast je při spuštění přiřazena k serveru oblasti a hlavní server se může rozhodnout přesunout oblast z jednoho regionálního serveru na jiný v důsledku operace vyrovnání zatížení. Hlavní server také řeší selhání Region Serveru přiřazením regionu k jinému Region Serveru.

Mapování regionů a serverů regionů je uchováváno v systémové tabulce nazvané META. Přečtením META můžete zjistit, který region je zodpovědný za váš klíč. To znamená, že pro operace čtení a zápisu není hlavní server vůbec zapojen a klienti mohou přejít přímo na regionální server odpovědný za poskytování požadovaných dat.

Nalezení klíče řádku:Který regionální server je odpovědný?

Aby klienti vložili nebo získali řádek, nemusejí kontaktovat hlavního serveru, mohou se klienti obrátit přímo na server regionu, který zpracovává zadaný řádek, nebo v případě skenování klienta mohou přímo kontaktovat skupinu serverů regionů odpovědných za zpracování sady. klíčů:

K identifikaci Region Serveru provede klient dotaz na META tabulku.

META je systémová tabulka používaná ke sledování regionů. Obsahuje název serveru a identifikátor oblasti obsahující název tabulky a klíč počátečního řádku. Při pohledu na startovací klíč a klíč start dalšího regionu jsou klienti schopni identifikovat rozsah řádků obsažených v konkrétní oblasti.

Klient uchovává mezipaměť pro umístění v regionu. Tím se zabrání tomu, aby se klienti dostali do tabulky META pokaždé, když je provedena operace ve stejné oblasti. V případě rozdělení regionu nebo přesunu na jiný Region Server (kvůli vyvažování nebo zásadám přiřazení) klient obdrží výjimku jako odpověď a mezipaměť bude obnovena načtením aktualizovaných informací z tabulky META:

Protože META je tabulka jako ostatní, klient musí identifikovat, na kterém serveru se META nachází. Místa META jsou uložena v uzlu ZooKeeper při přiřazení Masterem a klient čte přímo uzel, aby získal adresu Region Serveru, který obsahuje META.

Původní návrh HBase byl založen na BigTable, s další tabulkou nazvanou -ROOT- obsahující META umístění a Apache ZooKeeper, který na ni ukazuje. HBase 0.96 odstranilo toto uspořádání pouze ve prospěch ZooKeeper, protože META nelze rozdělit, a proto se skládá z jedné oblasti.

Client API:Master and Regions Responsibilities

Klientské API HBase Java má dvě hlavní rozhraní:

  • HBaseAdmin umožňuje interakci se „schématem tabulky“ vytvářením/mazáním/úpravou tabulek a umožňuje interakci s klastrem přiřazování/rušením přiřazení oblastí, slučováním oblastí dohromady, voláním po vyprázdnění a tak dále. Toto rozhraní komunikuje s Master.
  • HTable umožňuje klientovi manipulovat s daty zadané tabulky pomocí get, put, delete a všech dalších datových operací. Toto rozhraní komunikuje přímo s regionálními servery odpovědnými za zpracování požadované sady klíčů.

Tato dvě rozhraní mají samostatné odpovědnosti:HBaseAdmin se používá pouze k provádění operací správce a komunikaci s Master, zatímco HTable se používá k manipulaci s daty a komunikaci s regiony.

Závěr

Jak jsme zde viděli, architektura Master/Slave neznamená, že každá operace prochází masterem. Aby mohl číst a zapisovat data, klient HBase ve skutečnosti přejde přímo na konkrétní oblastní server, který je zodpovědný za zpracování klíčů řádků pro všechny operace s daty (HTable). Master používá klient pouze pro operace vytváření, úpravy a mazání tabulek (HBaseAdmin).

Přestože koncept Master existuje, klient HBase na něm není závislý pro datové operace a klastr může poskytovat data, i když hlavní server vypadne.

Matteo Bertozzi je softwarový inženýr v týmu Platform a HBase Committer.

Pokud vás HBase zajímá, nezapomeňte se zaregistrovat na HBaseCon 2013 (13. června, San Francisco) – komunitní událost pro přispěvatele, vývojáře, administrátory a uživatele HBase. Kapacita je omezená!


  1. MongoDB mongorestore a stávající kolekce se záznamy

  2. MongoDB, odeberte objekt z pole

  3. Zamykání a Redis

  4. Stav relace s mezipamětí Azure Redis nefunguje na více instancích