След дълъг период на интензивни инженерни усилия и обратна връзка от потребителите, ние сме много доволни и горди да обявим проекта Cloudera Impala. Тази технология е революционна за потребителите на Hadoop и ние не приемаме това твърдение лекомислено.
Когато Google публикува своя документ Dremel през 2010 г., ние бяхме вдъхновени като останалата част от общността от техническата визия за предоставяне на възможност за заявки в реално време, ad hoc в Apache Hadoop, допълвайки традиционната пакетна обработка на MapReduce. Днес обявяваме напълно функционална кодова база с отворен код, която предоставя тази визия – и, вярваме, малко повече – която наричаме Cloudera Impala. Двоичен файл Impala вече е достъпен в публична бета форма, но ако предпочитате да тествате Impala чрез предварително изпечена VM, ние имаме един от тях и за вас. Можете също да прегледате изходния код и тестовия ремък в Github точно сега.
Impala вдига летвата за производителност на заявките, като запазва познато потребителско изживяване. С Impala можете да заявявате данни, независимо дали се съхраняват в HDFS или Apache HBase – включително функции SELECT, JOIN и агрегатни функции – в реално време. Освен това, той използва същите метаданни, SQL синтаксис (Hive SQL), ODBC драйвер и потребителски интерфейс (Hue Beeswax) като Apache Hive, осигурявайки позната и унифицирана платформа за групово ориентирани заявки или заявки в реално време. (По тази причина потребителите на Hive могат да използват Impala с малко разходи за настройка.) Първата бета версия включва поддръжка за текстови файлове и SequenceFiles; SequenceFiles могат да бъдат компресирани като Snappy, GZIP и BZIP (като Snappy се препоръчва за максимална производителност). Поддръжката на допълнителни формати, включително Avro, RCFile, текстови файлове LZO и колонен формат за паркет, е планирана за намаляване на производството.
За да избегне забавяне, Impala заобикаля MapReduce за директен достъп до данните чрез специализирана разпределена машина за заявки, която е много подобна на тези, намиращи се в търговските паралелни RDBMS. Резултатът е с порядък по-бърза производителност от Hive, в зависимост от типа на заявката и конфигурацията. (Вижте ЧЗВ по-долу за повече подробности.) Имайте предвид, че това подобрение на производителността е потвърдено от няколко големи компании, които са тествали Impala върху реални натоварвания от няколко месеца.
Архитектурен изглед на високо ниво е по-долу:
Този подход има много предимства пред алтернативните подходи за запитване на данни на Hadoop, включително:
- Благодарение на локалната обработка на възли за данни, тесните места в мрежата се избягват.
- Може да се използва единично, отворено и унифицирано хранилище на метаданни.
- Скъпото преобразуване на формат на данни не е необходимо и по този начин не се налагат допълнителни разходи.
- Всички данни могат да бъдат незабавно заявени, без забавяне за ETL.
- Целият хардуер се използва за заявки за Impala, както и за MapReduce.
- Необходим е само един пул от машини за мащабиране.
Препоръчваме ви да прочетете документацията за допълнителни технически подробности.
И накрая, бихме искали да отговорим на някои въпроси, които очакваме да бъдат популярни:
Импала с отворен код ли е?
Да, Impala е 100% отворен код (Apache License). Можете сами да прегледате кода в Github днес.
По какво се различава Impala от Dremel?
Първата и основна разлика е, че Impala е с отворен код и е достъпна за всички, докато Dremel е собственост на Google.
Технически, Dremel постига интерактивно време за реакция при много големи набори от данни чрез използването на две техники:
- Нов колонен формат за съхранение за вложени релационни данни/данни с вложени структури
- Разпределени скалируеми алгоритми за агрегиране, които позволяват паралелно изчисляване на резултатите от заявка на хиляди машини.
Последното е заимствано от техники, разработени за паралелни СУБД, които също са вдъхновили създаването на Impala. За разлика от Dremel, както е описано в документа от 2010 г., който може да обработва само заявки от една таблица, Impala вече поддържа пълния набор от оператори за присъединяване, които са един от факторите, които правят SQL толкова популярен.
За да реализира пълните предимства на производителността, демонстрирани от Dremel, Hadoop скоро ще има ефективен колонен двоичен формат за съхранение, наречен Parquet. Но за разлика от Dremel, Impala поддържа редица популярни файлови формати. Това позволява на потребителите да изпълняват Impala върху съществуващите си данни, без да се налага да ги „зареждат“ или трансформират. Освен това позволява на потребителите да решат дали искат да оптимизират за гъвкавост или просто за чиста производителност.
За да обобщим, Impala plus Parquet ще постигне ефективността на заявката, описана в статията на Dremel, но ще надмине описаното там във функционалността на SQL.
Наистина колко по-бързи са заявките на Impala от тези на Hive?
Точното подобрение на производителността силно зависи от редица фактори:
- Хардуерна конфигурация:Impala обикновено е в състояние да се възползва напълно от хардуерните ресурси и по-специално генерира по-малко натоварване на процесора от Hive, което често се изразява в по-висока наблюдавана обща I/O честотна лента, отколкото при Hive. Impala, разбира се, не може да работи по-бързо, отколкото позволява хардуерът, така че всякакви хардуерни тесни места ще ограничат наблюдаваното ускоряване. За чисто I/O обвързани заявки обикновено виждаме повишаване на производителността в диапазона от 3-4x.
- Сложност на заявката:Заявките, които изискват множество фази на MapReduce в Hive или изискват обединявания от страната на намаляване, ще получат по-висока скорост, отколкото, да речем, обикновените заявки за агрегиране с една таблица. За заявки с поне едно присъединяване имаме видимо увеличение на производителността от 7-45X.
- Наличност на основна памет като кеш за таблични данни:Ако данните, достъпни чрез заявката, излязат от кеша, ускоряването ще бъде по-драматично благодарение на превъзходната ефективност на Impala. В тези сценарии сме виждали ускорения от 20x-90x над Hive дори при прости заявки за агрегиране.
Импала ли е заместител на MapReduce или Hive – или на традиционната инфраструктура за съхранение на данни, в този смисъл?
Не Ще продължат да съществуват много жизнеспособни случаи на използване за MapReduce и Hive (например за продължителни работни натоварвания за преобразуване на данни), както и традиционни рамки за съхранение на данни (например за сложни анализи на ограничени, структурирани набори от данни). Impala е допълнение към тези подходи, като поддържа случаи на употреба, при които потребителите трябва да взаимодействат с много големи набори от данни във всички силози за данни, за да получат бързо фокусирани набори от резултати.
Има ли технически ограничения Beta версията Impala?
Както беше споменато по-рано, поддържаните файлови формати в първата бета версия включват текстови файлове и SequenceFiles, като много други формати ще се поддържат в предстоящата производствена версия. Освен това, в момента всички обединявания се извършват в пространство на паметта, не по-голямо от това на най-малкия възел в клъстера; в производството, присъединяванията ще се извършват в агрегатната памет. И накрая, в момента не са възможни UDF.
Какви са техническите изисквания за Impala Beta Release?
Ще трябва да имате инсталиран CDH4.1 на RHEL/CentOS 6.2. Силно препоръчваме използването на Cloudera Manager (безплатно или Enterprise Edition) за внедряване и управление на Impala, тъй като той автоматично се грижи за разпределеното внедряване и подробности за наблюдение.
Какви са правилата за поддръжка на Impala Beta Release?
Ако сте съществуващ клиент на Cloudera с бъг, можете да повдигнете билет за поддръжка на клиенти и ние ще се опитаме да го разрешим при най-добри усилия. Ако не сте съществуващ клиент на Cloudera, можете да използвате нашия публичен екземпляр на JIRA или пощенския списък impala-user, който ще се наблюдава от служители на Cloudera.
Кога Impala ще бъде общодостъпна за производствена употреба?
Планира се спад в производството за първото тримесечие на 2013 г. По това време клиентите могат да получат търговска поддръжка под формата на абонамент за Cloudera Enterprise RTQ.
Надяваме се, че ще се възползвате от възможността да прегледате изходния код на Impala, да разгледате бета версията, да изтеглите и инсталирате VM или всяка комбинация от горното. Вашата обратна връзка във всички случаи се оценява; имаме нужда от вашата помощ, за да направим Impala още по-добра.
Ще ви предоставим допълнителни актуализации за Impala, докато се приближаваме до наличността на продукцията. (Актуализация:Прочетете за Impala 1.0.)
Ресурси на Impala:
– Изходен код на Impala
– Изтегляния на Impala (бета версия и VM)
– Документация на Impala
– Публичен JIRA
– списък с имейли на Impala
– Безплатна Impala обучение (Screencast)
(Добавено на 30.10.2012 г.) Статии на трети страни за Impala:
– GigaOm: Заявката в реално време за Hadoop демократизира достъпа до анализи на големи данни (22 октомври 2012 г.)
– Wired: Man Busts Out of Google, Rebuilding Top-Secret Query Machine (24 октомври, 2012)
– InformationWeek: Cloudera дебютира Hadoop заявка в реално време (24 октомври 2012 г.)
– GigaOm:Cloudera прави SQL първокласен гражданин на Hadoop (24 октомври 2012 г.)
– ZDNet:Impala на Cloudera носи Hadoop в SQL и BI (25 октомври 2012 г.)
– Кабелен:Профил на Марсел Корнакер (29 октомври 2012 г.)
– д-р Добс: Cloudera Impala – Обработка на петабайти със скоростта на Мисъл (29 октомври 2012 г.)
Марсел Корнакер е архитектът на Импала. Преди да се присъедини към Cloudera, той беше водещ разработчик на двигателя за заявки на проекта на Google F1.
Джъстин Ериксън е продуктов мениджър за Impala.