2012-10-29 10 views
8

Jak wskazuje tytuł, gdy klient żąda zapisania pliku na hdfs, w jaki sposób HDFS lub węzeł nazwy wybiera, który datanode ma przechowywać plik? Czy w hdfs są przechowywane wszystkie bloki tego pliku w tym samym węźle lub innym węźle w tym samym stelażu, jeśli jest zbyt duży? Czy w hdfs są dostępne interfejsy API dla aplikacji do przechowywania pliku w określonym kodzie datowym?w jaki sposób hdfs wybiera datanode do przechowywania

Odpowiedz

8

Kod wyboru datanodu ma funkcję ReplicationTargetChooser.chooseTarget().

Komentarz mówi, że:

Strategia umieszczenie repliki jest, że jeśli pisarz jest na datanode, 1. Replika jest umieszczona na komputerze lokalnym, w przeciwnym razie losowy datanode. Druga replika jest umieszczona na datanie, który jest na innej szafie. Trzecia replika jest umieszczona na datanie, który jest na tym samym stojaku co pierwsza replika.

Nie zapewnia żadnych interfejsów API dla aplikacji do przechowywania pliku w wybranym przez siebie datanodzie.

+0

moja wersja Miaoop to 0.20.2 – gaoxinbo

+1

dla hadoop 2+ sprawdź odpowiedź od Praveen Sripati –

10

W jaki sposób HDFS lub węzeł nazwy wybiera, który datanode ma przechowywać plik?

HDFS ma BlockPlacementPolicyDefault, sprawdź dokumentację interfejsu API, aby uzyskać więcej informacji. Powinno być możliwe rozszerzenie BlockPlacementPolicy dla niestandardowego zachowania.

Czy w hdfs są dostępne interfejsy API do aplikacji do przechowywania pliku w określonym kodzie datanowym?

Zachowanie umieszczania nie powinno być specyficzne dla określonego datanodu. To sprawia, że ​​HDFS jest odporny na awarie, a także skalowalny.

2

Teraz z łatką Hadoop-385 możemy wybrać strategię umieszczania bloków, aby umieścić wszystkie bloki pliku w tym samym węźle (i podobnie dla replikowanych węzłów). Przeczytaj ten blog na ten temat - spójrz na sekcję komentarzy.

5

Jeśli ktoś preferuje wykresy, tutaj jest obraz (source):
enter image description here

-1

this image shows how replication process is done[][1]

Widać, że kiedy namenode instruuje datanode do przechowywania danych. Pierwsza replika jest przechowywana w lokalnej maszynie, a pozostałe dwie repliki są wykonywane na innym stelażu i tak dalej.

Jeśli jakakolwiek replika się nie powiedzie, dane zostaną zapisane z innej repliki. Szanse na porażkę każdej repliki są takie, jak spadające na twoją głowę wentylator podczas snu: p, co oznacza, że ​​jest na to mniej szans.