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

Co to są zagęszczenia HBase?

Model zagęszczania zmienia się drastycznie z CDH 5/HBase 0,96. Oto, co musisz wiedzieć.

Apache HBase to rozproszony magazyn danych oparty na drzewie scalającym o strukturze dziennika, więc optymalna wydajność odczytu wynikałaby z posiadania tylko jednego pliku na magazyn (rodzina kolumn). Jednak ten ideał nie jest możliwy w okresach dużej liczby przychodzących zapisów. Zamiast tego HBase spróbuje połączyć HFiles, aby zmniejszyć maksymalną liczbę poszukiwań dysku potrzebnych do odczytu. Ten proces nazywa się zagęszczaniem .

Kompaktowanie wybiera niektóre pliki z jednego sklepu w regionie i łączy je. Ten proces obejmuje odczytywanie wartości KeyValues ​​w plikach wejściowych i zapisywanie wszelkich wartości KeyValue, które nie są usuwane, znajdują się w czasie życia (TTL) i nie naruszają liczby wersji. Nowo utworzony połączony plik zastępuje następnie pliki wejściowe w regionie.

Teraz, gdy klient prosi o dane, HBase wie, że dane z plików wejściowych są przechowywane w jednym ciągłym pliku na dysku — stąd potrzebne jest tylko jedno wyszukiwanie, podczas gdy wcześniej może być wymagane jedno dla każdego pliku. Ale dyskowe IO nie jest darmowe i bez starannej uwagi ciągłe przepisywanie danych może prowadzić do poważnej nadmiernej subskrypcji sieci i dysku. Innymi słowy, kompaktowanie polega na wymianie niektórych dysków we/wy teraz na mniejszą liczbę zapytań później.

W tym poście dowiesz się więcej o wykorzystaniu i konsekwencjach zagęszczania w CDH 4, a także o zmianach w modelu zagęszczania w CDH 5 (który zostanie ponownie oparty na HBase 0.96).

Zagęszczanie w CDH 4

Idealne kompaktowanie wybrałoby pliki, które ograniczą najwięcej poszukiwań w nadchodzących odczytach, jednocześnie wybierając pliki, które będą wymagały najmniejszej ilości IO. Niestety tego problemu nie da się rozwiązać bez wiedzy o przyszłości. W związku z tym jest to po prostu ideał, do którego powinna dążyć HBase, a nie coś, co jest naprawdę osiągalne.

Zamiast niemożliwego ideału, HBase używa heurystyki, aby spróbować wybrać, które pliki w sklepie mogą być dobrymi kandydatami. Pliki są intuicyjnie wybierane, że podobne pliki powinny być łączone z podobnymi plikami – co oznacza, że ​​pliki o tym samym rozmiarze powinny być łączone.

Domyślna polityka w HBase 0.94 (wysyłka w CDH 4) przegląda listę HFiles, próbując znaleźć pierwszy plik, który ma rozmiar mniejszy niż suma wszystkich plików pomnożona przez hbase.store.compaction.ratio. Po znalezieniu tego pliku, HFile i wszystkie pliki z mniejszymi identyfikatorami sekwencji są wybierane do kompaktowania.

W przypadku domyślnego przypadku, gdy największe pliki są najstarsze, to podejście działa dobrze:

Jednak to założenie o korelacji między wiekiem a rozmiarem plików jest w niektórych przypadkach błędne, co powoduje, że obecny algorytm wybiera nieoptymalny. Zamiast tego, pliki ładowane zbiorczo mogą i czasami sortują bardzo inaczej niż normalnie opróżniane HFiles, więc stanowią świetne przykłady:

Zmiany zagęszczenia w CDH 5

Zagęszczenia zmieniły się ostatnio w znaczący sposób. W przypadku HBase 0.96 i CDH 5 algorytm wyboru plików można było konfigurować za pomocą HBASE-7516 — dzięki czemu można teraz korzystać z dostarczonych przez użytkownika zasad kompaktowania. Ta zmiana umożliwia bardziej doświadczonym użytkownikom testowanie i powtarzanie sposobu, w jaki chcą uruchomić kompaktowanie.

Domyślny algorytm wyboru kompaktowania został również zmieniony na ExploringCompactionPolicy. Ta zasada różni się od starej domyślnej, ponieważ zapewnia, że ​​każdy plik w proponowanym zagęszczeniu mieści się w określonym współczynniku. Ponadto nie tylko wybiera pierwszy zestaw plików, których rozmiary mieszczą się w zakresie współczynnika zagęszczenia; zamiast tego przygląda się wszystkim możliwym zestawom, które nie naruszają żadnych reguł, a następnie wybiera coś, co wydaje się mieć największy wpływ dla najmniejszej oczekiwanej ilości operacji we/wy. Aby to zrobić, ExploringCompactionPolicy wybiera kompaktowanie, które usunie większość plików w stosunku, a jeśli istnieje remis, pierwszeństwo ma zestaw plików o mniejszym rozmiarze:

Więcej zmian jest planowanych w przyszłych wydaniach, w tym kompaktowanie warstwowe, kompaktowanie rozłożone i kompaktowanie oparte na poziomach.

Wniosek

W niektórych przypadkach ta praca nie będzie miała żadnego wpływu. To dobrze, ponieważ zagęszczenie zostało już dość dobrze zbadane. Jednak w przypadku użytkowników, którzy mają duże skoki ruchu lub korzystają z obciążeń zbiorczych, ta praca może przynieść znaczną poprawę czasu oczekiwania na operacje we/wy i opóźnienia żądań. W konkretnym przypadku użycia masowego ładowania zaobserwowaliśmy 90% redukcję we/wy dysku ze względu na kompaktowanie.

Oto wyniki z przypadku testowego w PerfTestCompactionPolicies firmy HBase:

Sprawdź tę pracę w CDH 5 (w wersji beta w momencie pisania tego tekstu), jeśli chodzi o klaster w pobliżu.

Dalsze czytanie:

  • Poznawanie polityki zagęszczania
  • https://hbase.apache.org/book/regions.arch.html#compaction.file.selection
  • https://issues.apache.org/jira/browse/HBASE-7516
  • https://issues.apache.org/jira/browse/HBASE-7678
  • https://issues.apache.org/jira/browse/HBASE-7667
  • https://issues.apache.org/jira/browse/HBASE-7055
  • http://www.hbasecon.com/sessions/compaction-improvements-in-apache-hbase/

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wdrożyć modele ML do produkcji

  2. HDFS Disk Balancer Wprowadzenie, operacje i funkcje

  3. Testowanie wydajności HBase przy użyciu YCSB

  4. Złącze Spark HBase – rok w przeglądzie

  5. Wtyczka Cloudera Replication umożliwia replikację x-platform dla Apache HBase