Google's BigTable: Ein verteiltes Speichersystem für strukturierte Daten von Florian Eiteljörge Übersicht 1. 2. 3. 4. Was ist Bigtable? Datenmodell Implementierung/Architektur von Bigtable Vergleich mit relationalen DBMS und weitere Entwicklungen Was ist Bigtable? • verteilter, strukturierter Datenspeicher • wird seit 2003 von Google entwickelt und betrieben • wird in zahlreichen Projekten und Produkten von Google verwendet, u.a. – Personalisierte Suche – Google Earth – Google Analytics Designanforderungen • breit einsetzbar • Skalierbarkeit – Daten im Petabyte-Bereich (1 Petabyte = 1000 Terabyte) – Millionen Lese-/Schreibvorgänge pro Sekunde • Hochverfügbarkeit/Fehlertoleranz gegenüber Hardwareausfällen • Self-managing – Server dynamisch hinzufügen/entfernen – automatisches Loadbalancing Datenmodell • Bigtable-Cluster: Ansammlung von Prozessen, die die Bigtable-Software ausführen • Cluster besteht aus Tabellen, die im wesentlichen – verteilte, – persistente, – multidimensionale, – sortierte Maps sind. Tabellen • bestehen aus einer Sammlung von Zellen • Zellen sind dreidimensional organisiert • Zellenzugriff über mehrdimensionale Schlüssel: (row:string, column:string, time:int64) → cell-content:string Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Zeilen • Daten werden in lexikographisch Reihenfolge nach dem Zeilenschlüssel sortiert gespeichert • Zeilenschlüssel: beliebiger String (max. 64KB) • Transaktionen auf Zeilenebene beschränkt Spalten • einzelne Spalte in Bigtable sehr leichtgewichtig • Tabellen haben oftmals mehrere tausend Spalten • Beispiel Website: jeder Hyperlink einer Website entspricht eigener Spalte Spalten • Spalten mit ähnlichem Inhalt werden in „column families“ gegliedert • Zugriff erfolgt über family:qualifier (z.B. „anchor:cnnsi.com“) • Tabellen enthalten meist mehrere Hundert column families • Access Control basiert auf column families Zeitstempel • 64bit Integer; Zeitpunkte werden in Mikrosekunden gespeichert • gibt normalerweise an zu welchem Zeitpunkt der Datensatz aktuell war • automatische Garbage Collection: Benutzer kann wählen was gespeichert wird: – die n letzten Versionen des Datensatzes – Werte, die in den letzten n Minuten/Stunden/Tagen geschrieben wurden Bigtable Übersicht Tablet-Server Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Tablet-Server • verwaltet „Tablets“ • Tablets sind die Partitionen aus denen Tabellen bestehen • jede Tabelle besteht anfangs aus einer Partition, also einem Tablet • wächst eine Tabelle über bestimmte Größe, wird sie automatisch aufgeteilt – Zeilen werden niemals geteilt – aufeinanderfolgende Zeilen werden zusammen gespeichert in sog. Locality Groups Tablet-Server • Zielgröße für Tablets: 1GB • jeder Tablet-Server verwaltet zwischen 10 und 1000 Tablets, abhängig von – der tatsächlichen Größe der Tablets und Empfehlung der Entwickler: keine Zeile größer als wenige hundert Gigabyte – der Häufigkeit der Zugriffe auf ein Tablet • Bigtable-Cluster besteht i.d.R. aus sehr vielen Tablet-Servern (mehrere Hundert oder mehr) -> automatisches Loadbalancing notwendig Bigtable Übersicht Master-Server Tablet-Server Tablet-Server Tablet-Server Daten verwalten/ ausliefern Daten verwalten/ ausliefern Daten verwalten/ ausliefern Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Master-Server • pro Cluster existiert nur ein aktiver MasterServer • führt Metadatenoperationen wie z.B. anlegen oder löschen von Schemata durch • weist Tablet-Servern Tablets zu (lastabhängig) • überwacht, dass alle Tablets zugewiesen sind Wie stellt man fest, dass alle Tablets zugewiesen sind? Chubby • sog. Distributed Lock Manager • synchronisiert Zugriff auf verteilte Ressourcen • jeder Tablet- und Master-Server meldet sich bei Chubby an Start eines Master-Servers 4. Metadaten-Tabelle einlesen 1. Master-Sperre anfordern Master-Server Chubby-Service 2. nach Tablet-Servern scannen 3. Tablet-Server kontaktieren 5. nicht zugewiesene Tablets zuweisen Tablet-Server Tablet-Server Tablet-Server … Chubby – Weitere Aufgaben • speichert Schema-Informationen für Bigtable • Informationen sind für den Start von Bigtable zwingend notwendig • sendet ein Server keine regelmäßigen Nachrichten (sog. Heartbeats) an Chubby, verliert er seine Locks • Folge: Master weist Tablets neu zu Auffinden eines Tablets MetadataTablet TabellenTablets Root-Tablet (unteilbar) Chubby-Service Clients nutzen Cache zum speichern von Tablet-Positionen -> die meisten Client-Anfragen gehen direkt an den richtigen Tablet-Server 1 Zeile pro Metadata-Tablet 1 Zeile pro Tabellen-Tablet Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Bigtable Übersicht Master-Server Tabletzuweisung, LoadBalancing, MetadatenOperationen Tablet-Server Tablet-Server Tablet-Server Daten verwalten/ ausliefern Daten verwalten/ ausliefern Daten verwalten/ ausliefern GFS Chubby Service Verweis auf RootTablet, Master-Lock Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Google File System (GFS) • von Google entwickeltes, verteiltes Dateisystem zur Speicherung von sehr großen Datenmengen • von Bigtable für Persistenz genutzt • Daten werden im „SSTable“-Format gespeichert • SSTable: persistente, geordnete, unveränderliche Key-Value-Map Warum setzt Bigtable auf GFS? GFS • Hochverfügbarkeit – von allen Daten im GFS werden automatisch mindestens zwei Kopien angelegt – fällt ein Server aus oder wird eine Datei beschädigt, werden automatisch neue Kopien angelegt und verteilt – Serverausfälle werden als Normalfall angesehen: ständige Replikation ist daher entsprechend effizient implementiert -> dazu ein Beispiel Replikation im GFS • In Versuchen wurden Dateiserver im laufenden Betrieb heruntergefahren um einen Ausfall zu simulieren: – Ausfall eines Servers mit 15.000 Dateien, was 600 GB Daten entsprach Wiederhergestellt in ca. 23 Minuten, Replikationsrate von 440 MB/s – Gleichzeitiger Ausfall von zwei Servern mit 16.000 Dateien und 660 GB Daten - dadurch war von 266 Dateien nur noch eine Kopie vorhanden diese 266 Dateien wurden in 2 Minuten wiederhergestellt Skalierbarkeit im GFS • wird im Wesentlichen durch die Architektur erreicht (dazu gleich mehr) • Server können jederzeit hinzugefügt oder entfernt werden • Server basieren auf Standardhardware deren Verfügbarkeit am Markt (Einkauf) eher gewährleistet werden kann, als von High-EndProdukten Architektur des GFS Nach: The Google File System von S. Ghemawat, H. Gobioff, S.-T. Leung, 2003 Bigtable Übersicht Bigtable Client Bigtable ClientBibliothek Master-Server Tabletzuweisung, LoadBalancing, MetadatenOperationen Tablet-Server Tablet-Server Tablet-Server Daten verwalten/ ausliefern Daten verwalten/ ausliefern Daten verwalten/ ausliefern GFS Chubby Service Persistenz von Daten Logs Verweis auf RootTablet, Master-Lock Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Schreibvorgänge MapReduce-Einsatz möglich Memtable Schreib-Operation GFS Commit Log SSTable-Dateien Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Minor Compaction Memtable Memtable erreicht Grenzwert GFS Commit Log SSTable-Dateien Major Compaction Memtable Scheduler Commit Log SSTable-Dateien GFS Major Compaction Memtable Scheduler alle zum Löschen markierten Zellen werden entfernt GFS Commit Log SSTable-Dateien Lesevorgänge MapReduce-Einsatz möglich Memtable Lese-Operation Bloom Filter GFS Commit Log SSTable-Dateien Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Bigtable Übersicht Bigtable Client MetadatenOperationen Bigtable ClientBibliothek Master-Server Tabletzuweisung, LoadBalancing lesen/ schreiben TabletPosition bestimmen Tablet-Server Tablet-Server Tablet-Server Daten verwalten/ ausliefern Daten verwalten/ ausliefern Daten verwalten/ ausliefern Cluster Management System GFS Chubby Service Monitoring, Ausfallmanagement Persistenz von Daten Logs Verweis auf RootTablet, Master-Lock Nach: Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 Vergleich mit relationalen DBMS relationale DBMS Bigtable Anfragesprache meist SQL C++ Transaktionen Ja nur auf Zeilenbene Datentypbindung Ja Nein Relationale Operationen Ja Nein Skalierbarkeit • Oracle RAC 11g: 100 Nodes • MySQL Cluster 5.1: 255 Nodes • MS SQL Server 2008 R2 Datacenter Edition: 256 Prozessoren > 500 Tablet-Server HBase • • • • • OpenSource-Implementierung von Bigtable Teil des Apache Hadoop-Projekts in Java geschrieben Einsatz von MapReduce möglich von Facebook für den internen MessagingDienst verwendet mehr Details in einem der nächsten Vorträge Weitere Entwicklung – Googles F1 • Hybrid aus relationaler- und NoSQL-Datenbank • im Mai 2012 von Google vorgestellt • Ziele: – Skalierbarkeit von Bigtable – Usability und Funktionalität von SQLDatenbanken • volle SQL-Unterstützung (inkl. relationaler Operationen) • MapReduce-Funktionalität beim Lesen • automatische Replikation (GFS) • hohe Latenz (50-100 ms Schreiben, 5-10 ms Lesen) Quellen • Bigtable: A Distributed Storage System for Structured Data, Chang, Dean, Gemawat, Hsieh, Wallach, Burrows, Chandra, Fikes und Gruber, 2006/2008 • The Google File System, Ghemawat, Gobioff, Leung, 2003 • F1 - The Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business, Shute, Oancea, Ellner, Handy, Rollins, Samwel, Vingralek, Whipkey, Chen, Jegerlehner, Littlefield, Tong, 2012