sql >> Databasteknik >  >> NoSQL >> HBase

Hur HBase i CDP kan utnyttja Amazons S3

Cloudera Data Platform (CDP) tillhandahåller en färdig lösning som gör att Apache HBase-distributioner kan använda Amazon Simple Storage Service (S3) som sitt huvudsakliga beständighetslager för att spara tabelldata. Amazon S3 är en objektbutik som erbjuder en hög grad av hållbarhet med en kostnadsstruktur som betalas per användning. Det finns ingen komponent på serversidan att köra eller hantera för S3 – allt som behövs är S3-klientbiblioteket och AWS-uppgifter. HBase kräver dock ett konsekvent och atomärt filsystem vilket gör att det inte direkt kan använda S3 eftersom det är ett så småningom konsekvent objektlager. Både CDH och HDP har bara tillhandahållit HBase enbart med HDFS eftersom det har funnits långvariga hinder som hindrat HBase från att använda S3. För att lösa dessa problem har vi byggt en färdig lösning som vi levererar för första gången via CDP. När du startar ett Operational Database (HBase)-kluster på CDP, lagras HBase StoreFiles (stödfilerna för HBase-tabeller) i S3 och HBase Write-ahead-logs (WAL) lagras i en HDFS-instans som körs tillsammans med HBase som vanligt.

Vi kommer kortfattat att beskriva varje komponent som ingår i denna arkitektur och vilken roll var och en fyller.

S3A-filsystemsadaptern tillhandahålls av Hadoop för att komma åt data i S3 via standard FileSystem API:er. S3A-adaptern tillåter applikationer skrivna mot Hadoop API:er att komma åt data i S3 med en URI av formen "s3a://my_bucket/" istället för "hdfs://namenode:8020/" som med HDFS. Möjligheten att ange ett standard "filsystem" att använda gör migrering av "lyft-och-skift"-stil från lokala kluster med HDFS till molnbaserade kluster med S3 extremt enkla. HBase kan konfigureras med en baslagringsplats (t.ex. en katalog i HDFS eller en S3-bucket) för all applikationsdata vilket gör att HBase kan fungera likadant, oavsett om dessa data finns i HDFS eller S3.

S3Guard är en del av Apache Hadoop-projektet som ger konsekvent kataloglista och objektstatus för S3A-adaptern, transparent för applikationen. För att åstadkomma detta använder S3Guard en konsekvent, distribuerad databas för att spåra ändringar som gjorts i S3 och garanterar att en klient alltid ser rätt tillstånd från S3. Utan S3Guard kanske HBase inte ser en ny StoreFile som lades till i en HBase-tabell. Om HBase inte ens tillfälligt observerade en fil kan detta orsaka dataförlust i HBase. S3guard tillhandahåller dock inte allt som HBase kräver för att använda S3.

HBase Object Store Semantics (eller bara "HBOSS") är ett nytt mjukvaruprojekt under Apache HBase-projektet speciellt byggt för att överbrygga gapet mellan S3Guard och HBase. HBOSS är en fasad ovanpå S3A-adaptern och S3Guard som använder ett distribuerat lås för att säkerställa att HBase-operationer kan atomiskt manipulera sina filer på S3. Ett exempel där HBase kräver atomicitet är ett katalogbyte. Med S3-klienten implementeras ett byte av namn som en kopia av källdata till destinationen följt av en radering av källdata. Utan låsningen som HBOSS tillhandahåller kan HBase se att byta namnoperation pågår vilket kan orsaka dataförlust. För att åstadkomma denna distribuerade låsning använder HBOSS Apache ZooKeeper. Återanvändning av ZooKeeper är designad eftersom HBase redan kräver en ZooKeeper-instans för att säkerställa att alla HBase-tjänster fungerar tillsammans. Att införliva HBOSS kräver alltså ingen extra börda för tjänstehantering och täpper till gapet för vad HBase kräver för att använda S3 med S3Guard.

Att konfigurera HBase att använda S3 för sina StoreFiles har många fördelar för våra användare. En sådan fördel är att användare kan koppla bort sin lagring och dator. Om det finns tillfällen då ingen åtkomst till HBase är nödvändig, kan HBase stängas av rent och alla beräkningsresurser återvinnas för att eliminera alla driftskostnader. När HBase-åtkomst behövs igen kan HBase-klustret återskapas och pekar på samma data i S3. Vid uppstart kan HBase återinitiera sig själv enbart från data i S3.

Att använda S3 för att lagra HBase StoreFiles har vissa utmaningar. Ett sådant problem är den ökade latensen för en slumpmässig uppslagning av en fil i S3 jämfört med HDFS. Ökad latens i S3-åtkomst skulle resultera i att en HBase Gets and Scans tar längre tid än vad de normalt skulle ta med HDFS. S3-latenserna varierar från 10 till 100-tals millisekunder jämfört med intervallet 0,1 till 9 millisekunder med HDFS. CDP kan minska effekten av denna S3-latens genom att automatiskt konfigurera HBase för att använda BucketCache. Med BucketCache aktiverad upplevs S3-latenser endast första gången en StoreFile läses ut ur S3. Efter att HBase läser en fil kommer den att försöka cachelagra rådata för att ersätta långsamma S3-läsningar med snabba lokala minnesläsningar. När ett HBase-kluster startas via CDP, konfigureras det automatiskt för att cachelagra nyligen lästa data från S3-minnet för att leverera snabbare läsning av "het" data.

Vi är oerhört glada över att kunna erbjuda våra användare dessa nya funktioner. Testa HBase som körs på S3 i Operational Database-mallen i CDP idag!


  1. Hur söker man i redis efter hash-nycklar?

  2. Hur uppdaterar jag delvis ett objekt i MongoDB så att det nya objektet överlappar / smälter samman med det befintliga

  3. Någon som provat MongoDB på Google App Engine?

  4. mongodb 3.4.3 Tillstånd nekad widtiger_kv_engine.cpp 267 fel med ubuntu 16