В отношении настройки дисков Datanode в кластере Hadoop мне интересно следующее. Какой из этих двух вариантов лучше:
Чтобы добавить один (или несколько) дисков к Datanode и подключить еще после того, как они начнут заполняться.
Или начать с как можно большего количества дисков с самого начала и заполнять их одновременно.
Два других связанных вопроса: лучше всего получить диски максимально большого размера, чтобы получить максимальную емкость для ограниченного числа слотов для дисков?
Какой объем хранилища может поддерживать один Datanode? (конечно, это зависит от технических характеристик оборудования Datanode, но все же ... какой-то приблизительный предел?)
Во-первых, количество шпинделей напрямую связано с производительностью ваших заданий mapreduce (с точностью до точки). В общем, вы хотите сделать что-то вроде 1-2 ядер ЦП на шпиндель.
Во-вторых, балансировка дополнительных шпинделей постфактум может стать проблемой. Совсем недавно был добавлен код для перебалансировки узлов данных между шпинделями. Обычный балансировщик выполняет только балансировку между узлами, поэтому вы все равно можете получить несбалансированные шпиндели. Существует некоторая поддержка для настройки политики размещения блоков, чтобы она выравнивалась со временем при добавлении новых шпинделей, но это означает, что новые данные записываются только на шпиндели, которые используются меньше всего.
В-третьих, на данном этапе я, вероятно, не стал бы делать больше, чем 12 дисков по 6 ТБ (или около 72 ТБ на каждый узел данных). Это будет обрабатывать несколько миллионов блоков данных. Более того, вы начинаете сталкиваться с несколькими проблемами производительности, которые требуют настройки кластера, потому что такие вещи, как отчет о блоке данных, занимают слишком много времени. Во многом это будет зависеть от вашего варианта использования.
Я видел кластеры с гораздо более высокой плотностью дисков, но потребовалось много настроек, чтобы заставить их работать (и даже в этом случае все еще есть проблемы).