2013-05-23 29 views
12

Ich habe versucht, zu definieren, was der hohe Durchsatz vs niedrige Latenzzeit bedeutet in HDFS in meinen eigenen Worten, und kam mit der folgenden Definition auf:Hoher Durchsatz vs niedrige Latenz in HDFS

HDFS Zugang Chargen optimiert Datensatz schneller (hohe Durchsatz), eher dann bestimmte Datensätze in diesem Datensatz (niedrige Latenz )

Ist es sinnvoll? :)

Danke!

+0

sieht gut aus für mich. – Tariq

Antwort

23

Ich denke, was Sie beschrieben haben ist mehr wie der Unterschied zwischen der Optimierung für verschiedene Zugriffsmuster (sequentiell, Batch vs Direktzugriff) als der Unterschied zwischen Durchsatz und Latenz im reinsten Sinne.

Wenn ich an ein System mit hoher Latenzzeit denke, denke ich nicht darüber nach, auf welchen Datensatz ich zugreife, sondern dass der Zugriff auf einen beliebigen Datensatz hohe Gemeinkosten verursacht. Der Zugriff auf nur das erste Byte einer Datei aus HDFS kann ungefähr eine Sekunde oder länger dauern.

Wenn Sie quantitativer geneigt sind, können Sie über die Gesamtzeit nachdenken, die für den Zugriff auf eine Anzahl von Datensätzen N erforderlich ist, wie T(N)=aN+b. Hier repräsentiert a den Durchsatz und b repräsentiert die Latenz. Mit einem System wie HDFS ist N oft so groß, dass b irrelevant wird und Kompromisse, die einen niedrigen a begünstigen, sind vorteilhaft. Vergleichen Sie das mit einem Datenspeicher mit niedriger Latenzzeit, bei dem oft nur ein einzelner Datensatz gelesen wird, und dann ist die Optimierung für niedrige b besser.

Damit ist Ihre Aussage nicht inkorrekt; es ist definitiv richtig, und es ist oft der Fall, dass Batch-Access-Stores hohe Latenz und hohen Durchsatz haben, während Random-Access-Stores niedrige Latenz und niedrigen Durchsatz haben, aber das ist nicht immer der Fall.

+3

Diese kleine Gleichung ist der beste Weg, es zu erklären :) – spacemonkey

+0

@Joe K Also wrt hadoop (oder jedes andere verteilte System) ist es fair zu sagen, dass man skalieren muss (dh schnellere Hardware), um die Latenz und Skalierung zu verbessern (dhfügen Sie weitere Knoten hinzu), um den Durchsatz zu verbessern? – sactiw

+0

Ja, ich würde sagen, dass dies für Hadoop HDFS wahrscheinlich angemessen ist, obwohl andere verteilte Systeme sehr unterschiedliche Leistungseinbußen haben können. Und Sie werden abnehmende Renditen erhalten; HDFS ist grundsätzlich nicht für niedrige Latenz gedacht. –

4

Ich werde an diesem einen Schwung nehmen.

Datenzugriff mit niedriger Latenzzeit: Ich drücke die Eingabetaste (oder Übergabeschaltfläche) und ich erwarte die Ergebnisse höchstens innerhalb von Sekunden. Meine Datenbank-Abfragezeit sollte Sub-Sekunde sein. Hoher Datendurchsatz: Ich möchte Millionen von Datenzeilen scannen und zählen oder eine Teilmenge summieren. Ich erwarte, dass dies einige Minuten dauern wird (oder viel länger je nach Komplexität). Denken Sie an Batch-Jobs.

Vorbehalte: Dies ist wirklich eine Karte/reduzieren Problem auch. Das Einrichten und Verarbeiten von M/R-Jobs erfordert ein wenig Overhead. Es gibt ein paar Projekte , die jetzt arbeiten, um Datenzugriff mit niedrigerer Latenz zu erreichen.

Außerdem speichert HDFS Daten in Blöcken und verteilt sie über viele Knoten. Dies bedeutet, dass es (fast) immer einige Netzwerkdatenübertragung erforderlich ist, um die endgültige Antwort zu bekommen, und dass "etwas" langsamer, je nach Durchsatz und verschiedenen anderen Faktoren "verlangsamt".

Hoffe, dass hilft. :)