Programmering

10 måder at forespørge Hadoop med SQL på

SQL: gammel og busted. Hadoop: ny hotness. Det er den konventionelle visdom, men det store antal projekter, der lægger en bekvem SQL-frontend på Hadoop-datalagre, viser, at der er et reelt behov for produkter, der kører SQL-forespørgsler mod data, der lever inde i Hadoop i modsætning til blot at bruge Hadoops indberetning eller eksportere Hadoop-data til en konventionel database.

MapR producerer en egen Hadoop-distribution, og den nyeste udgave (4.0.1) bundter den med fire forskellige motorer til forespørgsel på Hadoop-hætteglas SQL. De fire er vigtige SQL-forespørgselssystemer til Hadoop, men langt mere SQL-for-Hadoop-teknologi er derude, og de er bygget til at tilfredsstille forskellige behov og brugssager, fra det esoteriske til det universelle.

For det første de fire SQL-motorer, der følger med MapR:

Apache Hive: Dette er den originale SQL-on-Hadoop-løsning, der forsøger at efterligne MySQL's opførsel, syntaks og grænseflade (r), inklusive en kommandolinjeklient. Det inkluderer også en Java API og JDBC-drivere til dem med en eksisterende investering i Java-applikationer, der foretager MySQL-stil forespørgsel. På trods af sin relative enkelhed og brugervenlighed har Hive været langsom og skrivebeskyttet, hvilket har provokeret en række initiativer til at forbedre det.

Stinger: Hortonworks, producenter af sin egen Hadoop-distribution, startede Stinger-projektet som en måde at fremme udviklingen af ​​Apache Hive og forbedre dens ydeevne. Projektets seneste inkarnation, Stinger.next, har "responstid for forespørgsler på under sekund" som et af sine designmål sammen med understøttelse af transaktionsadfærd (indsatser, opdateringer og sletninger). Disse ændringer skal alle debutere i løbet af de næste 18 måneder med andre funktioner som SQL-analyse at følge.

Apache Drill: En open source-implementering af Googles Dremel (også kendt som BigQuery), Drill blev udviklet til at udføre forespørgsler med lav latens på flere typer datalagre på én gang med forskellige forespørgselsgrænseflader (såsom Hadoop og NoSQL) og være meget skalerbare. Drill var også beregnet til at køre forespørgsler inden for en bred vifte af udførelsestider, der kun varede et par millisekunder til at køre i minutter i træk. MapR hævder, at Drill er fremadrettet, ikke blot bagudkompatibel, en af ​​grundene til, at det er valgt at lægge sin egen udviklingsindsats bag dette projekt.

Gnist SQL: Apache's Spark-projekt er til real-time parallelhåndtering i hukommelse af Hadoop-data. Spark SQL bygger oven på det for at tillade, at SQL-forespørgsler skrives mod data. En bedre måde at tænke på det kan være som Apache Hive for Apache Spark, da det genbruger vigtige dele af Hive-teknologi. I den forstand er det et supplement til dem, der allerede arbejder med Spark. (Et tidligere projekt, Shark, er blevet underlagt dette.)

Ud over disse fire skiller sig seks andre ud:

Apache Phoenix: Dens udviklere kalder det en "SQL skin for HBase" - en måde at forespørge på HBase med SQL-lignende kommandoer via en indlejret JDBC-driver bygget til høj ydeevne og læse / skrive-operationer. Overvej det næsten ikke brainer for dem, der bruger HBase, takket være open source, aggressivt udviklet og udstyret med nyttige funktioner som bulk dataindlæsning.

Cloudera Impala: På nogle måder er Impala en anden implementering af Dremel / Apache Drill, designet til at udvide på Hive, så spændende Hive-brugere kan få mest muligt ud af det. Data gemt i enten HDFS eller HBase kan spørges, og SQL-syntaksen er forudsigeligt den samme som Apache Hive. Men Impalas største forskel fra Drill er, at det ikke er meningen, at det skal være kilde-agnostisk; det spørger udelukkende til Hadoop.

HAWQ til Pivotal HD: Pivotal leverer sin egen Hadoop-distribution (Pivotal HD), og HAWQ er en proprietær komponent til udførelse af SQL-forespørgsler i HDFS. Derfor er det et kun Pivotal-produkt, selvom Pivotal stumper for sin parallelle SQL-behandling og overholdelse af SQL-standarder.

Presto: Bygget af Facebooks ingeniører og brugt internt i det firma, minder denne open source-forespørgselsmotor om Apache Drill, fordi den er kilde-agnostiker. Det kan forespørge både Hive og Cassandra ved hjælp af ANSI SQL-kommandoer, og udviklere kan udvide systemet ved at skrive stik til det ved hjælp af dets tjenesteudbydergrænseflade. Nogle dataindsættelsesfunktioner understøttes, men de er stadig meget grundlæggende: Du kan ikke udføre opdateringer, kun indsatser.

Oracle Big Data SQL: Det var kun et spørgsmål om tid, før Oracle frigav sin egen SQL-forespørgsel til Hadoop. Ligesom Drill kan den forespørge både Hadoop og andre NoSQL-butikker. Men i modsætning til Drill er det Oracles eget produkt, og det integreres kun med Oracle Database 12c og op, hvilket alvorligt begrænser markedet for det.

IBM BigSQL: Det var kun et spørgsmål om tid, før IBM gjorde det samme, selvom det annoncerede den første teknologivisning af BigSQL tilbage i begyndelsen af ​​2013. Desværre, som med Oracles tilbud, er det bundet til et specifikt IBM-produkt på bagsiden - i dette tilfælde , IBMs Hadoop, InfoSphere BigInsights. Når det er sagt, kan frontend være en standard JDBC / ODBC-klient, og forespørgsler kan omfatte data fra IBM DB2, Teradata eller PureData Systems til Analytics-forekomster.