sql >> Databasteknik >  >> NoSQL >> HBase

Cloudera Operational Database applikationsutvecklingskoncept

Cloudera Operational Database är nu tillgänglig i tre olika formfaktorer i Cloudera Data Platform (CDP).

Om du är ny på Cloudera Operational Database, se det här blogginlägget. Och kolla in dokumentationen här.

I det här blogginlägget kommer vi att titta på Apache HBase och Apache Phoenix-koncept som är relevanta för att utveckla applikationer för Cloudera Operational Database.

Men först, dessa är de olika formfaktorerna där Cloudera Operational Database är tillgänglig för utvecklare:

Offentligt moln:

  • CDP Data Hub Operational Database-mall 
  • Cloudera Operational Database (COD) erfarenhet som är en hanterad dbPaaS-lösning

På plats:

  • CDP Private Cloud Base

De olika formfaktorerna gör att du kan utveckla applikationer som kan köras på plats, i det offentliga molnet eller bådadera.

Cloudera Operational Database drivs av Apache HBase och Apache Phoenix. I Cloudera Operational Database använder du Apache HBase som ett datalager med HDFS och/eller S3 som tillhandahåller lagringsinfrastrukturen. Du kan välja att antingen utveckla applikationer med en av de inbyggda Apache HBase-applikationerna, eller så kan du använda Apache Phoenix för dataåtkomst. Apache Phoenix är ett SQL-lager som tillhandahåller ett programmatiskt ANSI SQL-gränssnitt. Det fungerar ovanpå Apache HBase, och det gör det möjligt att hantera data med vanliga SQL-frågor. (DML-satserna är inte standard SQL).

Många utvecklare föredrar att använda Structured Query Language (SQL) för att komma åt data som lagras i databasen och Apache Phoenix i Cloudera Operational Database hjälper dig att uppnå detta. Om du är en databasadministratör eller utvecklare kan du börja skriva frågor direkt med Apache Phoenix utan att behöva bråka Java-kod.

För att lagra och komma åt data i driftdatabasen kan du göra något av följande:

Använd inbyggda Apache HBase-klient-API:er för att interagera med data i HBase:

  • Använd HBase API:er för Java
  • Använd HBase REST-servern

Du kan också komma åt dina data med Hue HBase-appen. Denna app är en konsol som du kan använda för att komma åt data som lagras i Apache HBase.

Eller använd Apache Phoenix med en av Apache Phoenix-drivrutinerna för att interagera med data som lagras i Apache HBase:

  • Använd JDBC-drivrutinen för Apache Phoenix
  • Använd ODBC-drivrutinen för Apache Phoenix
  • Använd Python-drivrutinen för Apache Phoenix

Låt oss titta på koncept i Apache HBase och Apache Phoenix som du behöver för din applikationsutveckling.

Namnutrymme

Ett namnområde är en logisk gruppering av tabeller som är analoga med en databas i ett relationsdatabassystem.

Tabell och rader

En eller flera kolumnkvalificerare utgör en rad; en eller flera rader utgör en tabell. Varje rad kan identifieras med en radknapp. När du skriver applikationer kan du komma åt en rad eller en sekvens av rader med den unika radnyckeln.

Kolumnfamiljer

Kolumnfamiljer definierade vid tidpunkten för tabellskapandet baserat på hur de är relaterade till varandra. Kolumnfamiljer kan ha kolumnkvalificerare där värdena kan lagras. Kolumnkvalificerare kallas ibland bara kolumner och är organiserade i kolumnfamiljer. Kolumnfamiljer är placerade tillsammans i förrådet.

Kolumnfamiljer partitionerar data vertikalt. Om du har ett användningsfall där du vill komma åt en uppsättning kolumnkvalificerare, kommer partitionering av kolumnfamiljer att minska antalet lagrade filer att läsa och förbättra läsprestanda. Du måste undvika partitionering om du vill komma åt två eller flera kolumnfamiljer samtidigt.

Komprimering och kodning tillämpas på kolumnfamiljnivå. Du behöver inte deklarera datatyper för varje kolumnfamilj och en kolumnfamilj kan innehålla data av flera datatyper.

Komposition av Apache HBase-tabeller

Apache HBase-tabeller består av en eller flera kolumnfamiljer och kanske uppdelade i flera regioner. Data för varje kolumnfamilj i varje region sparas på flera HF-filer, som finns i HDFS eller objektlagring som S3 och ADLS.

Varje region lagrar raderna inom ett specifikt tangentrymdsområde, det vill säga mellan en startradtangent och en avslutande radtangent. Radnycklar är unika för en region och inga två regioner överlappar varandra. En region betjänas av en RegionServer åt gången, vilket säkerställer konsekvens inom en rad.

För att veta mer om Apache HBase-regionsdelning och sammanslagning, se blogginlägget här:https://blog.cloudera.com/apache-hbase-region-splitting-and-merging/

Apache HBase-datalayout

Apache HBase utmärker sig i användningsfall för Online Transaction Processing (OLTP) eftersom det kan finnas mer än en version av dess grundläggande lagringsenhet som kallas en kolumnkvalificerare (CQ) baserat på en tidsstämpel. Det unika värdet för varje kolumnkvalificeringsversion lagras separat. En kolumnfamilj kan ha hur många celler som helst och de kan vara helt slumpmässiga och ha olika datatyper, nummer och namn i varje rad. Du kan lagra valfritt antal celler i en kolumnfamilj, men observera att kolumnkvalificerare i en kolumnfamilj lagras separat från kolumnkvalificerare i andra kolumnfamiljer.

Om du är intresserad av hur Apache HBase gör Multiversion Concurrency Control (MVCC), kan du läsa detta blogginlägg:https://blogs.apache.org/hbase/entry/apache_hbase_internals_locking_and.

Apache Phoenix-bord

Apache Phoenix-tabeller har ett förhållande 1:1 med en Apache HBase-tabell. Du kan välja att skapa en ny tabell med en Apache Phoenix DDL-sats som CREATE TABLE, eller skapa en vy på en befintlig Apache HBase-tabell med hjälp av VIEW-satsen.

Skapa, släpp eller ändra innehållet i en Apache HBase-tabell med Apache Phoenix DDL-satser. I många fall kan du kanske ändra en Apache Phoenix-tabell direkt med Apache HBase inbyggda API:er. Detta stöds inte i Cloudera Operational Database och kommer att resultera i fel, inkonsekventa index, felaktiga frågeresultat och ibland korrupta data.

Datainmatning

Du kan använda Apache Phoenix SQL-satser för att mata in data i Cloudera Operational Database (COD). COD är också nära integrerat med andra Cloudera Data Platform-tjänster. Du kan se hur du använder några av datainmatningsfunktionerna i följande länkar.

  • Använd Spark eller Hive tillsammans med Apache HBase för att mata in data. Du kan använda HBase-Spark-kontakten. Se även en lista över sätt på vilka du kan importera data till HBase Importera data till HBase.
  • Använd Spark eller Hive tillsammans med Apache Phoenix för att mata in data. Du kan använda kontakterna Phoenix-Spark och Phoenix-Hive. Se, Förstå Apache Phoenix-Spark-kontakten och Förstå Apache Phoenix-Hive-kontakten.
  • Använd Cloudera DataFlow (Apache NiFi) för att mata in data. Se Inmatning av data i Apache HBase i CDP Public Cloud.
  • Använd Cloudera Data Engineering (Spark) för att mata in data. Se Cloudera Operational Database – Cloudera Data Engineering med Phoenix.

Apache Phoenix DML-kommandon

Du kan använda Apache Phoenix DML-kommandon som UPSERT eller DELETE. Se till att DML-kommandona som du vill använda stöds av Apache Phoenix. För mer information se Apache Phoenix grammatikreferens.

Hue användargränssnitt för åtkomst till data

Hue är en webbaserad interaktiv SQL-redigerare som gör att du kan interagera med data som lagras i Cloudera Operational Database. För mer information om hur du använder Hue med Cloudera Operational Database-tjänsten, se Cloudera Operational Database Hue access.

Kör applikationer på Data Hub och COD

Cloudera Operational Database stöder applikationer skrivna på dessa språk som stöds med Apache Phoenix. Du kan också utveckla Apache HBase-applikationer med hjälp av de inbyggda HBase API:erna för Java. Vi kommer att täcka mer om att utveckla applikationer och några exempel på applikationer som du kan använda i de kommande blogginläggen.

Cloudera Operational Database (COD)-upplevelse ger enkel åtkomst till klientanslutningsinformation från användargränssnittet. För mer information, se information om klientanslutning för att kompilera din ansökan mot din COD. För mer information, se Använda Apache Phoenix för att lagra och komma åt data.

I CDP Private Cloud Base kan du hitta denna information från Apache Knox-användargränssnittet om du vill ansluta till Phoenix Query Server (PQS) via Apache Knox, eller använda JDBC-drivrutiner och Phoenix-klient JAR som finns på följande plats i ett kluster nod med en phoenix-gateway-roll /opt/cloudera/parcels/CDH/lib/phoenix.

Slutsats

I nästa inlägg kommer vi att titta på utvecklingsöverväganden och bygga applikationer inklusive exempelapplikationer.

Du kan se några befintliga exempelapplikationer och dokumentation för Cloudera Operational Database i Data Hub och Cloudera Operational Database erfarenhet av dbPaaS-lösning i följande länkar:

  • Översikt över Cloud Operational Database-upplevelse
  • Cloudera Operational Database snabbstart
  • Komma igång med mall för Operational Database Data Hub
  • Bygga en maskininlärningsapplikation med Cloudera Data Science Workbench och operativ databas

  1. Förstå MongoDB-index

  2. Redis aktiv-aktiv replikering

  3. Lagra null kontra att inte lagra nyckeln alls i MongoDB

  4. Hur kan jag lista alla samlingar i MongoDB-skalet?