2015-06-05 1 views

ответ

2

Файл с коэффициентом репликации 3 будет иметь каждый из его блоков, которые все это составляют, хранятся три раза (HDFS хранит блоки, а не файлы). Если у вас есть 3 узла (как в верхней части рисунка), каждый блок будет храниться один раз в каждом узле. Если у вас есть 1 узел, все блоки будут сохранены в одном узле (один раз, как прокомментировал Brandon.bell). Если у вас есть 5 узлов, и каждый файл использует более одного блока (как в нижней части рисунка), то да, будет использоваться более 3 узлов.

Причина - отказоустойчивость. Предполагая, что любые два хоста становятся недоступными (в нижнем рисунке), вы все равно можете получить все блоки, которые составляют ваши файлы. Например, если хост4 и хост5 выходят из строя, вы все равно можете извлечь блок1 из host1 и block2 из host2.

Для получения дополнительной информации см. this documentation. Я также нашел красивый комикс о репликации хаопов, в this post.

+1

Это право, за исключением случаев, когда у вас есть только один узел, блок не будет храниться три раза на этом хосте (если вы не используете несколько экземпляров datanode). –

+0

@ brandon.bell это правильно. Благодаря! Я обновил свой ответ. – vefthym

+0

Если у меня есть более 5 узлов, я хочу, чтобы он хранился на 3 узлах. Затем я быстро прочитаю файл на этих трех узлах (потому что не нужно получать блоки с другого узла). Но как хранить файл на 3 узлах? – cola

Смежные вопросы