sql >> Database teknologi >  >> NoSQL >> HBase

Hvordan HBase i CDP kan udnytte Amazons S3

Cloudera Data Platform (CDP) leverer en out-of-the-box løsning, der gør det muligt for Apache HBase-implementeringer at bruge Amazon Simple Storage Service (S3) som sit primære persistenslag til lagring af tabeldata. Amazon S3 er en objektbutik, som tilbyder en høj grad af holdbarhed med en omkostningsstruktur, der betales pr. Der er ingen komponent på serversiden, der skal køres eller administreres for S3 - alt, der kræves, er S3-klientbiblioteket og AWS-legitimationsoplysninger. HBase kræver dog et konsistent og atomært filsystem, hvilket betyder, at det ikke direkte kan bruge S3, fordi det er et efterhånden konsistent objektlager. Både CDH og HDP har kun leveret HBase udelukkende ved hjælp af HDFS, fordi der har været langvarige hindringer, der forhindrede HBase i at bruge S3. For at løse disse problemer har vi bygget en out-of-the-box løsning, som vi leverer for første gang via CDP. Når du starter en Operational Database (HBase)-klynge på CDP, gemmes HBase StoreFiles (backing-filerne til HBase-tabeller) i S3, og HBase Write-ahead-logs (WAL) gemmes i en HDFS-instans, der køres sammen med HBase som sædvanlig.

Vi vil kort beskrive hver komponent, der indgår i denne arkitektur, og den rolle, som hver enkelt udfylder.

S3A-filsystemadapteren leveres af Hadoop for at få adgang til data i S3 via standard FileSystem API'er. S3A-adapteren tillader applikationer, der er skrevet mod Hadoop API'er, at få adgang til data i S3 ved hjælp af en URI på formen "s3a://my_bucket/" i stedet for "hdfs://namenode:8020/", som med HDFS. Muligheden for at angive et standard "filsystem", der skal bruges, gør migreringer i "løft-og-skift"-stil fra on-prem-klynger med HDFS til skybaserede klynger med S3 ekstremt enkle. HBase kan konfigureres med en basislagerplacering (f.eks. en mappe i HDFS eller en S3-bøtte) for alle applikationsdata, hvilket gør det muligt for HBase at fungere på samme måde, uanset om disse data er i HDFS eller S3.

S3Guard er en del af Apache Hadoop-projektet, som giver en ensartet mappeliste og objektstatus for S3A-adapteren, gennemsigtig for applikationen. For at opnå dette bruger S3Guard en konsistent, distribueret database til at spore ændringer foretaget til S3 og garanterer, at en klient altid ser den korrekte tilstand fra S3. Uden S3Guard kan HBase muligvis ikke se en ny StoreFile, som blev tilføjet til en HBase-tabel. Hvis HBase endda midlertidigt ikke observerede en fil, kan dette forårsage datatab i HBase. S3guard leverer dog ikke alt, hvad HBase kræver for at bruge S3.

HBase Object Store Semantics (eller bare "HBOSS") er et nyt softwareprojekt under Apache HBase-projektet, der er specielt bygget til at bygge bro mellem S3Guard og HBase. HBOSS er en facade oven på S3A-adapteren og S3Guard, som bruger en distribueret lås for at sikre, at HBase-operationer kan atomisk manipulere dens filer på S3. Et eksempel, hvor HBase kræver atomicitet, er et biblioteksomdøbning. Med S3-klienten implementeres et omdøbning som en kopi af kildedataene til destinationen efterfulgt af en sletning af kildedataene. Uden den låsning, som HBOSS giver, kan HBase se omdøbningsoperationen i gang, hvilket kan forårsage tab af data. For at opnå denne distribuerede låsning bruger HBOSS Apache ZooKeeper. Genbrug af ZooKeeper er designet, da HBase allerede kræver en ZooKeeper-instans for at sikre, at alle HBase-tjenester fungerer sammen. Derfor kræver inkorporering af HBOSS ingen yderligere serviceadministrationsbyrde og lukker hullet i forhold til, hvad HBase kræver for at bruge S3 med S3Guard.

At konfigurere HBase til at bruge S3 til sine StoreFiles har mange fordele for vores brugere. En sådan fordel er, at brugerne kan afkoble deres lager og computere. Hvis der er tidspunkter, hvor ingen adgang til HBase er nødvendig, kan HBase lukkes ned og alle computerressourcer genvindes for at eliminere driftsomkostninger. Når HBase-adgang er nødvendig igen, kan HBase-klyngen genskabes ved at pege på de samme data i S3. Ved opstart kan HBase geninitialisere sig selv udelukkende fra dataene i S3.

Brug af S3 til at gemme HBase StoreFiles har nogle udfordringer. Et sådant problem er den øgede latenstid for et tilfældigt opslag til en fil i S3 sammenlignet med HDFS. Øget latens i S3-adgang vil resultere i, at en HBase Gets and Scans tager længere tid, end de normalt ville tage med HDFS. S3-forsinkelser varierer fra 10 til 100 millisekunder sammenlignet med 0,1 til 9 millisekunders rækkevidde med HDFS. CDP kan reducere virkningen af ​​denne S3-forsinkelse ved automatisk at konfigurere HBase til at bruge BucketCache. Med BucketCache aktiveret opleves S3-forsinkelser kun første gang, en StoreFile læses ud af S3. Efter at HBase har læst en fil, vil den forsøge at cache de rå data for at erstatte langsomme S3-læsninger med hurtige lokale hukommelseslæsninger. Når en HBase-klynge lanceres via CDP, konfigureres den automatisk til at cache nylig læste data fra S3-hukommelsen for at levere hurtigere læsninger af "varme" data.

Vi er meget glade for at kunne tilbyde vores brugere disse nye muligheder. Prøv HBase, der kører på S3 i Operational Database-skabelonen i CDP i dag!


  1. MongoDB:ubetingede opdateringer?

  2. Hvordan installerer man php-redis-udvidelsen ved hjælp af den officielle PHP Docker-image-tilgang?

  3. Forespørger MongoDB for at matche i det første element i et array

  4. Opbygning af REST API'er ved hjælp af EVE