Optymalizowanie usługi Apache HBase za pomocą systemu Apache Ambari w usłudze Azure HDInsight
Apache Ambari to interfejs internetowy do zarządzania klastrami usługi HDInsight i monitorowania ich. Aby zapoznać się z wprowadzeniem do internetowego interfejsu użytkownika systemu Ambari, zobacz Manage HDInsight clusters by using the Apache Ambari Web UI (Zarządzanie klastrami usługi HDInsight przy użyciu internetowego interfejsu użytkownika systemu Apache Ambari).
Konfiguracja bazy danych Apache HBase jest modyfikowana na karcie Konfiguracje bazy danych HBase. W poniższych sekcjach opisano niektóre ważne ustawienia konfiguracji wpływające na wydajność bazy danych HBase.
Ustawianie HBASE_HEAPSIZE
Uwaga
Ten artykuł zawiera odwołania do terminu master , termin, którego firma Microsoft już nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.
Rozmiar sterty HBase określa maksymalną ilość sterty, która ma być używana w megabajtach według regionów i serwerów głównych . Wartość domyślna to 1000 MB. Ta wartość powinna zostać dostrojona dla obciążenia klastra.
Aby zmodyfikować, przejdź do okienka Advanced HBase-env na karcie Konfiguracje bazy danych HBase, a następnie znajdź
HBASE_HEAPSIZE
ustawienie.Zmień wartość domyślną na 5000 MB.
Optymalizowanie obciążeń z dużym obciążeniem odczytu
Następujące konfiguracje są ważne, aby zwiększyć wydajność obciążeń z dużym obciążeniem odczytu.
Blokuj rozmiar pamięci podręcznej
Pamięć podręczna bloków jest pamięcią podręczną odczytu. Parametr hfile.block.cache.size
kontroluje rozmiar pamięci podręcznej bloku. Wartość domyślna to 0,4, czyli 40% całkowitej pamięci serwera regionu. Większy rozmiar pamięci podręcznej bloku, szybsze będą losowe operacje odczytu.
Aby zmodyfikować ten parametr, przejdź do karty Ustawienia na karcie Konfiguracje bazy danych HBase, a następnie znajdź % regionServer przydzielone do buforów odczytu.
Aby zmienić wartość, wybierz ikonę Edytuj .
Rozmiar magazynu Memstore
Wszystkie edycje są przechowywane w buforze pamięci nazywanym magazynem Memstore. Ten bufor zwiększa łączną ilość danych, które można zapisywać na dysku w ramach jednej operacji. Przyspiesza również dostęp do ostatnich edycji. Rozmiar magazynu Memstore definiuje następujące dwa parametry:
hbase.regionserver.global.memstore.UpperLimit
: definiuje maksymalny procent serwera regionów, z którego może korzystać połączony magazyn Memstore.hbase.regionserver.global.memstore.LowerLimit
: definiuje minimalny procent serwera regionów, z którego może korzystać połączony magazyn Memstore.
Aby zoptymalizować losowe operacje odczytu, można zmniejszyć górne i dolne limity magazynu Memstore.
Liczba wierszy pobranych podczas skanowania z dysku
Ustawienie hbase.client.scanner.caching
definiuje liczbę wierszy odczytanych z dysku, gdy next
metoda jest wywoływana na skanerze. Wartość domyślna to 100. Im większa liczba, tym mniejsza liczba zdalnych wywołań wykonanych z klienta do serwera regionu, co powoduje szybsze skanowanie. To ustawienie zwiększa jednak wykorzystanie pamięci na kliencie.
Ważne
Nie należy ustawiać wartości tak, aby czas między wywołaniem następnej metody na skanerze był większy niż limit czasu skanera. Czas trwania limitu czasu skanera jest definiowany hbase.regionserver.lease.period
przez właściwość .
Optymalizowanie obciążeń z dużą liczbą operacji zapisu
Następujące konfiguracje są ważne, aby zwiększyć wydajność obciążeń z dużą liczbą operacji zapisu.
Maksymalny rozmiar pliku regionu
Baza HBase przechowuje dane w wewnętrznym formacie pliku o nazwie HFile
. hbase.hregion.max.filesize
Właściwość definiuje rozmiar pojedynczego HFile
regionu. Region jest podzielony na dwa regiony, jeśli suma wszystkich HFiles
w regionie jest większa niż to ustawienie.
Większy rozmiar pliku regionu, tym mniejsza liczba podziałów. Rozmiar pliku można zwiększyć, aby określić wartość, która skutkuje maksymalną wydajnością zapisu.
Unikaj blokowania aktualizacji
Właściwość
hbase.hregion.memstore.flush.size
definiuje rozmiar, w którym magazyn Memstore jest opróżniany na dysk. Domyślny rozmiar to 128 MB.Element
hbase.hregion.memstore.block.multiplier
definiuje mnożnik bloku regionu HBase. Wartość domyślna to 4. Maksymalna dozwolona wartość to 8.Baza HBase blokuje aktualizacje, jeśli magazyn Memstore to (
hbase.hregion.memstore.flush.size
*hbase.hregion.memstore.block.multiplier
) bajty.W przypadku wartości domyślnych rozmiaru opróżniania i mnożnika bloku aktualizacje są blokowane, gdy Memstore ma rozmiar 128 * 4 = 512 MB. Aby zmniejszyć liczbę blokowania aktualizacji, zwiększ wartość
hbase.hregion.memstore.block.multiplier
.
Definiowanie rozmiaru magazynu Memstore
Parametry hbase.regionserver.global.memstore.upperLimit
i hbase.regionserver.global.memstore.lowerLimit
definiują rozmiar magazynu Memstore. Ustawienie tych wartości równą sobie zmniejsza przerwy podczas zapisu (również powoduje częstsze opróżnianie) i powoduje zwiększenie wydajności zapisu.
Ustawianie lokalnego buforu alokacji magazynu Memstore
Właściwość hbase.hregion.memstore.mslab.enabled
definiuje użycie buforu alokacji lokalnej Memstore. Po włączeniu (true) to ustawienie uniemożliwia fragmentację stert podczas ciężkiej operacji zapisu. Wartość domyślna to true.