HBase
 sql >> Baza danych >  >> NoSQL >> HBase

Cloudera Impala:zapytania w czasie rzeczywistym w Apache Hadoop, na serio

Po długim okresie intensywnych prac inżynieryjnych i opinii użytkowników, z wielką przyjemnością i dumą ogłaszamy projekt Cloudera Impala. Ta technologia jest rewolucyjna dla użytkowników Hadoop i nie lekceważymy tego twierdzenia.

Kiedy Google opublikował artykuł Dremel w 2010 r., podobnie jak reszta społeczności, zainspirowała nas wizja techniczna wprowadzenia do Apache Hadoop funkcji zapytań ad hoc w czasie rzeczywistym, uzupełniająca tradycyjne przetwarzanie wsadowe MapReduce. Dziś ogłaszamy w pełni funkcjonalną bazę kodu o otwartym kodzie źródłowym, która realizuje tę wizję – i, jak sądzimy, nieco więcej – którą nazywamy Cloudera Impala. Plik binarny Impali jest teraz dostępny w publicznej wersji beta, ale jeśli wolisz przetestować Impalę za pomocą gotowej maszyny wirtualnej, mamy dla Ciebie również jedną z nich. Możesz również przejrzeć kod źródłowy i osprzęt testowy na Github już teraz.

Impala podnosi poprzeczkę wydajności zapytań, zachowując znajome środowisko użytkownika. Impala umożliwia wykonywanie zapytań o dane, przechowywane w HDFS lub Apache HBase — w tym funkcje SELECT, JOIN i agregujące — w czasie rzeczywistym. Ponadto wykorzystuje te same metadane, składnię SQL (Hive SQL), sterownik ODBC i interfejs użytkownika (Hue Beeswax), co Apache Hive, zapewniając znajomą i ujednoliconą platformę dla zapytań zorientowanych wsadowo lub w czasie rzeczywistym. (Z tego powodu użytkownicy Hive mogą korzystać z Impali przy niewielkich nakładach na konfigurację.) Pierwsza wersja beta obejmuje obsługę plików tekstowych i SequenceFiles; SequenceFiles można skompresować jako Snappy, GZIP i BZIP (przy czym Snappy jest zalecany dla maksymalnej wydajności). Planowana jest obsługa dodatkowych formatów, w tym plików tekstowych Avro, RCFile, LZO i formatu kolumn Parquet.

Aby uniknąć opóźnień, Impala omija MapReduce, aby uzyskać bezpośredni dostęp do danych za pośrednictwem wyspecjalizowanego rozproszonego silnika zapytań, który jest bardzo podobny do tych, które można znaleźć w komercyjnych równoległych systemach RDBMS. Rezultatem jest większa o rząd wielkości wydajność niż Hive, w zależności od typu zapytania i konfiguracji. (Zobacz FAQ poniżej, aby uzyskać więcej informacji). Pamiętaj, że ta poprawa wydajności została potwierdzona przez kilka dużych firm, które od kilku miesięcy testują Impala na rzeczywistych obciążeniach.

Widok architektury wysokiego poziomu znajduje się poniżej:

Takie podejście ma wiele zalet w porównaniu z alternatywnymi podejściami do sprawdzania danych Hadoop, w tym:

  • Dzięki lokalnemu przetwarzaniu w węzłach danych unika się wąskich gardeł w sieci.
  • Można wykorzystać jeden, otwarty i zunifikowany magazyn metadanych.
  • Kosztowna konwersja formatu danych jest niepotrzebna, a zatem nie ma żadnych dodatkowych kosztów.
  • Wszystkie dane są natychmiast dostępne do zapytania, bez opóźnień dla ETL.
  • Cały sprzęt jest wykorzystywany do zapytań Impala, a także do MapReduce.
  • Do skalowania potrzebna jest tylko jedna pula maszyn.

Zachęcamy do zapoznania się z dokumentacją w celu uzyskania dalszych szczegółów technicznych.

Na koniec chcielibyśmy odpowiedzieć na kilka pytań, które naszym zdaniem będą popularne:

Czy Impala jest oprogramowaniem typu open source?
Tak, Impala jest w 100% open source (licencja Apache). Już dziś możesz przejrzeć kod na Github.

Czym Impala różni się od Dremel?
Pierwszą i główną różnicą jest to, że Impala jest oprogramowaniem typu open source i jest dostępna dla każdego, podczas gdy Dremel jest własnością Google.

Technicznie, Dremel osiąga interaktywne czasy odpowiedzi na bardzo dużych zestawach danych dzięki zastosowaniu dwóch technik:

  • Nowy kolumnowy format przechowywania zagnieżdżonych relacyjnych danych/danych z zagnieżdżonymi strukturami
  • Rozproszone skalowalne algorytmy agregacji, które umożliwiają równoległe obliczanie wyników zapytania na tysiącach komputerów.

Ten ostatni jest zapożyczony z technik opracowanych dla równoległych DBMS, które również zainspirowały stworzenie Impali. W przeciwieństwie do narzędzia Dremel opisanego w artykule z 2010 r., które mogło obsługiwać tylko zapytania jednotabelowe, Impala obsługuje już pełny zestaw operatorów złączenia, które są jednym z czynników, które sprawiają, że SQL jest tak popularny.

Aby w pełni wykorzystać korzyści związane z wydajnością zademonstrowane przez narzędzie Dremel, Hadoop wkrótce będzie oferować wydajny, kolumnowy format binarnej pamięci masowej o nazwie Parquet. Ale w przeciwieństwie do Dremel, Impala obsługuje szereg popularnych formatów plików. Dzięki temu użytkownicy mogą uruchamiać Impala na swoich istniejących danych bez konieczności ich „ładowania” lub przekształcania. Pozwala także użytkownikom zdecydować, czy chcą zoptymalizować pod kątem elastyczności, czy tylko czystej wydajności.

Podsumowując, Impala plus Parquet osiągną wydajność zapytań opisaną w artykule Dremel, ale przewyższają opisaną tam w funkcjonalności SQL.

Naprawdę, o ile szybsze są zapytania Impala niż zapytania Hive?
Dokładna wielkość poprawy wydajności w dużym stopniu zależy od wielu czynników:

  • Konfiguracja sprzętowa:Impala generalnie jest w stanie w pełni wykorzystać zasoby sprzętowe i w szczególności generuje mniejsze obciążenie procesora niż Hive, co często przekłada się na wyższą zaobserwowaną łączną przepustowość we/wy niż w przypadku Hive. Impala oczywiście nie może poruszać się szybciej niż pozwala na to sprzęt, więc wszelkie wąskie gardła sprzętowe ograniczą obserwowane przyspieszenie. W przypadku zapytań związanych wyłącznie z we/wy zwykle obserwujemy wzrost wydajności w zakresie 3-4x.
  • Złożoność zapytania:zapytania, które wymagają wielu faz MapReduce w programie Hive lub wymagają sprzężeń po stronie redukcji, przyspieszą szybciej niż, powiedzmy, proste zapytania agregujące z jedną tabelą. W przypadku zapytań z co najmniej jednym sprzężeniem, wydaje się, że wzrost wydajności wynosi 7-45X.
  • Dostępność pamięci głównej jako pamięci podręcznej dla danych tabeli:Jeśli dane, do których uzyskano dostęp poprzez zapytanie, wyjdą z pamięci podręcznej, przyspieszenie będzie bardziej dramatyczne dzięki doskonałej wydajności Impali. W tych scenariuszach zaobserwowaliśmy przyspieszenie od 20x do 90x w porównaniu z Hive nawet w przypadku prostych zapytań agregujących.

Czy Impala może zastąpić MapReduce lub Hive – czy też tradycyjną infrastrukturę hurtowni danych?
Nie. Będzie nadal istniało wiele realnych przypadków użycia MapReduce i Hive (na przykład w przypadku długotrwałych obciążeń związanych z transformacją danych), a także tradycyjnych struktur hurtowni danych (na przykład w przypadku złożonych analiz na ograniczonych, ustrukturyzowanych zestawach danych). Impala jest uzupełnieniem tych podejść, wspierając przypadki użycia, w których użytkownicy muszą wchodzić w interakcje z bardzo dużymi zestawami danych, we wszystkich silosach danych, aby szybko uzyskać skoncentrowane zestawy wyników.

Czy wydanie Impala Beta ma jakieś ograniczenia techniczne?
Jak wspomniano wcześniej, obsługiwane formaty plików w pierwszej wersji beta obejmują pliki tekstowe i SequenceFiles, a wiele innych formatów będzie obsługiwanych w nadchodzącej wersji produkcyjnej. Co więcej, obecnie wszystkie łączenia są wykonywane w przestrzeni pamięci nie większej niż w najmniejszym węźle w klastrze; w środowisku produkcyjnym sprzężenia będą wykonywane w pamięci agregowanej. Wreszcie, obecnie nie są możliwe żadne funkcje UDF.

Jakie są wymagania techniczne wydania Impala Beta?
Musisz mieć zainstalowany CDH4.1 na RHEL/CentOS 6.2. Zdecydowanie zalecamy korzystanie z Cloudera Manager (wersja bezpłatna lub Enterprise) do wdrażania i zarządzania Impala, ponieważ automatycznie zajmuje się rozproszonym wdrażaniem i monitorowaniem szczegółów.

Jakie są zasady pomocy technicznej dla wydania Impala Beta?
Jeśli jesteś istniejącym klientem Cloudera z błędem, możesz zgłosić zgłoszenie do działu obsługi klienta, a my postaramy się go rozwiązać w sposób jak najbardziej dopracowany. Jeśli nie jesteś istniejącym klientem Cloudera, możesz skorzystać z naszej publicznej instancji JIRA lub listy mailingowej impala-user, która będzie monitorowana przez pracowników Cloudera.

Kiedy Impala będzie ogólnie dostępna do użytku produkcyjnego?
Spadek produkcji planowany jest na pierwszy kwartał 2013 r. W tym czasie klienci mogą uzyskać wsparcie komercyjne w formie subskrypcji Cloudera Enterprise RTQ.

Mamy nadzieję, że skorzystacie z okazji, aby przejrzeć kod źródłowy Impali, zapoznać się z wersją beta, pobrać i zainstalować maszynę wirtualną lub dowolną kombinację powyższych. Twoja opinia we wszystkich przypadkach jest mile widziana; potrzebujemy Twojej pomocy, aby Impala była jeszcze lepsza.

W miarę zbliżania się do dostępności produkcyjnej będziemy informować Cię o kolejnych aktualizacjach dotyczących Impali. (Aktualizacja:Przeczytaj o Impali 1.0.)

Zasoby Impali:
– Kod źródłowy Impali
– Pobieranie Impali (Beta Release i VM)
– Dokumentacja Impali
– Publiczna JIRA
– Lista mailingowa Impali
– Bezpłatna Impala szkolenie (scenariusz)

(Dodano 30.10.2012) Artykuły innych firm na temat Impali:
– GigaOm: Kwerendy w czasie rzeczywistym dla usługi Hadoop demokratyzują dostęp do analizy big data (22 października 2012 r.)
– Wired: Man Busts Out of Google, odbudowuje ściśle tajną maszynę zapytań (24 października 2012 r.)
– InformationWeek:Cloudera wprowadza zapytanie Hadoop w czasie rzeczywistym (24.10.2012)
– GigaOm:Cloudera czyni SQL pierwszorzędnym obywatelem w Hadoop (24.10.2012)
– ZDNet:Cloudera Impala wprowadza Hadoop do SQL i BI (25 października 2012 r.)
– Przewodowa:Marcel Kornacker Profile (29 października 2012 r.)
– Dr Dobbs: Cloudera Impala – przetwarzanie petabajtów z prędkością Myśl (29 października 2012)

Marcel Kornacker jest architektem Impali. Przed dołączeniem do Cloudera był głównym programistą silnika zapytań projektu F1 Google.

Justin Erickson jest menedżerem produktu w Impali.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Liczniki Hadoop i typy liczników w MapReduce

  2. Tuning Java Garbage Collection dla HBase

  3. Co dalej z Impala po wydaniu 1.1?

  4. Podejścia do tworzenia kopii zapasowych i odzyskiwania po awarii w HBase

  5. Czym jest praca tylko z mapą w Hadoop?