Efter en lång period av intensiv ingenjörssatsning och feedback från användare är vi mycket glada och stolta över att tillkännage Cloudera Impala-projektet. Den här tekniken är revolutionerande för Hadoop-användare, och vi tar inte lätt på det påståendet.
När Google publicerade sin Dremel-tidning 2010, inspirerades vi lika mycket som resten av samhället av den tekniska visionen att föra in realtids-, ad hoc-frågemöjligheter till Apache Hadoop, som ett komplement till traditionell MapReduce-batchbearbetning. Idag tillkännager vi en fullt fungerande kodbas med öppen källkod som levererar den visionen – och, tror vi, lite mer – som vi kallar Cloudera Impala. En Impala-binär är nu tillgänglig i offentlig betaform, men om du föredrar att provköra Impala via en förbakad virtuell dator har vi en sådan för dig också. Du kan också granska källkoden och testselen på Github just nu.
Impala höjer ribban för frågeprestanda samtidigt som den behåller en välbekant användarupplevelse. Med Impala kan du söka efter data, oavsett om de lagras i HDFS eller Apache HBase – inklusive SELECT, JOIN och aggregerade funktioner – i realtid. Dessutom använder den samma metadata, SQL-syntax (Hive SQL), ODBC-drivrutin och användargränssnitt (Hue Beeswax) som Apache Hive, vilket ger en välbekant och enhetlig plattform för batch-orienterade eller realtidsfrågor. (Av den anledningen kan Hive-användare använda Impala med lite installationskostnader.) Den första betaversionen inkluderar stöd för textfiler och SequenceFiles; SequenceFiles kan komprimeras som Snappy, GZIP och BZIP (med Snappy rekommenderas för maximal prestanda). Stöd för ytterligare format inklusive Avro, RCFile, LZO-textfiler och kolumnformatet Parquet är planerat för produktionsnedgången.
För att undvika latens, kringgår Impala MapReduce för att direkt komma åt data via en specialiserad distribuerad frågemotor som är mycket lik de som finns i kommersiella parallella RDBMS. Resultatet är en storleksordning snabbare prestanda än Hive, beroende på typ av fråga och konfiguration. (Se FAQ nedan för mer information.) Observera att denna prestandaförbättring har bekräftats av flera stora företag som har testat Impala på verkliga arbetsbelastningar i flera månader nu.
En arkitektonisk vy på hög nivå finns nedan:
Det finns många fördelar med detta tillvägagångssätt jämfört med alternativa metoder för att söka efter Hadoop-data, inklusive:
- Tack vare lokal bearbetning på datanoder undviks nätverksflaskhalsar.
- En enda, öppen och enhetlig metadatalagring kan användas.
- Dyra dataformatkonverteringar är onödiga och därför uppstår inga omkostnader.
- All data är omedelbart sökbar, utan förseningar för ETL.
- All hårdvara används för Impala-frågor såväl som för MapReduce.
- Endast en enda maskinpool behövs för att skala.
Vi uppmuntrar dig att läsa dokumentationen för ytterligare tekniska detaljer.
Slutligen vill vi svara på några frågor som vi förväntar oss kommer att bli populära:
Är Impala öppen källkod?
Ja, Impala är 100 % öppen källkod (Apache-licens). Du kan granska koden själv på Github idag.
Hur skiljer sig Impala från Dremel?
Den första och huvudsakliga skillnaden är att Impala är öppen källkod och tillgänglig för alla att använda, medan Dremel är Googles egendom.
Tekniskt sett uppnår Dremel interaktiva svarstider över mycket stora datamängder genom att använda två tekniker:
- Ett nytt kolumnärt lagringsformat för kapslade relationsdata/data med kapslade strukturer
- Distribuerade skalbara aggregeringsalgoritmer, som gör att resultaten av en fråga kan beräknas parallellt på tusentals maskiner.
Det senare är lånat från tekniker utvecklade för parallella DBMS, vilket också inspirerade skapandet av Impala. Till skillnad från Dremel som beskrivs i 2010 års tidning, som bara kunde hantera enbordsfrågor, stöder Impala redan hela uppsättningen join-operatorer som är en av faktorerna som gör SQL så populär.
För att kunna realisera de fulla prestandafördelarna som Dremel demonstrerar kommer Hadoop inom kort att ha ett effektivt kolumnärt binärt lagringsformat som kallas Parquet. Men till skillnad från Dremel stöder Impala en rad populära filformat. Detta låter användare köra Impala på sin befintliga data utan att behöva "ladda" eller transformera den. Det låter också användare bestämma om de vill optimera för flexibilitet eller bara ren prestanda.
För att sammanfatta det, kommer Impala plus Parquet att uppnå den frågeprestanda som beskrivs i Dremel-tidningen, men överträffa vad som beskrivs där i SQL-funktionalitet.
Hur mycket snabbare är Impala-frågor än Hive-frågor, egentligen?
Den exakta mängden prestandaförbättring är starkt beroende av ett antal faktorer:
- Hårdvarukonfiguration:Impala kan i allmänhet dra full nytta av hårdvaruresurser och genererar specifikt mindre CPU-belastning än Hive, vilket ofta leder till högre observerad sammanlagd I/O-bandbredd än med Hive. Impala kan naturligtvis inte gå snabbare än hårdvaran tillåter, så eventuella hårdvaruflaskhalsar kommer att begränsa den observerade hastigheten. För rent I/O-bundna frågor ser vi vanligtvis prestandaökningar i intervallet 3-4x.
- Frågans komplexitet:Frågor som kräver flera MapReduce-faser i Hive eller kräver reducerade kopplingar på sidan kommer att se en högre hastighet än till exempel enkla aggregeringsfrågor i en tabell. För frågor med minst en koppling har vi prestandaförbättringar på 7-45X.
- Tillgänglighet av huvudminne som cache för tabelldata:Om data som nås via frågan kommer ut ur cachen kommer hastigheten att bli mer dramatisk tack vare Impalas överlägsna effektivitet. I dessa scenarier har vi sett hastigheter på 20x-90x över Hive även på enkla aggregeringsfrågor.
Är Impala en ersättning för MapReduce eller Hive – eller för traditionell datalagerinfrastruktur, för den delen?
Nej. Det kommer även fortsättningsvis att finnas många användbara användningsfall för MapReduce och Hive (till exempel för långvariga datatransformationsarbetsbelastningar) såväl som traditionella datalagerramverk (till exempel för komplexa analyser på begränsade, strukturerade datamängder). Impala är ett komplement till dessa tillvägagångssätt och stödjer användningsfall där användare behöver interagera med mycket stora datamängder, över alla datasilor, för att snabbt få fokuserade resultatuppsättningar.
Har Impala Beta Release några tekniska begränsningar?
Som tidigare nämnts inkluderar filformat som stöds i den första betaversionen textfiler och SequenceFiles, med många andra format som stöds i den kommande produktionsversionen. Dessutom görs för närvarande alla kopplingar i ett minnesutrymme som inte är större än det för den minsta noden i klustret; i produktion kommer kopplingar att göras i aggregerat minne. Slutligen är inga UDF:er möjliga för närvarande.
Vilka är de tekniska kraven för Impala Beta Release?
Du måste ha CDH4.1 installerad på RHEL/CentOS 6.2. Vi rekommenderar starkt att du använder Cloudera Manager (Free eller Enterprise Edition) för att distribuera och hantera Impala eftersom den tar hand om distribuerad distribution och övervakningsdetaljer automatiskt.
Vad är supportpolicyn för Impala Beta Release?
Om du är en befintlig Cloudera-kund med en bugg kan du skaffa en kundsupportbiljett och vi kommer att försöka lösa det på bästa sätt. Om du inte är en befintlig Cloudera-kund kan du använda vår offentliga JIRA-instans eller e-postlistan för impalaanvändare, som kommer att övervakas av Cloudera-anställda.
När kommer Impala att vara allmänt tillgänglig för produktionsanvändning?
En produktionsnedgång är planerad till första kvartalet 2013. Kunder kan få kommersiell support i form av ett Cloudera Enterprise RTQ-abonnemang vid den tidpunkten.
Vi hoppas att du tar tillfället i akt att granska Impala-källkoden, utforska betaversionen, ladda ner och installera den virtuella datorn, eller någon kombination av ovanstående. Din feedback i alla fall uppskattas; vi behöver din hjälp för att göra Impala ännu bättre.
Vi kommer att ge dig ytterligare uppdateringar om Impala när vi närmar oss produktionstillgänglighet. (Uppdatering:Läs om Impala 1.0.)
Impala-resurser:
– Impala-källkod
– Impala-nedladdningar (betaversion och VM)
– Impala-dokumentation
– Offentlig JIRA
– Impala-sändlista
– Gratis Impala träning (skärmsändning)
(Tillagt 2012-10-30) Tredjepartsartiklar om Impala:
– GigaOm: Realtidsfråga för Hadoop demokratiserar åtkomst till big data analys (22 oktober 2012)
– Wired: Man Busts Out of Google, Rebuilds Top-Secret Query Machine (24 oktober 2012)
– InformationWeek: Cloudera debuterar Hadoop-fråga i realtid (24 oktober 2012)
– GigaOm:Cloudera gör SQL till en förstklassig medborgare på Hadoop (24 oktober 2012)
– ZDNet:Clouderas Impala tar Hadoop till SQL och BI (25 oktober 2012)
– Trådbunden:Marcel Kornacker Profile (29 oktober 2012)
– Dr. Dobbs: Cloudera Impala – Processing Petabytes at The Speed Of Tanke (29 okt 2012)
Marcel Kornacker är Impalas arkitekt. Innan han började på Cloudera var han ledande utvecklare för sökmotorn för Googles F1-projekt.
Justin Erickson är produktchef för Impala.