Anbieter zum Thema
Die wichtigsten konfigurierbaren Hadoop-Parameter, die die Performance beeinflussen können (das muss aber nicht notwendigerweise stets der Fall sein):
dfs.blocksize: Die Default-Blockgröße für neue Dateien in Byte. Voreingestellt ist die Dateigröße 128 MB. Der Wert für dfs.blocksize ist abhängig von der Größe des Clusters und des Data-Sets. Ein zu geringer Wert kann zusätzlichen Overhead beim Erzeugen zu vieler Map-Aufgaben generieren.
mapred.tasktracker.reduce.tasks.maximum: Die maximale Anzahl von Reduce-Aufgaben, die gleichzeitig von einem Task-Tracker ausgeführt werden. Dieser Parameter und der Parameter für mapred.tasktracker.map.tasks.maximum (s.u.) beeinflussen die CPU-Nutzung. Erhöht man diese beiden Werte, verbessert man entsprechend auch den Multitasking-Steigerungsdurchsatz.
mapred.tasktracker.map.tasks.maximum: Die maximale Anzahl von Map-Aufgaben, die gleichzeitig von einem Task-Tracker ausgeführt werden. Dieser Parameter und der Parameter für mapred.tasktracker.reduce.tasks.maximum (s.o.) beeinflussen die CPU-Nutzung. Erhöht man diese beiden Werte, verbessert man entsprechend auch den Multitasking-Steigerungsdurchsatz.
io.sort.mb: Die Gesamtmenge an verfügbarem Pufferspeicher in Megabyte, um Dateien sortieren zu können. Dieser Parameter beeinflusst die I/O-Zeiten. Je höher der Wert, desto niedriger die Anzahl der Auslagerungen auf die Festplatten.
mapred.min.split.size: Die minimale Größe eines Bruchstücks, in das Map-Input aufgeteilt werden muss, ausgedrückt in Byte. Ist dieser Parameterwert größer als die Blockgröße, kann das dazu führen, dass einige Datenblöcke nicht lokal von den Map-Aufgaben ausgeführt werden, die sie eigentlich handhaben sollen, sprich: Auslagerung. Deshalb sind die Parameter für Blockgröße und maximumsplit.size zu prüfen, bevor Änderungen vorgenommen werden.
io.sort.factor: Die Anzahl von Streams, die während des Sortierens von Dateien gleichzeitig zusammengeführt werden können. Dieser Parameter beeinflusst die I/O-Zeit für MapReduce-Aufgaben.
mapred.map.child.java.opts und mapred.reduce.child.java.opts: Beide Parameter findet man in der Datei MAPRED-SITE.XML. Damit lassen sich die Java-Heap-Speichergrößen für die JVM-Prozesse Map und Reduce so konfigurieren, dass stets genügend übrig ist, um die Heap-Speicheranforderungen der OS-Pufferspeicher (Buffers und Caches) nach dem Vollenden der MapReduce-Aufgabe zu erfüllen.
Reale Erfolge
IBM: Um die Engpässe der Hadoop-Leistung zu finden, entwickelte IBM ein eigenes Werkzeug zur Leistungsmessung, um verschiedene Unterschritte eines Tasks, Tasks (wie etwa MapReduce) und Ressourcen (CPU, RAM, Disk) miteinander zu korrelieren. Nachdem die Engpässe gefunden worden sind, kann der Nutzer verschiedene empirische Regeln anwenden, um den Anwender in der Praxis zu einer Diagnose zu leiten und ihm zu helfen, die Gesamtleistung zu verbessern.
Das Werkzeug findet sich in der Advanced Edition von IBM Platform Symphony . Diese umfasst eine Hadoop-kompatible MapReduce-Implementierung, die in einem auditierten Benchmark eine vier Mal höhere Leistung als Basis-Hadoop demonstrierte.
Das IBM-Team führte TeraSort aus. Es gelang ihm, auf einem Zehn-Knoten-Cluster aus IBM-Power7-R2-Systemen mit PowerLinux ein Terabyte in unter acht Minuten zu sortieren. Etwa 30 Prozent dieser Leistung rühren vom Tuning der System-Software (JVM, Garbage Collection, große Pages) her und 20 Prozent vom Tuning der Hardware (Turbo-Modus, Multithreading, Prefetching). Der TeraSort-Weltrekord, der 2012 von der Google Compute Engine aufgestellt wurde, lag bei 54 Sekunden – aber auf mehr als 1.000 Rechnern.
(ID:43105672)