W jaki sposób impala zapewnia szybszą odpowiedź na zapytania w porównaniu do hive

Ostatnio zacząłem szukać odpytywania dużych zbiorów danych CSV leżących na HDFS za pomocą Hive i Impala. Tak jak się spodziewałem, uzyskuję lepszy czas odpowiedzi z Impala w porównaniu do Hive dla zapytań, z których korzystałem do tej pory.

Zastanawiam się, czy są jakieś rodzaje zapytań/przypadków użycia, które nadal wymagają Hive i gdzie Impala nie pasuje.

Jak Impala zapewnia szybszą odpowiedź na zapytania w porównaniu do Hive dla tych samych danych na HDFS?

Author: Matthew Murdoch, 2013-05-26

3 answers

Powinieneś zobaczyć Impalę jako "SQL na HDFS" , podczas gdy Hive jest bardziej "SQL na Hadoop".

Innymi słowy, Impala w ogóle nie używa Hadoop. Po prostu ma demony uruchomione na wszystkich węzłach, które buforują niektóre dane, które są w HDFS, dzięki czemu demony te mogą szybko zwracać dane bez konieczności przechodzenia przez całe zadanie Map/Reduce.

Powodem tego jest to, że istnieje pewien narzut związany z uruchomieniem zadania Map / Reduce, więc przez zwarcie mapy / Reduce całkowicie może uzyskać całkiem duży zysk w czasie wykonywania.

To powiedziawszy, Impala nie zastępuje Hive, jest dobra do bardzo różnych przypadków użycia. Impala nie zapewnia tolerancji błędów w porównaniu do Hive, więc jeśli wystąpi problem podczas Twojego zapytania, To Go nie ma. Zdecydowanie do zadań typu ETL, w których niepowodzenie jednej pracy byłoby kosztowne, polecam Hive, ale Impala może być świetna dla małych zapytań ad-hoc, na przykład dla analityków danych lub analityków biznesowych, którzy chcą po prostu rzucić okiem i analizuj niektóre dane bez tworzenia solidnych zadań. Również z mojego osobistego doświadczenia, Impala nadal nie jest zbyt dojrzała i widziałem pewne awarie czasami, gdy ilość danych jest większa niż dostępna pamięć.

 98
Author: Charles Menguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-26 03:34:07

IMHO, SQL na HDFS i SQL na Hadoop są takie same. W końcu Hadoop to HDFS (a także MapReduce). Więc kiedy mówimy SQL na HDFS, rozumie się, że jest to SQL na Hadoop (może być z MapReduce lub bez niego).

Wracając do faktycznego pytania, Impala zapewnia szybszą odpowiedź, ponieważ używa MPP (massively parallel processing) w przeciwieństwie do Hive, który używa MapReduce pod maską, co wiąże się z pewnymi początkowymi kosztami (jak określił Charles sir). Przetwarzanie masowo równoległe jest rodzajem komputer, który wykorzystuje wiele oddzielnych procesorów działających równolegle do wykonania jednego programu, w którym każdy procesor ma własną dedykowaną pamięć. Sam fakt, że Impala, będąc oparta na MPP, nie wiąże się z kosztami ogólnymi MapReduce jobs , mianowicie. Konfiguracja i tworzenie zadań, przydzielanie slotów, tworzenie podziału, generowanie map itp., sprawia, że jest niesamowicie szybki.

Ale to nie znaczy, że Impala jest rozwiązaniem wszystkich twoich problemów. Jest bardzo intensywne pamięci (MPP), nie nadaje się do zadań które wymagają ciężkich operacji danych, takich jak połączenia itp., bo po prostu nie można zmieścić wszystkiego w pamięci. Tu lepiej pasuje Hive.

Tak więc, jeśli potrzebujesz czasu rzeczywistego, zapytania ad-hoc nad podzbiorem danych trafiają do impali. A jeśli masz potrzeby przetwarzania wsadowego nad Big Data idź do Hive.

HTH

 29
Author: Tariq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-26 13:49:45

W impali są pewne kluczowe cechy, które sprawiają, że jest ona szybka.

  1. Nie używa map/reduce, które są bardzo drogie oddzielne jvms. Uruchamia oddzielny Demon Impala, który dzieli zapytanie i uruchamia je równolegle i połącz wynik ustawiony na końcu.

  2. Większość operacji odbywa się w pamięci.

  3. Używa hdfs do przechowywania, który jest szybki dla dużych plików. Informatyka buforuje jak najwięcej zapytań, wyników i danych.

  4. Obsługuje nowy format pliku, taki jak parkiet, który jest plikiem kolumnowym format. Więc jeśli użyjesz tego formatu, będzie szybciej dla zapytań, w których masz dostęp tylko do kilku kolumn przez większość czasu.

 6
Author: Animesh Raj Jha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-27 19:34:06