Programmering

10 måter å spørre Hadoop med SQL på

SQL: gammel og busted. Hadoop: ny hethet. Det er den konvensjonelle visdommen, men det store antallet prosjekter som gir en praktisk SQL-frontend på Hadoop-datalagre, viser at det er et reelt behov for produkter som kjører SQL-spørringer mot data som lever i Hadoop i motsetning til bare å bruke Hadoops opprinnelige rapportering eller eksportere Hadoop-data til en konvensjonell database.

MapR produserer en egen Hadoop-distribusjon, og den nyeste utgaven (4.0.1) pakker den med fire forskjellige motorer for spørring av Hadoop-hetteglass SQL. De fire er viktige SQL-spørringssystemer for Hadoop, men langt mer SQL-for-Hadoop-teknologi er der ute, og de er bygget for å tilfredsstille forskjellige behov og brukstilfeller, fra esoterisk til universal.

For det første de fire SQL-motorene som følger med MapR:

Apache Hive: Dette er den opprinnelige SQL-on-Hadoop-løsningen, som prøver å etterligne oppførselen, syntaksen og grensesnittet til MySQL, inkludert en kommandolinjeklient. Den inkluderer også en Java API og JDBC-drivere for de med en eksisterende investering i Java-applikasjoner som gjør MySQL-stil spørring. Til tross for sin relative enkelhet og brukervennlighet, har Hive vært treg og skrivebeskyttet, noe som har provosert en rekke tiltak for å forbedre den.

Stinger: Hortonworks, produsenter av sin egen Hadoop-distribusjon, startet Stinger-prosjektet som en måte å fremme utviklingen av Apache Hive og forbedre ytelsen. Prosjektets siste inkarnasjon, Stinger.next, har "responstid på andre sekund" som et av designmålene, sammen med støtte for transaksjonsatferd (innsatser, oppdateringer og slettinger). Disse endringene skal alle debutere de neste 18 månedene, med andre funksjoner som SQL-analyse å følge.

Apache Drill: En åpen kildekodeimplementering av Googles Dremel (også kalt BigQuery), Drill ble utviklet for å utføre spørring med lav latens på flere typer datalagre samtidig med forskjellige spørregrensesnitt (som Hadoop og NoSQL), og for å være svært skalerbar. Drill hadde også til hensikt å kjøre spørsmål innen et bredt spekter av utførelsestider, som bare varte noen få millisekunder å kjøre i minutter. MapR hevder at Drill er fremtidsrettet, ikke bare bakoverkompatibel, en av grunnene til at den er valgt for å legge sin egen utviklingsinnsats bak dette prosjektet.

Gnist SQL: Apache's Spark-prosjekt er for sanntids, parallellbehandling i minnet av Hadoop-data. Spark SQL bygger på toppen av det for å tillate at SQL-spørsmål skrives mot data. En bedre måte å tenke på det kan være som Apache Hive for Apache Spark, siden det gjenbruker viktige deler av Hive-teknologi. Sånn sett er det et supplement for de som allerede jobber med Spark. (Et tidligere prosjekt, Shark, er inkludert i dette.)

Utover disse fire skiller seks andre seg ut:

Apache Phoenix: Dens utviklere kaller det en "SQL skin for HBase" - en måte å spørre HBase med SQL-lignende kommandoer via en innebygd JDBC-driver bygget for høy ytelse og lese / skrive-operasjoner. Betrakt det som en praktisk idé for de som bruker HBase, takket være at den er åpen kildekode, aggressivt utviklet og utstyrt med nyttige funksjoner som massedatainnlasting.

Cloudera Impala: På noen måter er Impala en annen implementering av Dremel / Apache Drill, designet for å utvide Hive slik at spennende Hive-brukere kan få mest mulig ut av det. Data lagret i enten HDFS eller HBase kan spørres, og SQL-syntaksen er, forutsigbart, den samme som Apache Hive. Men Impalas hovedforskjell fra Drill er at den ikke er ment å være kilde-agnostisk; det spør Hadoop utelukkende.

HAWQ for Pivotal HD: Pivotal gir sin egen Hadoop-distribusjon (Pivotal HD), og HAWQ er en proprietær komponent for å utføre SQL-spørsmål i HDFS. Derfor er det et eneste Pivotal-produkt, selv om Pivotal stubber for sin parallelle SQL-behandling og høy samsvar med SQL-standarder.

Presto: Bygget av Facebooks ingeniører og brukt internt i det selskapet, minner denne open source-søkemotoren om Apache Drill ved at den er kilde-agnostiker. Det kan spørre både Hive og Cassandra ved hjelp av ANSI SQL-kommandoer, og utviklere kan utvide systemet ved å skrive kontakter for det ved å bruke tjenesteleverandørgrensesnittet. Noen datainnsettingsfunksjoner støttes, men de er fortsatt veldig grunnleggende: Du kan ikke utføre oppdateringer, bare innsatser.

Oracle Big Data SQL: Det var bare et spørsmål om tid før Oracle ga ut sin egen SQL-spørrende frontend for Hadoop. I likhet med Drill kan den spørre på både Hadoop og andre NoSQL-butikker. Men i motsetning til Drill er det Oracles eget produkt, og det integreres bare med Oracle Database 12c og oppover, noe som alvorlig begrenser markedet for det.

IBM BigSQL: Det var bare et spørsmål om tid før IBM gjorde det samme, selv om de kunngjorde den første teknologiforhåndsvisning av BigSQL tidlig i 2013. Dessverre, som med Oracles tilbud, er det knyttet til et bestemt IBM-produkt på baksiden - i dette tilfellet , IBMs Hadoop, InfoSphere BigInsights. Når det er sagt, kan frontend være en standard JDBC / ODBC-klient, og spørsmål kan inkludere data fra IBM DB2, Teradata eller PureData Systems for Analytics-forekomster.

$config[zx-auto] not found$config[zx-overlay] not found