HBase Architecture: przypadki użycia, komponenty i model danych
⚡ Inteligentne podsumowanie
Architektura HBase składa się z czterech skoordynowanych komponentów — HMaster, serwerów regionów, ZooKeeper i HDFS — które przechowują dane w modelu zorientowanym kolumnowo, dzielą je na regiony i obsługują losowe odczyty i zapisy o niskim opóźnieniu.

Apache HBase to rozproszona, zorientowana kolumnowo baza danych NoSQL działająca na bazie Hadoop oraz rozproszony system plików Hadoop (HDFS). Jego architektura łączy koordynujący serwer główny, serwery regionalne i ZooKeepera, aby przechowywać bardzo duże tabele i obsługiwać szybkie, losowe odczyty i zapisy.
HBase Architecture i jej ważne elementy
Architektura HBase składa się z następujących głównych komponentów:
- Mistrz
- Serwer HRegion
- HRRegiony
- Opiekun zoo
- HDFS
Poniżej znajduje się szczegółowa architektura HBase i jej komponenty, jak pokazano na schemacie.
Mistrz
HMaster w HBase to implementacja serwera głównego w architekturze HBase. Działa on jako agent monitorujący wszystkie instancje serwera regionu obecne w klastrze i pełni funkcję interfejsu dla wszystkich zmian metadanych. W rozproszonym środowisku klastra serwer główny działa na węźle NameNode. Serwer główny uruchamia kilka wątków w tle.
Poniżej przedstawiono ważne role pełnione przez HMaster w HBase:
- Odgrywa kluczową rolę w zakresie wydajności i utrzymania węzłów w klastrze.
- HMaster zapewnia wydajność administracyjną i dystrybuuje usługi do serwerów w różnych regionach.
- HMaster przypisuje regiony do serwerów regionów.
- HMaster kontroluje równoważenie obciążenia i przełączanie awaryjne, aby poradzić sobie z obciążeniem węzłów obecnych w klastrze.
- Gdy klient chce zmienić dowolny schemat lub operację na metadanych, HMaster bierze na siebie odpowiedzialność za te operacje.
Niektóre z metod udostępnianych przez interfejs HMaster to przede wszystkim metody zorientowane na metadane:
- Tabela (utwórz tabelę, usuń tabelę, włącz, wyłącz)
- ColumnFamily (dodaj kolumnę, zmodyfikuj kolumnę)
- Region (przenieś, przypisz)
Klient komunikuje się dwukierunkowo zarówno z HMaster, jak i ZooKeeperem. W przypadku operacji odczytu i zapisu, kontaktuje się bezpośrednio z serwerami HRegion. HMaster przypisuje regiony do serwerów regionalnych i z kolei sprawdza stan ich serwerów.
W całej architekturze mamy wiele serwerów regionalnych. Na serwerach regionalnych znajduje się HLog, który przechowuje wszystkie pliki dziennika.
Serwery regionu HBase
Gdy serwer regionu HBase otrzymuje od klienta żądania zapisu i odczytu, przypisuje je do określonego regionu, w którym znajduje się dana rodzina kolumn. Klient może bezpośrednio kontaktować się z serwerami HRegion; nie ma potrzeby posiadania obowiązkowego uprawnienia HMaster, aby klient mógł komunikować się z serwerami HRegion. Klient potrzebuje pomocy HMaster tylko wtedy, gdy wymagane są operacje związane ze zmianami metadanych i schematu.
HRegionServer to implementacja serwera regionów. Odpowiada za obsługę i zarządzanie regionami, czyli danymi obecnymi w klastrze rozproszonym. Serwery regionów działają na węzłach danych obecnych w klastrze Hadoop.
HMaster może nawiązać kontakt z wieloma serwerami HRegion i wykonywać następujące funkcje:
- Hostowanie i zarządzanie regionami
- Automatyczne dzielenie regionów
- Obsługa żądań odczytu i zapisu
- Bezpośrednia komunikacja z klientem
Regiony HBase
Regiony HR to podstawowe elementy składowe klastra HBase. Składają się z rozkładu tabel i rodzin kolumn. Region zawiera wiele magazynów, po jednym dla każdej rodziny kolumn. Składa się głównie z dwóch komponentów: MemStore i HFile.
Opiekun zoo
HBase Opiekun zoo to scentralizowany serwer monitorujący, który przechowuje informacje o konfiguracji i zapewnia rozproszoną synchronizację. Rozproszona synchronizacja koordynuje rozproszone aplikacje działające w klastrze, zapewniając usługi koordynacyjne między węzłami. Aby klient mógł komunikować się z regionami, musi najpierw skontaktować się z ZooKeeperem.
Jest to projekt typu open source, który udostępnia wiele ważnych usług.
Usługi świadczone przez ZooKeeper:
- Przechowuje informacje o konfiguracji
- Zapewnia rozproszoną synchronizację
- Nawiązuje komunikację klienta z serwerami regionalnymi
- Zapewnia efemeryczne węzły reprezentujące różne serwery regionalne
- Umożliwia serwerowi głównemu używanie tych węzłów tymczasowych do wykrywania dostępnych serwerów w klastrze
- Tracawaria serwera ks i partycje sieciowe
Węzły Master i HBase Slave (serwery regionalne) rejestrują się w ZooKeeper. Klient potrzebuje dostępu do konfiguracji kworum ZooKeeper (ZK), aby połączyć się z serwerami Master i regionalnymi.
W przypadku awarii węzłów znajdujących się w klastrze HBase kworum ZooKeeper generuje komunikaty o błędach i rozpoczyna naprawę uszkodzonych węzłów.
HDFS
HDFS to rozproszony system Hadoop System plikówJak sama nazwa wskazuje, zapewnia rozproszone środowisko pamięci masowej i jest systemem plików zaprojektowanym do działania na sprzęcie powszechnego użytku. Przechowuje każdy plik w wielu blokach, a aby zachować odporność na błędy, bloki te są replikowane w klastrze Hadoop.
HDFS zapewnia wysoki stopień odporności na błędy i działa na tanim sprzęcie powszechnego użytku. Dodanie węzłów do klastra oraz przetwarzanie i przechowywanie danych przy użyciu taniego, powszechnego użytku sprzętu zapewnia klientowi lepsze rezultaty w porównaniu z obecną konfiguracją.
Tutaj dane przechowywane w każdym bloku są replikowane na 3 węzłach, więc jeśli któryś z węzłów ulegnie awarii, nie nastąpi utrata danych; istnieje odpowiedni mechanizm tworzenia kopii zapasowej i odzyskiwania.
HDFS nawiązuje kontakt z komponentami HBase i rozproszenie przechowuje dużą ilość danych.
Model danych HBase
Model danych HBase to zestaw komponentów składający się z tabel, wierszy, rodzin kolumn, komórek, kolumn i wersji. Tabele HBase zawierają rodziny kolumn i wiersze, których elementy są zdefiniowane jako klucze podstawowe. Kolumna w tabeli modelu danych HBase reprezentuje atrybut obiektu.
Model danych HBase składa się z następujących elementów:
- Zestaw tabel
- Każda tabela z rodzinami kolumn i wierszami
- Każda tabela musi mieć element zdefiniowany jako klucz podstawowy.
- Klucz wiersza pełni funkcję klucza podstawowego w HBase.
- Każdy dostęp do tabel HBase odbywa się za pomocą tego klucza podstawowego.
- Każda kolumna w HBase oznacza atrybut odpowiadający obiektowi.
Przypadki użycia HBase
Poniżej znajdują się przykłady przypadków użycia HBase wraz ze szczegółowym opisem rozwiązań, jakie HBase zapewnia w przypadku różnych problemów technicznych.
| Problem Statement | Rozwiązanie |
| Branża telekomunikacyjna mierzy się z następującymi wyzwaniami technicznymi: przechowywaniem miliardów rekordów dziennika CDR (Call Detail Record) generowanych przez sektor telekomunikacyjny; zapewnieniem dostępu w czasie rzeczywistym do dzienników CDR i informacji rozliczeniowych klientów; a także dostarczeniem opłacalnego rozwiązania w porównaniu z tradycyjnymi systemami baz danych. | HBase służy do przechowywania miliardów wierszy szczegółowych rekordów połączeń. Jeśli do istniejącej bazy danych RDBMS dodawane jest 20 TB danych miesięcznie, wydajność ulegnie pogorszeniu. Aby obsłużyć dużą ilość danych w tym przypadku użycia, HBase jest najlepszym rozwiązaniem. HBase wykonuje szybkie zapytania i wyświetla rekordy. |
| Sektor bankowy generuje miliony rekordów każdego dnia. Ponadto, sektor bankowy potrzebuje również rozwiązania analitycznego, które będzie w stanie wykrywać oszustwa w transakcjach pieniężnych. | Do przechowywania, przetwarzania i aktualizowania dużych ilości danych oraz do przeprowadzania analiz idealnym rozwiązaniem jest HBase zintegrowany z kilkoma komponentami ekosystemu Hadoop. |
Poza tym HBase można używać:
- Zawsze, gdy zachodzi potrzeba użycia aplikacji intensywnie przetwarzających dane.
- Do przeprowadzania analiz dzienników online i generowania raportów zgodności.
Mechanizm przechowywania w HBase
HBase to baza danych zorientowana kolumnowo, a dane są przechowywane w tabelach. Tabele są sortowane według RowId. Jak pokazano poniżej, HBase ma RowId, który jest zbiorem kilku rodzin kolumn obecnych w tabeli.
Rodziny kolumn obecne w schemacie to pary klucz-wartość. Jeśli przyjrzymy się im szczegółowo, każda rodzina kolumn ma wiele kolumn. Wartości kolumn są przechowywane w pamięci dyskowej. Każda komórka tabeli ma własne metadane, takie jak znacznik czasu i inne informacje.
Poniżej pokazano układ pamięci masowej zorientowany kolumnowo z kluczami wierszy, rodzinami kolumn i komórkami.
Poniżej przedstawiono kluczowe terminy reprezentujące schemat tabeli HBase:
- Tabela: Zbiór obecnych wierszy.
- Wiersz: Zbiór rodzin kolumn.
- Rodzina kolumn: Zbiór kolumn.
- Kolumna: Zbiór par klucz-wartość.
- Przestrzeń nazw: Grupa logicznaping tabel.
- Komórka: Krotka {wiersz, kolumna, wersja} dokładnie określająca definicję komórki w HBase.
Magazyny zorientowane kolumnowo i rzędowo
Pamięci kolumnowe i wierszowe różnią się mechanizmem przechowywania. Jak wiadomo, tradycyjne modele relacyjne przechowują dane w formacie wierszowym, w odniesieniu do wierszy danych. Pamięci kolumnowe przechowują tabele danych w odniesieniu do kolumn i rodzin kolumn.
Poniższa tabela przedstawia najważniejsze różnice pomiędzy tymi dwoma magazynami.
| Baza danych zorientowana kolumnowo | Baza danych zorientowana na wiersze |
| Używane, gdy sytuacja wiąże się z przetwarzaniem i analizą, np. w przypadku przetwarzania analitycznego online i jego zastosowań. | Podejście to jest wykorzystywane w przetwarzaniu transakcji online, np. w bankowości i finansach. |
| Ilość danych, jaką można zapisać w tym modelu, jest bardzo duża i wynosi petabajtów. | Jest przeznaczony dla małej liczby wierszy i kolumn. |
Wyjaśnienie odczytu i zapisu danych HBase
Operacje odczytu i zapisu danych od klienta do pliku HFile pokazano na poniższym diagramie.
Krok 1) Klient chce zapisać dane, dlatego najpierw komunikuje się z serwerem regionów, a następnie z regionami.
Krok 2) Region nawiązuje kontakt z MemStore w celu zapisania danych powiązanych z rodziną kolumn.
Krok 3) Najpierw dane są przechowywane w pamięci MemStore, gdzie są sortowane, a następnie przesyłane do pliku HFile. Głównym powodem korzystania z pamięci MemStore jest przechowywanie danych w rozproszonym systemie plików opartym na kluczu wiersza. Pamięć MemStore jest umieszczana w pamięci głównej serwera Region Server, natomiast pliki HFile są zapisywane w systemie plików HDFS.
Krok 4) Klient chce odczytać dane z regionów.
Krok 5) Następnie klient może uzyskać bezpośredni dostęp do MemStore i zażądać danych.
Krok 6) Klient łączy się z HFiles, aby pobrać dane. Dane są pobierane i odzyskiwane przez klienta.
Magazyn MemStore przechowuje modyfikacje w pamięci. Hierarchia obiektów w regionach HBase, od góry do dołu, jest przedstawiona w poniższej tabeli.
| Stół | Tabela HBase obecna w klastrze HBase |
| Region | HRegiony dla prezentowanych tabel |
| Sklep | Przechowuje po jednym na rodzinę kolumn dla każdego regionu dla tabeli |
| Sklep Mem | MemStore dla każdego magazynu i każdego regionu tabeli. Sortuje dane przed ich przekazaniem do plików HFiles. Wydajność zapisu i odczytu wzrasta dzięki sortowaniu. |
| Plik sklepu | StoreFiles dla każdego sklepu dla każdego regionu dla tabeli |
| Blokować | Bloki obecne w StoreFiles |
HBase kontra HDFS
HBase działa na bazie HDFS i Hadoop. Kluczowe różnice między HDFS a HBase dotyczą operacji na danych i ich przetwarzania.
| HBase | HDFS |
| Operacje o niskim opóźnieniu | Operacje o dużym opóźnieniu |
| Losowo czyta i pisze | Napisz raz, przeczytaj wiele razy |
| Dostęp przez polecenia powłoki, API klienta w Java, REST, Avro lub Thrift | Dostęp możliwy głównie poprzez MapReduce (MR) prace |
| Można wykonywać zarówno przechowywanie, jak i przetwarzanie | Tylko do pomieszczeń magazynowych |
Niektóre typowe aplikacje IT w przemyśle wykorzystują operacje HBase wraz z Hadoop. Aplikacje obejmują operacje na danych giełdowych i bankowości internetowej, gdzie HBase jest najlepszym rozwiązaniem. Gdy klaster będzie gotowy, możesz… odczytywanie i zapisywanie danych w HBase or zainstaluj HBase na świeżym węźle.



