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.