2014-02-19 10 views
5

Gibt es eine Möglichkeit, Sperre für ein Verzeichnis in HDFS zu erhalten? Hier ist, was ich zu tun versucht:Sperren eines Verzeichnisses in HDFS

habe ich ein Verzeichnis namens ../ latest/...

Jeden Tag Ich brauche frische Daten in dieses Verzeichnis hinzuzufügen, aber bevor ich kopiere neue Daten in hier Ich möchte eine Sperre erhalten, so dass niemand sie verwendet, während ich neue Daten hineinkopiere.

Gibt es eine Möglichkeit, dies in HDFS zu tun?

Antwort

3

Nein, es gibt keine Möglichkeit, dies über HDFS zu tun.

Im Allgemeinen, wenn ich dieses Problem habe, versuche ich, die Daten an einen zufälligen Speicherort zu kopieren und dann die Datei zu verschieben, sobald die Kopie abgeschlossen ist. Das ist nett, weil mv ziemlich augenblicklich ist, während das Kopieren länger dauert. wenn Sie auf diese Weise, um zu sehen, ob jemand schreibt und dann mv, die Zeitdauer und „Lock“ wird für eine kürzere Zeit gehalten

  1. Generieren einer Zufallszahl
  2. die Daten in einen neuen Ordner Put in hdfs: // tmp/$ Zufallszahl
  3. überprüfen Sie, ob das Ziel in Ordnung ist (hadoop fs -ls vielleicht)
  4. hadoop fs -mv die Daten an das latest Verzeichnis.

Es ist eine geringe Chance, dass zwischen 3 und 4 jemand Clobber etwas haben könnte. Wenn Sie dadurch nervös werden, können Sie in ZooKeeper möglicherweise eine einfache Sperre implementieren. Curator kann Ihnen dabei helfen.

+0

Richtig! Das Erstellen von Daten an einem "temp" -Standort und das Verschieben von Daten ist nicht kugelsicher, da ein Benutzer möglicherweise einen (langen) MR-Auftrag ausführt. Nicht sicher, wie eine einfache Sperre in ZooKeeper helfen würde. Es gibt keine Garantie, dass ein Benutzer zuerst eine Sperre erhält, bevor er einen MR-Job für meine Daten ausführt, oder? Fehle ich etwas? Irgendwie denke ich, dass das Schloss auf dem Namenode-Level sein muss. Bitte klären Sie den ZooKeeper-Ansatz. Vielen Dank. – DilTeam

+0

Ja, du hast Recht. Der ZooKeeper-Ansatz geht davon aus, dass Sie darauf vertrauen, dass jeder ZK verwendet, um eine Sperre zu erhalten. Nichts hält einen Benutzer davon ab, dies zu ignorieren. Meiner Meinung nach müssen Sie einen nicht-technischen oder gestalterischen Ansatz zur Lösung Ihres Problems finden. –

Verwandte Themen