Cloudera Data Platform (CDP) poskytuje předpřipravené řešení, které umožňuje nasazení Apache HBase používat službu Amazon Simple Storage Service (S3) jako hlavní perzistentní vrstvu pro ukládání tabulkových dat. Amazon S3 je obchod s předměty, který nabízí vysoký stupeň odolnosti s nákladovou strukturou pay-per-use. Neexistuje žádná komponenta na straně serveru, kterou by bylo možné spouštět nebo spravovat pro S3 – vše, co je potřeba, je knihovna klienta S3 a přihlašovací údaje AWS. HBase však vyžaduje konzistentní a atomický souborový systém, což znamená, že nemůže přímo používat S3, protože je to nakonec konzistentní úložiště objektů. CDH i HDP poskytly HBase pouze pomocí HDFS, protože existovaly dlouhodobé překážky, které bránily HBase nativně používat S3. Abychom tyto problémy vyřešili, vytvořili jsme hotové řešení, které poprvé dodáváme prostřednictvím CDP. Když spustíte cluster Operational Database (HBase) na CDP, HBase StoreFiles (základní soubory pro tabulky HBase) jsou uloženy v S3 a HBase write-ahead-logs (WAL) jsou uloženy v instanci HDFS, která se obvykle spouští společně s HBase.
Stručně popíšeme každou komponentu, která je součástí této architektury, a roli, kterou každá plní.
Adaptér souborového systému S3A poskytuje Hadoop pro přístup k datům v S3 prostřednictvím standardních API FileSystem. Adaptér S3A umožňuje aplikacím napsaným proti API Hadoop přistupovat k datům v S3 pomocí URI ve tvaru „s3a://my_bucket/“ namísto „hdfs://namenode:8020/“ jako u HDFS. Díky možnosti určit výchozí „souborový systém“, který se má použít, je migrace ve stylu „lift-and-shift“ z vlastních clusterů s HDFS do cloudových clusterů s S3 extrémně jednoduchá. HBase lze nakonfigurovat se základním úložištěm (např. adresář v HDFS nebo S3 bucket) pro všechna aplikační data, což umožňuje HBase fungovat stejně, bez ohledu na to, zda jsou tato data v HDFS nebo S3.
S3Guard je součástí projektu Apache Hadoop, který poskytuje konzistentní výpis adresářů a stav objektu pro adaptér S3A, transparentní pro aplikaci. K dosažení tohoto cíle používá S3Guard konzistentní distribuovanou databázi ke sledování změn provedených v S3 a zaručuje, že klient vždy vidí správný stav z S3. Bez S3Guard nemusí HBase vidět nový StoreFile, který byl přidán do tabulky HBase. Pokud by HBase ani dočasně nepozorovala soubor, mohlo by to způsobit ztrátu dat v HBase. S3guard však neposkytuje vše, co HBase vyžaduje k používání S3.
HBase Object Store Semantics (nebo jen „HBOSS“) je nový softwarový projekt v rámci projektu Apache HBase speciálně vytvořený k překlenutí propasti mezi S3Guard a HBase. HBOSS je fasáda na horní straně adaptéru S3A a S3Guard, která používá distribuovaný zámek, aby bylo zajištěno, že operace HBase mohou atomicky manipulovat s jeho soubory na S3. Jedním příkladem, kdy HBase vyžaduje atomicitu, je přejmenování adresáře. S klientem S3 je přejmenování implementováno jako kopie zdrojových dat do cíle, po kterém následuje odstranění zdrojových dat. Bez uzamčení, které poskytuje HBOSS, může HBase vidět probíhající operaci přejmenování, což by mohlo způsobit ztrátu dat. K dosažení tohoto distribuovaného zamykání používá HBOSS Apache ZooKeeper. Opětovné použití ZooKeeper je záměrné, protože HBase již vyžaduje instanci ZooKeeper, aby bylo zajištěno, že všechny služby HBase fungují společně. Začlenění HBOSS tedy nevyžaduje žádné další zatížení správy služeb a zaplňuje mezeru v tom, co HBase vyžaduje pro použití S3 s S3Guard.
Konfigurace HBase pro použití S3 pro StoreFiles má pro naše uživatele mnoho výhod. Jednou z takových výhod je, že uživatelé mohou oddělit své úložiště a výpočetní techniku. Pokud nastanou situace, kdy není nutný přístup k HBase, lze HBase zcela vypnout a všechny výpočetní zdroje získat zpět, aby se eliminovaly jakékoli náklady na provoz. Když je znovu potřeba přístup k HBase, lze cluster HBase znovu vytvořit a ukazovat na stejná data v S3. Po spuštění se HBase může znovu inicializovat výhradně z dat v S3.
Použití S3 k ukládání HBase StoreFiles má určité problémy. Jedním takovým problémem je zvýšená latence pro náhodné vyhledávání souboru v S3 ve srovnání s HDFS. Zvýšená latence v přístupu S3 by měla za následek, že získávání a skenování HBase trvá déle, než by normálně trvalo s HDFS. Latence S3 se liší od 10 do 100 milisekund ve srovnání s rozsahem 0,1 až 9 milisekund u HDFS. CDP může snížit dopad této latence S3 automatickou konfigurací HBase pro použití BucketCache. S povolenou BucketCache jsou latence S3 zaznamenány pouze při prvním čtení StoreFile z S3. Poté, co HBase načte soubor, pokusí se uložit nezpracovaná data do mezipaměti, aby nahradila pomalé čtení S3 rychlým čtením z místní paměti. Když je cluster HBase spuštěn prostřednictvím CDP, je automaticky nakonfigurován tak, aby ukládal do mezipaměti nedávno přečtená data z S3, aby bylo možné rychleji načítat „horká“ data.
Jsme nesmírně potěšeni, že můžeme našim uživatelům poskytnout tyto nové funkce. Vyzkoušejte HBase běžící na S3 v šabloně Operational Database v CDP ještě dnes!