Niedawno wygłosiłem wykład w LA Hadoop User Group na temat Apache HBase Do’s and Don’t. Publiczność była doskonała i miała bardzo dobrze poinformowane i dobrze sformułowane pytania. Jody z Shopzilli był doskonałym gospodarzem i jestem mu winien wielkie podziękowania za możliwość porozmawiania z ponad 60 LA Hadooperami. Ponieważ nie wszyscy mieszkają w LA lub nie mogą dotrzeć na spotkanie, podsumowałem tutaj niektóre z najważniejszych punktów. Dla tych z was, którzy mają pracowity dzień, oto tl;dr:
- HBase jest dobry, ale nie jest zamiennikiem RDBMS lub HDFS
- Dobra konfiguracja oznacza dobre działanie
- Monitor monitor monitor monitor monitor
My w Cloudera jesteśmy wielkimi fanami HBase. Kochamy technologię, kochamy społeczność i stwierdziliśmy, że doskonale nadaje się do wielu zastosowań. Pomyślne zastosowania HBase zostały dobrze udokumentowane, w wyniku czego wiele organizacji rozważa, czy HBase jest dobrym rozwiązaniem dla niektórych ich aplikacji. Impulsem do mojego wystąpienia i tego wpisu na blogu jest wyjaśnienie niektórych dobrych aplikacji dla HBase, ostrzeżenie przed niektórymi słabymi aplikacjami i podkreślenie ważnych kroków do pomyślnego wdrożenia HBase.
Kiedy używać HBase
Najważniejszą kwestią, gdy patrzymy na HBase, jest to, że chociaż jest to świetne rozwiązanie wielu problemów, nie jest to srebrna kula. HBase nie jest zoptymalizowany pod kątem klasycznych aplikacji transakcyjnych ani nawet analityki relacyjnej. Nie jest również kompletnym substytutem HDFS podczas wykonywania dużych partii MapReduce. Przyjrzyj się niektórym przypadkom użycia w tym poście, aby dowiedzieć się, które aplikacje dobrze pasują do HBase, a jeśli masz pytania, śmiało publikuj na listach. Czy wspomniałem, że społeczność jest fantastyczna?
Pomijając to zastrzeżenie – dlaczego warto korzystać z HBase? Jeśli aplikacja ma schemat zmiennych, w którym każdy wiersz jest nieco inny, powinieneś spojrzeć na HBase. Na przykład wykonanie ćwiczenia modelowania przy użyciu standardowego schematu relacyjnego; Jeśli nie możesz dodać kolumn wystarczająco szybko, a większość z nich ma wartość NULL w każdym wierszu, powinieneś rozważyć HBase. Jeśli okaże się, że Twoje dane są przechowywane w kolekcjach, na przykład niektóre metadane, dane wiadomości lub dane binarne, które mają tę samą wartość, powinieneś rozważyć HBase. Jeśli potrzebujesz dostępu do danych na podstawie klucza podczas przechowywania lub pobierania, powinieneś rozważyć HBase.
Usługi pomocnicze
Zakładając, że jesteś przekonany, że HBase dobrze pasuje do Twojej aplikacji, oto kilka wskazówek, które należy wziąć pod uwagę podczas jego wdrażania. Istnieje kilka usług pomocniczych, które są ważne i jedna, która jest wymagana. Jeśli wcześniej nie oglądałeś ZooKeepera, teraz jest czas. HBase używa ZooKeeper do różnych rozproszonych usług koordynacji, takich jak wybory główne. Wraz z rozwojem i rozwojem HBase nadal polega na ZooKeeper w celu uzyskania dodatkowych funkcji, co czyni go kluczową częścią systemu. Ponadto powinieneś mieć odpowiednie usługi sieciowe, takie jak NTP i DNS. HBase zależy od tego, czy wszystkie węzły w klastrze mają ściśle zsynchronizowane zegary i konsekwentnie się do siebie odwołują. Korzystanie z NTP i DNS zapewnia, że nie napotkasz dziwnych zachowań, gdy jeden węzeł A myśli, że czas jest jutro, a węzeł B myśli, że to wczoraj. Zapobiegniesz również sytuacjom, w których węzeł główny każe węzłowi C obsługiwać region, ale węzeł C nie zna własnej nazwy i nie odpowiada. Korzystanie z NTP i DNS pozwoli zaoszczędzić wiele bólów głowy na początku.
Powiedziałem, że najważniejszą kwestią przy wyborze HBase jest upewnienie się, że masz pasujący przypadek użycia. Najważniejszą rzeczą do zrobienia podczas korzystania z HBase jest monitorowanie systemu. Monitorowanie jest kluczem do udanych operacji HBase. Podobnie jak w przypadku wielu systemów rozproszonych, HBase jest podatny na awarie kaskadowe. Jeśli jeden węzeł zacznie się wymieniać, może stracić kontakt z urządzeniem nadrzędnym, powodując, że inny serwer przejmie obciążenie i stanie się przeciążony. Ten drugi serwer ulegnie awarii, a awaria będzie się powtarzać kaskadowo. Musisz monitorować pamięć, procesor, wejścia/wyjścia oraz opóźnienia i przepustowość sieci na każdym z węzłów HBase, aby upewnić się, że działają one w prawidłowych parametrach. Monitorowanie jest najważniejszą praktyką działania zdrowego klastra HBase.
Dobre praktyki dotyczące architektury HBase
Przewiń do dobrze monitorowanego klastra HBase z idealnym przypadkiem użycia. Oto kilka dobrych praktyk. Użyj prefiksu klucza, który dobrze się rozprowadza w zależności od przypadku użycia. Jeśli poprzedzisz swój klucz sygnaturą czasową lub inną podobną wartością, która po posortowaniu jest przechowywana lub odpytywana w partii, prawdopodobnie przeciążysz kolejno każdy serwer regionu, zamiast równomiernie rozkładać obciążenie. Należy również utrzymywać liczbę regionów na rozsądnej liczbie w oparciu o rozmiar pamięci i ilość pamięci RAM, a maszyna JVM RegionServer powinna być ograniczona do 12 GB sterty Java, aby zminimalizować długie przerwy GC. Na przykład maszyna z 36 GB pamięci RAM, na której działa również demon DataNode, może obsłużyć około 100 regionów z aktywnymi zapisami i magazynem pamięci o wielkości 48 MB każdy. To zapewnia wystarczającą ilość miejsca na wymagania dotyczące pamięci DataNode i RegionServer, przestrzeń bufora plików systemu Linux i rozsądny rozmiar opróżniania dla każdego serwera RegionServer.
Kilka zaleceń dotyczących konfiguracji obejmuje wyłączenie automatycznego zagęszczania (domyślnie dzieje się to co 24 godziny od momentu rozpoczęcia HBase) i zaplanuj jego uruchamianie codziennie poza godzinami szczytu. Powinieneś także skonfigurować kompresję (taką jak LZO) i jawnie umieścić poprawnie skonfigurowany katalog conf HBase w swojej CLASSPATH.
HBase NIE WOLNO
Omówiliśmy szeroki zakres dobrych praktyk dla HBase. Istnieje również kilka wzorców użycia, których należy unikać. Na przykład nie oczekuj, że użyjesz HBase jako hurtowego zamiennika dla każdej z twoich relacyjnych baz danych. HBase jest świetny w wielu sprawach, ale nie zastępuje relacyjnych baz danych. Po pierwsze, nie używa języka SQL, nie ma optymalizatora, nie obsługuje transakcji między rekordami ani złączeń. Jeśli nie używasz żadnego z nich w swojej aplikacji bazodanowej, HBase może być idealnym rozwiązaniem.
Zachowaj ostrożność podczas uruchamiania mieszanych obciążeń w klastrze HBase. Jeśli masz umowy SLA dotyczące dostępu do HBase niezależne od jakichkolwiek zadań MapReduce (na przykład transformacja w Pig i udostępnianie danych z HBase), uruchom je w osobnych klastrach. HBase intensywnie wykorzystuje procesor i pamięć z sporadycznym dużym sekwencyjnym dostępem do we/wy, podczas gdy zadania MapReduce są głównie powiązane we/wy ze stałą pamięcią i sporadycznym procesorem. W połączeniu mogą one prowadzić do nieprzewidywalnych opóźnień dla rywalizacji HBase i CPU między nimi. Udostępniony klaster wymaga również mniejszej liczby gniazd zadań na węzeł, aby spełnić wymagania dotyczące procesora HBase (zazwyczaj połowa gniazd w każdym węźle, które można przydzielić bez HBase). Miej też oko na wymianę pamięci. Jeśli HBase zacznie się wymieniać, istnieje duża szansa, że przegapi bicie serca i zostanie usunięty z klastra. W zajętym klastrze może to przeciążyć inny region, powodując jego wymianę i kaskadę awarii.
Ostateczne myśli
Ostatnia rada, zanim podsumujemy. Podczas ładowania HBase użyj HFileOuputFormat, jeśli ładuje się za pośrednictwem zadania MapReduce lub kolekcji serwerów przy użyciu wsadowych operacji umieszczania. Ładowanie za pomocą jednego klienta spowoduje wąskie gardło na tym kliencie i nie będzie korzystać ze skalowalności zapewnianej przez HBase.
Podsumowując, rozważ HBase podczas ładowania danych według klucza, wyszukiwania danych według klucza (lub zakresu), udostępniania danych według klucza, wykonywania zapytań o dane według klucza lub przechowywania danych według wiersza, które nie są dobrze zgodne ze schematem.
Przypadki użycia
- Apache HBase:Powered By HBase Wiki
- Mozilla:Przenoszenie Socorro do HBase
- Facebook:nowy system przesyłania wiadomości w czasie rzeczywistym Facebooka:HBase
- StumbleUpon:HBase w StumbleUpon