2016-02-05 3 views
1

У меня есть вопрос о репликации в Hadoop, вот ситуация: У меня есть в общей сложности 6 узлов в 2-х стойкахHadoop конфигурация узла назначения репликации

Rack 1  Rack 2 
__________ __________ 
|  | |  | 
| Node 1 | | Node 4 | 
|  | |  | 
| Node 2 |  | Node 5 | 
|  | |  | 
| Node 3 | | Node 6 | 
|  | |  | 
__________ __________ 

Как обеспечить, чтобы все мои данные безопасны, если одна целая стойка терпит неудачу?

Можно ли настроить узел назначения репликации ?

В этой ситуации при коэффициенте репликации, равном 3, данные могут быть сохранены только на одной стойке. Узел 1 реплицируется в Узел 2 и 3, или узел 5 реплицирует до 4 и 6 для примера. Поэтому, если одна целая стойка перестанет работать, я потеряю некоторые данные.

Rack 1  Rack 2 
__________ __________ 
|  | |  | 
| Node 1 | | Node 4 | 
| v | | ^ | 
| Node 2 |  | Node 5 | 
| v | | v | 
| Node 3 | | Node 6 | 
|  | |  | 
__________ __________ 

То, что я хочу сделать, например, для узла 1, чтобы заставить репликацию по крайней мере 1 раз на узле 4 или 5 или 6

Rack 1  Rack 2 
__________ __________ 
|  | |  | 
| Node 1 | | Node 4 | 
| v \ | ^ | 
| Node 2 |\-->Node 5 | 
|  | |/ | 
| Node 3 <---/Node 6 | 
|  | |  | 
__________ __________ 

Одним из способов было бы установить коэффициент репликации до 4, но это решение недостаточно масштабируемо.

Любые идеи? Благодаря!

ответ

1

У Hadoop есть функция, называемая «понимание стойки», которая решает эту проблему. Если вы сконфигурируете Hadoop для проверки в стойке, то HDFS обеспечит, чтобы по крайней мере один репликатор переходил на каждую стойку в вашем двухэтапном сценарии: http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/RackAwareness.html

Чтобы включить распознавание стойки, вы должны иметь либо класс Java, либо внешний скрипт, через который узел сообщает, к какой стойке он принадлежит.

В приведенной выше ссылке приведены примеры, но точные данные зависят от конфигурации вашей сети.

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