Я запускаю Hadoop 1.1.2 в кластере с 10 + машинами. Я хотел бы красиво масштабироваться вверх и вниз, как для HDFS, так и для MapReduce. Под "красиво" я подразумеваю, что я требую, чтобы данные не были потеряны (разрешить дефрагментацию HDFS-узлов), а узлы, выполняющие задачу, заканчивают до выключения.
Я заметил, что процесс datanode умирает после завершения декомпозиции, что хорошо. Это то, что я делаю, чтобы удалить node:
- Добавить node в mapred.exclude
- Добавить node в hdfs.exclude
-
$ hadoop mradmin -refreshNodes
-
$ hadoop dfsadmin -refreshNodes
-
$ hadoop-daemon.sh stop tasktracker
Чтобы добавить node обратно (при условии, что он был удален, как указано выше), это то, что я делаю.
- Удалить из mapred.exclude
- Удалить из hdfs.exclude
-
$ hadoop mradmin -refreshNodes
-
$ hadoop dfsadmin -refreshNodes
-
$ hadoop-daemon.sh start tasktracker
-
$ hadoop-daemon.sh start datanode
Это правильный способ масштабирования вверх и вниз "красиво"? При уменьшении масштаба я замечаю, что длительность работы резко возрастает для некоторых неудачных заданий (поскольку задачи, которые они выполняли на удаленном node, нужно перепланировать).