Apache HBase A BigTable Column Store on top of Hadoop
Ich bin... Mitch Köhler Selbstständig seit 2010 Tätig als Softwareentwickler Softwarearchitekt Student an der OVGU seit Oktober 2011 Schwerpunkte Client/Server, hauptsächlich im Web Intelligente Systeme (Big Data, Information Retrieval,...)
HBase ist... Eine verteilte Datenbank nach dem Vorbild von Googles BigTable Paper
BigTable eine sortierte Map <RowKey, ColumnFamily, ColumnQualifier, Timestamp, Value> { "Key_1" : { "data" : { "mycolumn" : { "4" : "Version_4-AKTUELL!", "3" : "Version_3", "2" : "Version_2", "1" : "Version_1" } } }
HBase ist... Eine verteilte Datenbank nach dem Vorbild von Googles BigTable Paper Baut auf Hadoop auf Hohe Integration zwischen HBase und Hadoop OpenSource Thema dieses Vortrages :-)
A few words of caution vergesst, was ihr über relationale Datenbanken wisst Column Oriented Databases sind NICHT relational vergesst, was eine Tabelle in einem RDBMS darstellt In HBase sind Tabellen NUR ein Ort, um Daten zu speichern sie haben nicht die selbe semantische Bedeutung, wie in einem RDBMS! vergesst, wie Spalten in einem RDBMS arbeiten! HBase ist eine multidimensionale, sortierte Map!
A few words of caution Keine Joins! Keine Transaktionen! Atomizität wird nur auf Operationen je Row garantiert Keine Typisierung der Spalten! Kein SQL! KEIN Ersatz für ein RDBMS! HBase ist in manchen Fällen wesentlich komplexer!
A few words of caution KEIN ERSATZ für eine relationale Datenbank!
HBase rockt! Millionen und abermillionen Writes/Reads pro Sekunde Facebook: 75 MRD Read/Writes per Day (Nov. 2011) Bis zu 1.5 Millionen Read/Writes per Second Skaliert linear horizontal (und wurde dafür gebaut!) Daten werden sortiert gespeichert! Datenanalyse mit Hadoop MapReduce at
Open Time Series Database Monitoring Tool, um Metriken von tausenden Servern parallel und in real-time zu verarbeiten Eigentlich lässt sich alles mögliche damit monitoren Klickzahlen Visits Netzauslastung Kekse Daten bleiben historisch erhalten Wie machen die das?
Open Time Series Database MetricID (z.b. myservice.latency.avg) Timestamp (z.b. 1292148123) Tags Bestehen aus einem Namen als Kategorie und einer Unterkategorie z.b. Name: Host, Unterkategorie: web32 Der zu speichernde Wert
Open Time Series Database RowKey: MetricID_Timestamp_<<Tags>> Also zum Beispiel myservice.latency.avg_1292148123_type:get_host:web32 Timestamps werden auf 60 Minuten normiert!
Design des RowKeys für festgelegte Zeitspanne können Analysen je RequestType und Host gefahren werden Beispiel: FROM myservice.latency.avg_1292100000_type:get_host:web32 TO myservice.latency.avg_1292200000_type:get_host:web32
Design des RowKeys MetricID_Timestamp_<<Tags>> myservice.latency.avg_1292148123_type:get_host:web32 Daten zum selben Service liegen beieinander jüngste Daten je Service zuerst für festgelegte Zeitspanne können Analysen je RequestType und Host gefahren werden Timestamps werden auf 60 Minuten normiert!
Design des RowKeys RowKey ist Partitionierungskriterium HBase splittet eine Region, wenn Die Region unter zu hoher Last steht Die Region zu groß wird HBase splittet aber niemals eine Row! Eine Row liegt immer vollständig in einer Region Rows sollten daher nicht zu groß werden
Open Time Series Database RowKey myservice.latency.avg_1292148123_type:get_host:web32 Wie sieht Column Qualifier aus? Enthält zeitliches Delta + Datentype Value: zu speichernder Wert für Metrik
Open Time Series Database RowKey myservice.latency.avg_1292148123_type:get_host:web32 Wie sieht Column Qualifier aus? Delta von Timestamp des RowKeys und aktueller Zeit 4-Bit-Flag, um Datentyp des Wertes festzulegen Value: zu speichernder Wert für Metrik
Facebooks Message Search HBases Versioning-Feature als Inverted Index Column Qualifier Term (z.b. Kekse ) Versionen Verweise auf Nachrichten, die diesen Term enthalten
Facebooks Message Search { "user_mitch" : { "msgbox_index" : { "Kekse" : { "13576884474" : "MSG_Bob", "13576844474" : "MSG_Bob" }, "Schokokekse" : { "13579885434" : "MSG_Bob", "13576844474" : "MSG_Eve" }
One more thing... Support von mir mitch.koehler@st.ovgu.de Du bist engagiert neugierig und an aufstrebenden Technologien interessiert HTML5 und Web-Technologien sind Dir ein Begriff? Dann melde Dich bei mir!