IMHO, SQL на HDFS и SQL на Hadoop - это то же самое. Ведь Hadoop HDFS + MapReduce. Поэтому, когда мы говорим о SQL на HDFS, понимается, что это SQL на Hadoop.
Возвращаясь к актуальному вопросу, Impala обеспечивает более быструю реакцию, так как использует MPP
(массивная параллельная обработка), в отличие от Hive, который использует MapReduce под капотом, что связано с некоторыми начальными накладными расходами (как указал Чарльз сэр). Массовая параллельная обработка - это тип вычислений, который использует много отдельных процессоров, работающих параллельно, для выполнения одной программы, где каждый процессор имеет собственную выделенную память. Сам факт, что Impala, основанный на MPP, не включает накладные расходы на задания MapReduce , а именно: настройка и создание задания, назначение слотов, создание разбиений, создание карт и т. Д., Делает его невероятно быстрым.
Но это не означает, что Impala является решением всех ваших проблем. Будучи интенсивно использующим память (MPP), он не подходит для задач, требующих больших операций с данными, таких как объединения и т. Д., Поскольку вы просто не можете вместить все в память. Здесь Хейв лучше подходит.
Итак, если вам нужно в реальном времени, специальные запросы по подмножеству ваших данных отправляются на Impala. И если у вас есть пакетная обработка, то нужно, чтобы ваши большие данные отправлялись в Hive.
НТН
Спасибо за это объяснение. «Impala не обеспечивает отказоустойчивости по сравнению с Hive», означает ли это, если узел идет во время обработки запроса, тогда он терпит неудачу. У вас был другой сценарий (ы). – techuser
@Integrator Из интервью в мае 2013 года один из менеджеров продуктов в Cloudera подтвердил, что в его текущей реализации, если узел не выполняет средний запрос, этот запрос будет прерван, и пользователю потребуется переиздать этот запрос (http: //www.datanami.com/datanami/2013-05-01/cloudera_releases_impala_into_the_wild.html) –
Благодарим вас за ответ. – techuser