Efter en lang periode med intens ingeniørindsats og brugerfeedback er vi meget glade og stolte over at kunne annoncere Cloudera Impala-projektet. Denne teknologi er revolutionerende for Hadoop-brugere, og vi tager ikke let på den påstand.
Da Google udgav sin Dremel-artikel i 2010, var vi lige så inspirerede som resten af fællesskabet af den tekniske vision om at bringe real-time, ad hoc-forespørgselskapacitet til Apache Hadoop, som komplementerer traditionel MapReduce batchbehandling. I dag annoncerer vi en fuldt funktionel, open source-kodebase, der leverer den vision – og, tror vi, lidt mere – som vi kalder Cloudera Impala. En Impala binær er nu tilgængelig i offentlig betaform, men hvis du foretrækker at prøvekøre Impala via en færdigbagt VM, har vi også en af dem til dig. Du kan også gennemgå kildekoden og testselen på Github lige nu.
Impala hæver barren for forespørgselsydeevne, mens den bevarer en velkendt brugeroplevelse. Med Impala kan du forespørge data, uanset om de er lagret i HDFS eller Apache HBase – inklusive SELECT, JOIN og aggregerede funktioner – i realtid. Desuden bruger den de samme metadata, SQL-syntaks (Hive SQL), ODBC-driver og brugergrænseflade (Hue Beeswax) som Apache Hive, hvilket giver en velkendt og samlet platform til batch-orienterede eller realtidsforespørgsler. (Af den grund kan Hive-brugere bruge Impala med lidt opsætningsomkostninger.) Den første beta-drop inkluderer understøttelse af tekstfiler og SequenceFiles; SequenceFiles kan komprimeres som Snappy, GZIP og BZIP (med Snappy anbefales for maksimal ydeevne). Understøttelse af yderligere formater, herunder Avro, RCFile, LZO-tekstfiler og Parquet-søjleformatet er planlagt til produktionsnedlæggelsen.
For at undgå latency omgår Impala MapReduce for at få direkte adgang til dataene gennem en specialiseret distribueret forespørgselsmotor, der ligner meget dem, der findes i kommercielle parallelle RDBMS'er. Resultatet er en hurtigere ydeevne i en størrelsesorden end Hive, afhængigt af typen af forespørgsel og konfiguration. (Se ofte stillede spørgsmål nedenfor for flere detaljer.) Bemærk, at denne præstationsforbedring er blevet bekræftet af adskillige store virksomheder, som har testet Impala på den virkelige verden i flere måneder nu.
En arkitektonisk visning på højt niveau er nedenfor:
Der er mange fordele ved denne tilgang i forhold til alternative tilgange til at forespørge Hadoop-data, herunder:
- Takket være lokal behandling på dataknudepunkter undgås netværksflaskehalse.
- Et enkelt, åbent og samlet metadatalager kan bruges.
- Dyst dataformatkonvertering er unødvendig, og der påløber derfor ingen overhead.
- Alle data kan umiddelbart forespørges uden forsinkelser for ETL.
- Al hardware bruges til Impala-forespørgsler såvel som til MapReduce.
- Kun en enkelt maskinpulje er nødvendig for at skalere.
Vi opfordrer dig til at læse dokumentationen for yderligere tekniske detaljer.
Til sidst vil vi gerne svare på nogle spørgsmål, som vi forventer vil være populære:
Er Impala open source?
Ja, Impala er 100 % open source (Apache-licens). Du kan selv gennemgå koden på Github i dag.
Hvordan er Impala anderledes end Dremel?
Den første og væsentligste forskel er, at Impala er open source og tilgængelig for alle at bruge, mens Dremel er proprietær til Google.
Teknisk set opnår Dremel interaktive svartider over meget store datasæt ved brug af to teknikker:
- Et nyt søjleformet lagerformat til indlejrede relationelle data/data med indlejrede strukturer
- Distribuerede skalerbare aggregeringsalgoritmer, som gør det muligt at beregne resultaterne af en forespørgsel på tusindvis af maskiner parallelt.
Sidstnævnte er lånt fra teknikker udviklet til parallelle DBMS'er, som også inspirerede til skabelsen af Impala. I modsætning til Dremel som beskrevet i 2010-avisen, som kun kunne håndtere enkelttabel-forespørgsler, understøtter Impala allerede det fulde sæt af join-operatorer, som er en af de faktorer, der gør SQL så populær.
For at realisere de fulde ydeevnefordele, som Dremel har demonstreret, vil Hadoop om kort tid have et effektivt søjleformet binært lagringsformat kaldet Parquet. Men i modsætning til Dremel understøtter Impala en række populære filformater. Dette lader brugere køre Impala på deres eksisterende data uden at skulle "indlæse" eller transformere dem. Det lader også brugere beslutte, om de vil optimere for fleksibilitet eller blot ren ydeevne.
For at opsummere det, vil Impala plus Parquet opnå den forespørgselsydeevne, der er beskrevet i Dremel-avisen, men overgå, hvad der er beskrevet der i SQL-funktionalitet.
Hvor meget hurtigere er Impala-forespørgsler end Hive-forespørgsler, egentlig?
Den præcise mængde af præstationsforbedringer afhænger i høj grad af en række faktorer:
- Hardwarekonfiguration:Impala er generelt i stand til at drage fuld fordel af hardwareressourcer og genererer specifikt mindre CPU-belastning end Hive, hvilket ofte udmønter sig i højere observeret aggregeret I/O-båndbredde end med Hive. Impala kan selvfølgelig ikke gå hurtigere end hardwaren tillader, så eventuelle hardwareflaskehalse vil begrænse den observerede speedup. For rent I/O-bundne forespørgsler ser vi typisk præstationsgevinster i området 3-4x.
- Kompleksiteten af forespørgslen:Forespørgsler, der kræver flere MapReduce-faser i Hive eller kræver reducer-side joins, vil se en højere hastighed end f.eks. simple enkelttabel-aggregeringsforespørgsler. For forespørgsler med mindst én joinforbindelse har vi tilsyneladende ydeevnegevinster på 7-45X.
- Tilgængelighed af hovedhukommelse som en cache for tabeldata:Hvis de data, der tilgås via forespørgslen, kommer ud af cachen, vil hastigheden være mere dramatisk takket være Impalas overlegne effektivitet. I disse scenarier har vi set hastighedsstigninger på 20x-90x over Hive selv ved simple aggregeringsforespørgsler.
Er Impala en erstatning for MapReduce eller Hive – eller for traditionel datavarehusinfrastruktur, for den sags skyld?
Nej. Der vil fortsat være mange levedygtige use cases for MapReduce og Hive (f.eks. til langvarige datatransformationsarbejdsbelastninger) såvel som traditionelle datavarehusrammer (for eksempel til komplekse analyser på begrænsede, strukturerede datasæt). Impala er et supplement til disse tilgange og understøtter brugssager, hvor brugere skal interagere med meget store datasæt på tværs af alle datasiloer for hurtigt at få fokuserede resultatsæt.
Har Impala Beta-udgivelsen nogen tekniske begrænsninger?
Som tidligere nævnt inkluderer understøttede filformater i den første beta-drop tekstfiler og SequenceFiles, med mange andre formater, der skal understøttes i den kommende produktionsudgivelse. Desuden udføres alle joinforbindelser i øjeblikket i et hukommelsesrum, der ikke er større end det mindste knudepunkt i klyngen; i produktionen vil joins blive udført i aggregeret hukommelse. Endelig er ingen UDF'er mulige på nuværende tidspunkt.
Hvad er de tekniske krav til Impala Beta-udgivelsen?
Du skal have CDH4.1 installeret på RHEL/CentOS 6.2. Vi anbefaler stærkt brugen af Cloudera Manager (Free eller Enterprise Edition) til at implementere og administrere Impala, fordi det tager sig af distribueret implementering og overvågningsdetaljer automatisk.
Hvad er supportpolitikken for Impala Beta-udgivelsen?
Hvis du er en eksisterende Cloudera-kunde med en fejl, kan du rejse en kundesupportbillet, og vi vil forsøge at løse det efter bedste evne. Hvis du ikke er en eksisterende Cloudera-kunde, kan du bruge vores offentlige JIRA-instans eller impala-bruger-mailinglisten, som vil blive overvåget af Cloudera-medarbejdere.
Hvornår vil Impala være generelt tilgængelig til produktionsbrug?
Der er planlagt et produktionsfald i første kvartal af 2013. Kunder kan få kommerciel support i form af et Cloudera Enterprise RTQ-abonnement på det tidspunkt.
Vi håber, at du benytter lejligheden til at gennemgå Impala-kildekoden, udforske betaudgivelsen, downloade og installere VM'en eller en hvilken som helst kombination af ovenstående. Din feedback i alle tilfælde er værdsat; vi har brug for din hjælp til at gøre Impala endnu bedre.
Vi vil bringe dig yderligere opdateringer om Impala, når vi kommer tættere på produktionstilgængelighed. (Opdatering:Læs om Impala 1.0.)
Impala-ressourcer:
– Impala-kildekode
– Impala-downloads (betaversion og VM)
– Impala-dokumentation
– Offentlig JIRA
– Impala-mailingliste
– Gratis Impala træning (Screencast)
(Tilføjet 30/10/2012) Tredjepartsartikler om Impala:
– GigaOm: Realtidsforespørgsel til Hadoop demokratiserer adgang til big data analyse (22. okt. 2012)
– Wired: Man Busts Out of Google, Rebuilds Top-Secret Query Machine (24. okt. 2012)
– InformationWeek: Cloudera debuterer Hadoop-forespørgsel i realtid (24. okt. 2012)
– GigaOm:Cloudera gør SQL til en førsteklasses borger på Hadoop (24. oktober 2012)
– ZDNet:Clouderas Impala bringer Hadoop til SQL og BI (25. oktober 2012)
– Kablet:Marcel Kornacker Profile (29. oktober 2012)
– Dr. Dobbs: Cloudera Impala – Processing Petabytes at The Speed Of Tanke (29. oktober 2012)
Marcel Kornacker er Impalas arkitekt. Før han kom til Cloudera, var han hovedudvikler for forespørgselsmotoren til Googles F1-projekt.
Justin Erickson er produktchef for Impala.