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?
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ęć.
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.
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
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.
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.
Większość operacji odbywa się w pamięci.
Używa hdfs do przechowywania, który jest szybki dla dużych plików. Informatyka buforuje jak najwięcej zapytań, wyników i danych.
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.
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