Sharding vs DFS

O ile rozumiem sharding (np. w MongoDB) i rozproszone systemy plików (np. HDFS w HBase czy HyperTable) to różne mechanizmy, których baz danych używa do skalowania, zastanawiam się jednak, jak je porównują?

Author: Ali Shakiba, 2011-08-06

1 answers

Tradycyjny sharding polega na rozbiciu tabel na niewielką liczbę elementów i uruchomieniu każdego kawałka (lub "shard") w oddzielnej bazie danych na oddzielnej maszynie. Ze względu na duże rozmiary odłamków, mechanizm ten może być podatny na nierównowagę z powodu gorących punktów i nierównego wzrostu, o czym świadczy incydent Foursquare. Ponadto, ponieważ każdy odłamek jest uruchamiany na oddzielnej maszynie, systemy te mogą wystąpić problemy z dostępnością, jeśli jedna z maszyn ulegnie awarii. Aby złagodzić ten problem, większość systemów shardingowych, w tym MongoDB, implementuje grupy replik. Każda maszyna jest zastępowana przez zestaw trzech maszyn w konfiguracji master plus dwa Slave. W ten sposób, jeśli maszyna upadnie, są dwie pozostałe repliki do serwowania danych. Istnieje kilka problemów z tą konstrukcją: po pierwsze, jeśli replika zawiedzie w grupie replik, a grupa zostanie tylko z dwoma członkami, aby przywrócić liczbę replik do trzech, dane na jednej z tych dwóch maszyn muszą być sklonowany. Ponieważ w całym klastrze znajdują się tylko dwie maszyny, które mogą być użyte do odtworzenia repliki, podczas replikacji jednej z tych maszyn wystąpi ogromny przeciągnięcie jednej z nich, powodując poważne problemy z wydajnością danego odłamka (kopiowanie 1 TB przez łącze gigabitowe zajmuje dwie godziny). Drugi problem polega na tym, że gdy jedna z replik ulega awarii, należy ją wymienić na nową maszynę. Nawet jeśli jest dużo wolnych mocy w całym klastrze w celu rozwiązania problemu replikacji, że wolne moce nie mogą być wykorzystane do naprawy sytuacji. Jedynym sposobem na rozwiązanie tego problemu jest wymiana maszyny. Staje się to bardzo trudne z operacyjnego punktu widzenia, ponieważ rozmiary klastrów rosną na setki lub tysiące maszyn.

Projekt Bigtable+GFS rozwiązuje te problemy. Po pierwsze, dane tabeli są podzielone na znacznie drobniejsze ziarniste "tabletki". Typowa maszyna w klastrze Bigtable często ma ponad 500 tabletki. Jeśli wystąpi nierównowaga, rozwiązanie to jest po prostu prostą sprawą migracji niewielkiej liczby tabletek z jednego urządzenia do drugiego. Jeśli serwer tabletów ulegnie awarii, ponieważ zestaw danych jest rozkładany i replikowany z taką drobną ziarnistością, w procesie odzyskiwania mogą uczestniczyć setki maszyn, które rozkładają obciążenie odzyskiwania i przyspieszają czas odzyskiwania. Ponadto, ponieważ dane nie są związane z konkretną maszyną lub maszynami, wolne moce produkcyjne na wszystkich maszynach w klaster można zastosować do awarii. Nie ma wymogu operacyjnego wymiany maszyny, ponieważ każda z wolnych mocy produkcyjnych w całym klastrze może być wykorzystana do usunięcia nierównowagi replikacji.

  • Doug Judd CEO, Hypertable Inc.
 16
Author: Doug Judd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-16 03:41:25