2013-06-25 10 views
41

Я хочу провести анализ данных «близкого к реальному времени» (OLAP-like) по данным в HDFS.
Мои исследования показали, что три упомянутые структуры сообщают о значительном выигрыше в производительности по сравнению с Apache Hive. Есть ли у кого-нибудь практический опыт с одним из них? Не только в отношении производительности, но и в отношении стабильности?Fast Hadoop Analytics (Cloudera Impala vs Spark/Shark vs Apache Drill)

ответ

58

Сравнение между Hive и Impala или Spark или Drill иногда звучит неуместно для меня. Цели развития улья и этих инструментов были разными. Hive никогда не разрабатывался для реального времени, в обработке памяти и основан на MapReduce. Он был создан для автономной пакетной обработки. Лучше всего подходит, когда вам нужны длительные рабочие задания, выполняющие тяжелые операции данных, такие как соединения на очень огромных наборах данных.

С другой стороны, эти инструменты были разработаны с учетом содержания real-timeness. Идите к ним, когда вам нужно запросить не очень большие данные, которые могут быть помещены в память в режиме реального времени. Я не говорю, что вы не можете запускать запросы в BigData с помощью этих инструментов, но вы будете настаивать на ограничениях, если вы выполняете запросы в реальном времени на ПБ данных, ИМХО.

Довольно часто вы видели (или читали), что у конкретной компании есть несколько ПБ данных, и они успешно обслуживают потребности своих клиентов в реальном времени. Но на самом деле эти компании не часто запрашивают свои данные. Итак, важно правильное планирование, when to use what. Надеюсь, вы поняли, что я пытаюсь сделать.

Возвращаясь к вашему актуальному вопросу, на мой взгляд, трудно представить разумное сравнение в это время, так как большинство из этих проектов далеки от завершения. Они еще не готовы к производству, если только вы не захотите сделать что-то (или, может быть, много) работы самостоятельно. И для каждого из этих проектов есть определенные цели, которые очень специфичны для этого конкретного проекта.

For example, Impala был разработан с целью использования преимуществ существующей инфраструктуры Hive, чтобы вы не начинали с нуля. Он использует те же метаданные, которые использует Hive. Цель заключалась в том, чтобы запускать запросы в реальном времени поверх существующего склада Hadoop. В то время как Drill был разработан как проект not only Hadoop. И предоставить нам возможности распределенных запросов на нескольких больших платформах данных, включая MongoDB, Cassandra, Riak и Splunk. Shark совместим с Apache Hive, что означает, что вы можете запросить его, используя те же операторы HiveQL, что и через Hive. Разница в том, что Shark может возвращать результаты в 30 раз быстрее, чем те же запросы, что и в Hive.

Impala в настоящее время работает хорошо, а некоторые люди используют его, но я не уверен в этом. 2. Все эти инструменты хороши, но справедливое сравнение может быть сделано только после того, как вы попробуете их на своем данных и ваших потребностей в обработке. Но, по моему опыту, Импала будет лучшим выбором в этот момент. Я не говорю, что другие инструменты не хороши, но они еще недостаточно зрелы. Но если вы хотите использовать его с уже запущенным кластером Hadoop (например, apache Apache), вам, возможно, придется выполнить дополнительную работу, поскольку Impala используется почти всеми как функция CDH.

Примечание: Все эти вещи основаны исключительно на моем опыте. Если вы найдете что-то неправильно или неуместно, сообщите мне об этом. Комментарии и предложения приветствуются. И я надеюсь, что это ответит на некоторые из ваших запросов.

+2

Thx для получения исчерпывающего ответа. Кажется, это подтверждает результаты моих исследований в большинстве случаев. Сейчас я POCing некоторые из моих вариантов использования в Spark, чтобы получить практический опыт.Для меня это выглядит лучше, чем Импала (все научные статьи об этом доступны), а API - чистый и лаконичный. Но мы увидим. Также я сравнивал Hive с системами реального времени, потому что они склонны сравнивать себя с ним друг с другом. Вероятно, чтобы продемонстрировать хорошие показатели производительности .. – user2306380

+0

О, абсолютно .. У вас есть точка :) .. Удачи вам в вашей POC. – Tariq

+1

Одна вещь, о которой нужно помнить - Impala имеет большое ограничение: ваш промежуточный запрос должен соответствовать памяти. Поэтому, если ваша группа по запросу превышает 30 ГБ (например, ваш компьютер), перед применением предложения HAVING, которое эффективно обрезает его до 1 МБ данных, запрос будет терпеть неудачу. Это не относится к другим устройствам MPP, таким как Apache Drill. –