Archive for the ‘Datenbank’ Category

BigData mit Hypertable

Ich beschäftige mich beruflich gerade mit Big Data und deren Verarbeitung. Ich habe nur ein Problem, dass ich keine gute Hardware dafür habe, oder gar ein ganzes Rechenzentrum, wie Fratzenbuch oder google. Bei der Suche nach einem Lösungsansatz für mein Problem bin ich auf Hypertable gestoßen.

Wenn es um BigData geht, wird oft HBase genannt. In keinen kleinen Prototypen, war HBase in einer VM gefühlt viel langsamer als Hypertable. Deswegen habe ich mich weiter mit Hypertable und nicht mit HBase beschäftigt.

Hypertable ist eine verteilte Datenbank, welche vom Prinzip her spaltenorientiert ist. Dieses Prinzip kann mit Hilfe der Access Groups aufweichen. Man sollte auf keinen Fall versuchen aus Hypertable eine zeilenorientierte Datenbank zu machen.

Die aktuelle Zielarchitektur sieht wie folgt aus: Auf 12 Rechnern läuft HDFS von Hadoop. Auf 11 von diesen Rechnern läuft eine RangeServer für Hypertable. Dieser ist auf 2 GB RAM Verbrauch limitiert, weiterhin habe ich einen Hypertable Master. In meiner Testdatenbank habe ich 15,3 Millarden Datensätze. Auf dieser Datenmenge dauert ein random-Zugriff im Durchschnitt 200ms, wobei die worstcase Zeit einige Sekunden beträgt. Ich bin zumindest begeistert, dass ich derartig große Datenmengen auf schlechter Commodity Hardware handeln kann. Ich bin mir sicher, dass ich mit der zur Verfügung stehenden Hardware noch mehr haus holen kann.

Letzte Rettung von MySQL

Ich hatte heute wieder Spaß mit MySQL. Die InnoDB Tabelle einer Datenbank hat sich erfolgreich selbst zerstört. Das hat sich dahingehend geäußert, dass sich MySQL immer wieder neu gestartet hat. MySQL war leider nicht in der Lage die betroffene Tabelle selbst wieder her zu stellen.

Mit Hilfe von innodb_force_recovery kann man MySQL dazu bringen, dass es Tabellen wieder her stellt. Diese Option schreibt man einfach in die my.cnf. Er kann die Werte von 1 bis 6 annehmen. Je höher der Wert ist, desto höher ist die Wahrscheinlichkeit, dass die Tabelle wieder hergestellt werden kann. Aber Achtung: Je größer der Wert ist, desto mehr Daten kann MySQL beim Wiederherstellen zerstören. Es ist deswegen ratsam den Wert inkrementell zu erhöhen, dieses Vorgehen dauert evtl. länger, aber man geht nicht in Gefahr unnötig Daten zu verlieren.