Jak wspomnieliśmy w naszym blog, HBase jest istotną częścią naszego ekosystemu Hadoop. Teraz chciałbym przeprowadzić Cię przez samouczek HBase, w którym przedstawię Ci Apache HBase, a następnie przejdziemy przez studium przypadku Facebook Messenger. W tym blogu z samouczkami HBase zamierzamy omówić następujące tematy:
- Historia Apache HBase
- Wprowadzenie HBase Apache
- Bazy danych NoSQL i ich typy
- HBase vs Cassandra
- Funkcje Apache HBase
- HBase vs HDFS
- Studium przypadku Facebook Messenger
Samouczek Apache HBase: Historia
Zacznijmy od historii HBase i dowiedzmy się, jak HBase ewoluowała w czasie.
- Apache HBase jest wzorowany na BigTable Google, który służy do zbierania danych i obsługi żądań dla różnych usług Google, takich jak Mapy, Finanse, Earth itp.
- Apache HBase rozpoczął się jako projekt firmy Powerset for Natural Language Search, która obsługiwała ogromne i rzadkie zbiory danych.
- Apache HBase został po raz pierwszy wydany w lutym 2007. Później, w styczniu 2008, HBase stał się podprojektem Apache Hadoop.
- W 2010 roku HBase stał się projektem najwyższego poziomu Apache.
Samouczek HBase | Bazy danych NoSQL | Edureka
Po zapoznaniu się z historią Apache HBase, byłbyś ciekawy, czym jest Apache HBase? Przejdźmy dalej i spójrzmy.
Samouczek Apache HBase: wprowadzenie do HBase
HBase to open source, wielowymiarowy, rozproszony, skalowalny i Baza danych NoSQL napisane w Javie. HBase działa nad platformą HDFS (Hadoop Distributed File System) i zapewnia Hadoop funkcje podobne do BigTable. Został zaprojektowany, aby zapewnić odporny na błędy sposób przechowywania dużego zbioru rzadkich zestawów danych.
Ponieważ HBase osiąga wysoką przepustowość i niskie opóźnienia, zapewniając szybszy dostęp do odczytu / zapisu w ogromnych zestawach danych. Dlatego HBase jest wyborem dla aplikacji wymagających szybkiego i swobodnego dostępu do dużej ilości danych.
Zapewnia kompresję, operacje w pamięci i filtry Bloom (struktura danych, która mówi, czy wartość jest obecna w zestawie, czy nie), aby spełnić wymóg szybkiego i losowego odczytu i zapisu.
Zrozummy to na przykładzie: Silnik odrzutowy generuje różnego rodzaju dane z różnych czujników, takich jak czujnik ciśnienia, czujnik temperatury, czujnik prędkości itp., Które wskazują stan silnika. Jest to bardzo przydatne do zrozumienia problemów i statusu lotu. Continuous Engine Operations generuje 500 GB danych na lot, a dziennie odbywa się około 300 tysięcy lotów. Tak więc analiza silnika zastosowana do takich danych w czasie zbliżonym do rzeczywistego może służyć do proaktywnego diagnozowania problemów i ograniczania nieplanowanych przestojów. Wymaga to rozproszonego środowiska do przechowywania dużej ilości danych szybkie losowe odczyty i zapisy do przetwarzania w czasie rzeczywistym. Tutaj na ratunek przychodzi HBase. Omówię szczegółowo HBase Read and Write w moim następnym blogu Architektura HBase .
Jak wiemy, HBase to baza danych NoSQL. Tak więc, zanim zrozumiemy więcej na temat HBase, omówmy najpierw bazy danych NoSQL i ich typy.
Samouczek Apache HBase: bazy danych NoSQL
NoSQL oznacza Nie tylko SQL . Bazy danych NoSQL są modelowane w taki sposób, że mogą reprezentować dane inne niż formaty tabelaryczne, niekompetentne relacyjne bazy danych. Używa różnych formatów do reprezentowania danych w bazach danych, a zatem istnieją różne typy baz danych NoSQL w oparciu o ich format reprezentacji. Większość baz danych NoSQL stawia na dostępność i szybkość zamiast spójności. Teraz przejdźmy dalej i poznajmy różne typy baz danych NoSQL i ich formaty reprezentacji.
Magazyny klucz-wartość:
Jest to baza danych bez schematu, która zawiera klucze i wartości. Każdy klucz wskazuje na wartość będącą tablicą bajtów, może być łańcuchem, BLOB, XML itp. Lamborghini jest kluczem i może wskazywać na wartość Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario itp.
Klucz-wartość przechowuje bazy danych: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.
Przypadek użycia
Klucz-wartość dobrze przechowuje rozmiar uchwytu i dobrze radzi sobie z przetwarzaniem stałego strumienia operacji odczytu / zapisu z małym opóźnieniem. To sprawia, że są idealne doPreferencje użytkownika i sklepy profili,Rekomendacje produktów najnowsze produkty przeglądane na stronie internetowej sprzedawcy w celu zwiększenia rekomendacji produktów dla przyszłych klientów,Zwyczaje zakupowe klientów związane z obsługą reklam skutkują dostosowanymi reklamami, kuponami itp. Dla każdego klienta w czasie rzeczywistym.
Zorientowany na dokument :
Wynika z tej samej pary klucz-wartość, ale jest częściowo ustrukturyzowany, jak XML, JSON, BSON. Struktury te są traktowane jako dokumenty.
Bazy danych oparte na dokumentach: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.
Przypadek użycia
Ponieważ dokument obsługuje elastyczny schemat, szybki odczyt, zapis i partycjonowanie sprawia, że nadaje się on do tworzenia baz danych użytkowników w różnych usługach, takich jak Twitter, witryny e-commerce itp.
Zorientowana kolumna:
W tej bazie danych dane są przechowywane w komórkach pogrupowanych w kolumnach, a nie w wierszach. Kolumny są logicznie pogrupowane w rodziny kolumn, które można utworzyć podczas definiowania schematu lub w czasie wykonywania.
Te typy baz danych przechowują wszystkie komórki odpowiadające kolumnie jako ciągłe wpisy na dysku, dzięki czemu dostęp i wyszukiwanie są znacznie szybsze.
Bazy danych oparte na kolumnach: HBase, Accumulo, Cassandra, Druid, Vertica.
Przypadek użycia
Obsługuje ogromną pamięć i umożliwia szybszy dostęp do odczytu i zapisu. Dzięki temu bazy danych zorientowane na kolumny są odpowiednie do przechowywania zachowań klientów w witrynie e-commerce, systemach finansowych, takich jak Google Finance i dane giełdowe, mapy Google itp.
Zorientowany na wykres:
Jest to doskonała, elastyczna reprezentacja graficzna, używana w przeciwieństwie do SQL. Te typy baz danych z łatwością rozwiązują problemy związane ze skalowalnością, ponieważ zawierają krawędzie i węzły, które można rozszerzyć zgodnie z wymaganiami.
Graficzne bazy danych: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.
Przypadek użycia
Jest to zasadniczo używane w wykrywaniu oszustw, silnikach rekomendacji w czasie rzeczywistym (w większości przypadków e-commerce), zarządzaniu danymi podstawowymi (MDM), operacjach sieciowych i IT, zarządzaniu tożsamością i dostępem (IAM) itp.
klasa skanera w przykładach Java
HBase i Cassandra to dwie znane bazy danych zorientowane na kolumny. Mówiąc teraz na wyższym poziomie, porównajmy i zrozummy różnice architektoniczne i robocze między HBase i Cassandra.
Samouczek HBase: HBase VS Cassandra
- HBase jest wzorowany na BigTable (Google), podczas gdy Cassandra jest oparty na DynamoDB (Amazon), pierwotnie opracowanym przez Facebooka.
- HBase wykorzystuje infrastrukturę Hadoop (HDFS, ZooKeeper), podczas gdy Cassandra ewoluowała osobno, ale możesz łączyć Hadoop i Cassandra zgodnie ze swoimi potrzebami.
- HBase ma kilka komponentów, które komunikują się ze sobą, takich jak HBase HMaster, ZooKeeper, NameNode, Region Severs. Podczas gdy Cassandra jest typem pojedynczego węzła, w którym wszystkie węzły są równe i wykonuje wszystkie funkcje. Dowolny węzeł może być koordynatorem, co usuwa pojedynczy punkt awarii.
- HBase jest zoptymalizowany do odczytu i obsługuje pojedyncze zapisy, co prowadzi do ścisłej spójności. HBase obsługuje skanowanie w oparciu o zakres, co przyspiesza proces skanowania. Podczas gdy Cassandra obsługuje odczyty w jednym wierszu, co utrzymuje ostateczną spójność.
- Cassandra nie obsługuje skanowania wierszy w oparciu o zakres, co spowalnia proces skanowania w porównaniu z HBase.
- HBase obsługuje uporządkowane partycjonowanie, w którym wiersze rodziny kolumn są przechowywane w kolejności RowKey, podczas gdy w Casandrze uporządkowane partycjonowanie jest wyzwaniem. Dzięki partycjonowaniu RowKey proces skanowania w HBase jest szybszy w porównaniu z Cassandrą.
- HBase nie obsługuje równoważenia obciążenia odczytu, jeden serwer regionu obsługuje żądanie odczytu, a repliki są używane tylko w przypadku awarii. Podczas gdy Cassandra obsługuje równoważenie obciążenia odczytu i może odczytywać te same dane z różnych węzłów. Może to zagrozić spójności.
- W CAP (spójność, dostępność i tolerancja partycji) twierdzenie HBase utrzymuje spójność i dostępność, podczas gdy Cassandra koncentruje się na dostępności i tolerancji partycji.
Teraz przyjrzyjmy się dokładniej i zrozummy funkcje Apache HBase, które sprawiają, że jest tak popularny.
Samouczek Apache HBase: funkcje HBase
- Atomic do odczytu i zapisu: Na poziomie wiersza HBase zapewnia atomowy odczyt i zapis. Można to wyjaśnić, ponieważ podczas jednego procesu odczytu lub zapisu wszystkie inne procesy nie mogą wykonywać żadnych operacji odczytu lub zapisu.
- Konsekwentne czyta i pisze: HBase zapewnia spójne odczyty i zapisy dzięki powyższej funkcji.
- Liniowa i modułowa skalowalność: Ponieważ zbiory danych są rozproszone w HDFS, są one skalowalne liniowo w różnych węzłach, a także skalowalne modułowo, ponieważ są podzielone na różne węzły.
- Automatyczne i konfigurowalne fragmentowanie tabel: Tabele HBase są rozproszone w klastrach, a te klastry są rozproszone w regionach. Te regiony i klastry dzielą się i są redystrybuowane wraz ze wzrostem danych.
- Łatwy w użyciu Java API do dostępu klienta: Zapewnia łatwe w użyciu API Java do programowego dostępu.
- Brama oszczędnościowa i usługi internetowe w pełni REST: Obsługuje również Thrift i REST API dla front-endów innych niż Java.
- Filtry Block Cache i Bloom: HBase obsługuje Block Cache i Bloom Filters w celu optymalizacji zapytań o dużej objętości.
- Automatyczne wsparcie awarii: HBase z HDFS zapewnia WAL (Write Ahead Log) w klastrach, który zapewnia automatyczną obsługę awarii.
- Posortowane klucze wierszy: Ponieważ wyszukiwanie odbywa się w zakresie wierszy, HBase przechowuje klucze wierszy w porządku leksykograficznym. Korzystając z tych posortowanych klawiszy wiersza i sygnatury czasowej, możemy zbudować zoptymalizowane żądanie.
Przechodząc dalej w tym samouczku dotyczącym HBase, powiem ci, jakie są przypadki użycia i scenariusze, w których można używać HBase, a następnie porównam HDFS i HBase.
Chciałbym zwrócić uwagę na scenariusze, w których HBase najlepiej pasuje.
Samouczek HBase: Gdzie możemy używać HBase?
- Powinniśmy używać HBase tam, gdzie mamy duże zbiory danych (miliony lub miliardy lub wiersze i kolumny) i wymagamy szybkiego, losowego i rzeczywistego dostępu do odczytu i zapisu danych.
- Zestawy danych są rozproszone w różnych klastrach i potrzebujemy dużej skalowalności do obsługi danych.
- Dane są zbierane z różnych źródeł danych i są to dane częściowo ustrukturyzowane lub nieustrukturyzowane albo ich połączenie. Można go łatwo obsłużyć za pomocą HBase.
- Chcesz przechowywać dane kolumnowe.
- Masz wiele wersji zestawów danych i musisz przechowywać je wszystkie.
Zanim przejdę do studium przypadku Messengera na Facebooku,powiem ci, jakie są różnice między HBase i HDFS.
Samouczek HBase: HBase VS HDFS
HDFS to rozproszony system plików oparty na języku Java, który umożliwia przechowywanie dużych danych w wielu węzłach w klastrze Hadoop. Tak więc HDFS jest podstawowym systemem pamięci masowej do przechowywania danych w środowisku rozproszonym. HDFS to system plików, podczas gdy HBase to baza danych (podobnie jak NTFS i MySQL).
Ponieważ zarówno HDFS, jak i HBase przechowują wszelkiego rodzaju dane (tj. Ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane) w środowisku rozproszonym, przyjrzyjmy się różnicom między systemem plików HDFS a HBase, bazą danych NoSQL.
- HBase zapewnia dostęp do małych ilości danych w dużych zestawach danych o małych opóźnieniach, podczas gdy HDFS zapewnia operacje o dużych opóźnieniach.
- HBase obsługuje losowe odczyty i zapisy, podczas gdy HDFS obsługuje WORM (zapis raz Odczyt wiele lub wiele razy).
- Dostęp do HDFS można uzyskać zasadniczo lub głównie za pośrednictwem zadań MapReduce, podczas gdy HBase jest dostępny za pośrednictwem poleceń powłoki, Java API, REST, Avro lub Thrift API.
HDFS przechowuje duże zestawy danych w środowisku rozproszonym i wykorzystuje przetwarzanie wsadowe tych danych. Na przykład. pomogłoby to witrynie handlu elektronicznego przechowywać miliony danych klientów w rozproszonym środowisku, które rozrastało się przez długi czas (może to być 4-5 lat lub więcej). Następnie wykorzystuje przetwarzanie wsadowe na tych danych i analizuje zachowania klientów, wzorce, wymagania. Wtedy firma mogła dowiedzieć się, jaki rodzaj produktu, w jakich miesiącach klient kupuje. Pomaga przechowywać zarchiwizowane dane i wykonywać na nich przetwarzanie wsadowe.
Podczas gdy HBase przechowuje dane w sposób zorientowany na kolumny, gdzie każda kolumna jest przechowywana razem, dzięki czemu odczyt staje się szybszy, wykorzystując przetwarzanie w czasie rzeczywistym. Na przykład. w podobnym środowisku e-commerce przechowuje miliony danych produktów. Jeśli więc szukasz produktu wśród milionów produktów, optymalizuje on proces żądania i wyszukiwania, generując wynik natychmiast (lub możesz powiedzieć w czasie rzeczywistym). Szczegółowe Wyjaśnienie architektury HBase , Opiszę w następnym blogu.
Jak wiemy, HBase jest dystrybuowany przez HDFS, więc połączenie obu daje nam doskonałą okazję do wykorzystania zalet obu, w dopasowanym rozwiązaniu, jak zobaczymy w poniższym studium przypadku komunikatora Facebook.
Samouczek HBase: studium przypadku programu Facebook Messenger
Platforma do przesyłania wiadomości na Facebooku przeniesiony z Apache Cassandra do HBase w listopadzie 2010.
Facebook Messenger łączy wiadomości, e-mail, czat i SMS-y w rozmowę w czasie rzeczywistym. Facebook próbował zbudować skalowalną i solidną infrastrukturę do obsługi zestawu tych usług.
W tym czasie infrastruktura wiadomości obsługiwała ponad 350 milionów użytkowników wysyłających ponad 15 miliardów wiadomości między osobami miesięcznie. Usługa czatu obsługuje ponad 300 milionów użytkowników, którzy wysyłają ponad 120 miliardów wiadomości miesięcznie.
Monitorując użycie, odkryli, że pojawiły się dwa ogólne wzorce danych:
php wstaw do tablicy $ table
- Krótki zestaw danych czasowych, które są niestabilne
- Stale rosnący zestaw danych, do których rzadko uzyskuje się dostęp
Facebook chciał znaleźć rozwiązanie do przechowywania danych dla tych dwóch wzorców użytkowania i zaczął badać, aby znaleźć zamiennik dla istniejącej infrastruktury Wiadomości.
Wcześniej, w 2008 roku, korzystali z bazy danych typu open source, czyli Cassandra, która jest magazynem klucza i wartości o ostatecznej spójności, który był już produkcyjny i obsługował ruch w Inbox Search. Ich zespoły miały ogromną wiedzę na temat korzystania z bazy danych MySQL i zarządzania nią, więc zmiana którejkolwiek z technologii była dla nich poważnym problemem.
Spędzili kilka tygodni, testując różne frameworki, aby ocenić klastry MySQL, Apache Cassandra, Apache HBase i inne systemy. Ostatecznie wybrali HBase.
Ponieważ MySQL nie radził sobie wydajnie z dużymi zestawami danych, ponieważ indeksy i zestawy danych rosły, wydajność ucierpiała. Okazało się, że Cassandra nie jest w stanie poradzić sobie z trudnym wzorcem pogodzenia nowej infrastruktury Messages.
Główne problemy to:
- Przechowywanie dużych zbiorów stale rosnących danych z różnych usług Facebooka.
- Wymaga bazy danych, która może wykorzystać wysoką wydajność przetwarzania.
- Wysoka wydajność potrzebna do obsługi milionów żądań.
- Utrzymanie spójności w zakresie przechowywania i wydajności.
Rys.: Wyzwania stojące przed komunikatorem Facebooka
Na wszystkie te problemy Facebook wymyślił rozwiązanie, czyli HBase. Facebook przyjął HBase do obsługi komunikatora, czatu, poczty e-mail itp. Ze względu na jego różne funkcje.
HBase zapewnia bardzo dobrą skalowalność i wydajność dla tego obciążenia z prostszym modelem spójności niż Cassandra. Podczas gdy uznali, że HBase jest najbardziej odpowiedni pod względem ich wymagań, takich jak automatyczne równoważenie obciążenia i przełączanie awaryjne, obsługa kompresji, wiele fragmentów na serwer itp.
HDFS, który jest podstawowym systemem plików używanym przez HBase, również zapewniał kilka potrzebnych funkcji, takich jak kompleksowe sumy kontrolne, replikacja i automatyczne ponowne równoważenie obciążenia.
Rys.: HBase jako rozwiązanie dla komunikatora Facebook
Przyjmując HBase, skupili się również na przekazaniu wyników do samego HBase i rozpoczęli bliską współpracę ze społecznością Apache.
Ponieważ wiadomości przyjmują dane z różnych źródeł, takich jak SMS-y, czaty i e-maile, napisali serwer aplikacji, który obsługuje wszystkie decyzje dotyczące wiadomości użytkownika. Łączy się z wieloma innymi usługami. Załączniki są przechowywane w stogu siana (który działa na HBase). Napisali również usługę wykrywania użytkowników na szczycie Apache ZooKeeper, która komunikuje się z innymi usługami infrastrukturalnymi w celu nawiązania relacji ze znajomymi, weryfikacji konta e-mail, decyzji dotyczących dostawy i decyzji dotyczących prywatności.
Zespół Facebooka spędził dużo czasu potwierdzając, że każda z tych usług jest solidna, niezawodna i zapewnia dobrą wydajność do obsługi systemu przesyłania wiadomości w czasie rzeczywistym.
Mam nadzieję, że ten blog z samouczkiem HBase zawiera wiele informacji i podobał się. Na tym blogu poznałeś podstawy HBase i jego funkcje.W moim następnym blogu , Będę wyjaśniał architektura HBase i działanie HBase, dzięki czemu jest popularny do szybkiego i losowego odczytu / zapisu.
Teraz, gdy zrozumiałeś podstawy HBase, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka Big Data Hadoop Certification Training pomaga uczniom stać się ekspertami w dziedzinie HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop, wykorzystując przypadki użycia w czasie rzeczywistym w domenie handlu detalicznego, mediów społecznościowych, lotnictwa, turystyki, finansów.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.