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

Porównanie Apache HBase z Apache Cassandra na SSD w środowisku chmury

Ten wpis na blogu został opublikowany na Hortonworks.com przed fuzją z Cloudera. Niektóre linki, zasoby lub odniesienia mogą nie być już dokładne.

Przegląd

Ponieważ coraz więcej obciążeń jest przenoszonych na nowoczesny sprzęt w chmurze, ważne jest, abyśmy zrozumieli, jak wybrać najlepsze bazy danych, które mogą wykorzystać najlepszy sprzęt. Amazon wprowadził instancje z bezpośrednio podłączonym dyskiem SSD (Solid state drive). Zarówno Apache HBase, jak i Apache Cassandra są popularnymi bazami danych typu klucz-wartość. W tym teście mamy nadzieję dowiedzieć się więcej o tym, jak wykorzystują bezpośrednio podłączony dysk SSD w środowisku chmury.

Projekt benchmarku

Benchmark jest przeznaczony do uruchamiania Apache HBase i Apache Cassandra w optymalnym środowisku produkcyjnym. Oznacza to korzystanie z maszyny dostosowanej do operacji high-io z bezpośrednio podłączonym dyskiem SSD. Umieściliśmy logi zapisu z wyprzedzeniem/dziennik zatwierdzania, a także przechowywanie danych na dyskach SSD. Wcześniej liczne testy porównawcze potwierdziły już, że oba rozwiązania mogą skalować się liniowo, dlatego test skalowania jest poza zakresem tego testu porównawczego.

Wyniki

Analiza

W całym naszym teście zaobserwowaliśmy, że HBase konsekwentnie przewyższa Cassandrę w przypadku obciążeń o dużym natężeniu odczytu. Jest to dobrze dopasowane do kluczowych przypadków użycia HBase, takich jak wyszukiwarki, aplikacje transakcyjne o wysokiej częstotliwości, analiza danych dziennika i aplikacje do przesyłania wiadomości. HBase błyszczy przy obciążeniach, w których wymagane jest skanowanie ogromnych, dwuwymiarowych tabel. Z drugiej strony Cassandra działała dobrze w przypadku dużego obciążenia związanego z zapisem w zamian za spójność. Dlatego jest bardziej odpowiedni do zbierania danych analitycznych lub zbierania danych z czujników, gdy spójność w czasie jest akceptowalna.

Innym czynnikiem, który należy wziąć pod uwagę przy wyborze rozwiązań, jest również to, czy istnieją odpowiednie zestawy narzędzi do analizy danych. W przypadku HBase, który jest zbudowany na platformie Apache Hadoop, obsługuje Map Reduce i różne łączniki do innych rozwiązań, takich jak Apache Hive i Apache Spark, aby umożliwić większe zapytania agregujące i złożone analizy.

Konfiguracja testowa

Maszyna:

Klaster testowy składa się z 5 maszyn. Szczegóły maszyny:

AWS I3.xlarge

60 GB GP2 do uruchomienia systemu operacyjnego

Bezpośrednio podłączona pamięć NVMe, 0,95 TB

4 vCPU, każdy vCPU (wirtualny procesor) to sprzętowy hyper-thread na procesorze Intel E5-2686 v4 (Broadwell) pracującym z częstotliwością 2,3 GHz.

30,5 GB pamięci RAM

Aby zminimalizować problemy z hałaśliwymi sąsiadami, przeprowadziliśmy testy na dedykowanych instancjach AWS.

Oprogramowanie porównawcze:

Testowy zestaw danych:1TB wygenerowany przez YCSB

Zestaw testowy:https://github.com/brianfrankcooper/YCSB

Skrypt testowy:https://github.com/2bethere/hbase-cassandra-bench

Oprogramowanie i środowisko:

HDP 2.6.1
DSE 5.0.8
CentOS 7
Java 8

Aby w pełni wykorzystać sprzęt, zmieniliśmy liczbę modułów obsługi na serwer regionu w HBase na 120. Wszystkie inne ustawienia są domyślne. Pełny zestaw list konfiguracji jest dostępny na końcu tego posta.

Podczas wdrażania postępowaliśmy również zgodnie z przewodnikiem optymalizacji Cassandra zamieszczonym tutaj:http://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/config/configRecommendedSettings.html

Klienci YCSB znajdują się na każdym z 5 węzłów i działają jednocześnie w celu wygenerowania obciążenia. Podczas generowania zestawu danych zmniejszyliśmy liczbę wątków do 40.

Metodologia testów

Ładujemy zestaw danych z 40 wątkami dla każdego obciążenia, biorąc pod uwagę, że rozkład zestawu danych jest inny dla każdego testu porównawczego. Po załadowaniu czekamy na zakończenie wszystkich operacji zagęszczania przed rozpoczęciem testu obciążenia. Każde obciążenie zostało uruchomione 3 razy z 5 000 000 operacji. Średnia liczba jest pobierana z 3 testów, aby uzyskać ostateczną liczbę.

O YCSB

YCSB lub Yahoo! Cloud Serving Benchmark to powszechnie używane narzędzie do testów porównawczych. Zapewnia wyniki porównawcze w różnych rozwiązaniach. Uruchomiliśmy domyślne obciążenie dostarczone przez YCSB.

Zadanie A:poważna aktualizacja
Przykład zastosowania:przechowywanie sesji, rejestrowanie ostatnich działań

Zadanie B:czytane głównie
Przykład zastosowania:tagowanie zdjęć; dodanie tagu to aktualizacja, ale większość operacji polega na odczytaniu tagów

Zadanie C:tylko do odczytu
Przykład zastosowania:pamięć podręczna profili użytkownika, gdzie profile są tworzone gdzie indziej (np. Hadoop)

Zadanie D:Przeczytaj najnowsze zadanie
Przykład zastosowania:aktualizacje statusu użytkownika; ludzie chcą czytać najnowsze informacje

Zadanie E:krótkie dystanse
Przykład zastosowania:konwersacje w wątkach, gdzie każdy skan dotyczy postów w danym wątku (zakłada się, że są pogrupowane według identyfikatora wątku)

Zadanie F:zadanie odczytu, modyfikacji i zapisu
Przykład zastosowania:baza danych użytkowników, w której rekordy użytkowników są odczytywane i modyfikowane przez użytkownika lub w celu rejestrowania aktywności użytkownika.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Operacyjna replikacja baz danych Cloudera w skrócie

  2. 6 najważniejszych funkcji HDFS — samouczek Hadoop HDFS

  3. Hadoop — samouczki Apache Hadoop dla początkujących

  4. Hadoop Partitioner — poznaj podstawy programu MapReduce Partitioner

  5. Instrukcje:testowanie aplikacji HBase przy użyciu popularnych narzędzi