1) Будет ли это изменение влияет на существующие данные в HDFS
Нет, это не будет. Он сохранит старый размер блока в старых файлах. Для того, чтобы он принял новое изменение блока, вам нужно переписать данные. Вы можете либо сделать hadoop fs -cp
, либо distcp
по вашим данным. Новая копия будет иметь новый размер блока, и вы можете удалить свои старые данные.
2) Нужно ли мне распространять это изменение на все его узлы в кластере Hadoop или только на NameNode?
Я считаю, что в этом случае вам нужно только изменить NameNode. Однако это очень плохая идея. Вам нужно сохранить все файлы конфигурации в синхронизации по ряду веских причин. Когда вы будете более серьезно относиться к вашему развертыванию Hadoop, вам, вероятно, следует начать использовать что-то вроде Puppet или Chef для управления вашими конфигами.
Также обратите внимание, что всякий раз, когда вы меняете конфигурацию, вам необходимо перезапустить NameNode и DataNodes, чтобы они могли изменить свое поведение.
Интересное примечание: вы можете установить размер отдельных файлов при их записи, чтобы перезаписать размер блока по умолчанию. Например, hadoop fs -D fs.local.block.size=134217728 -put a b
Спасибо. Какой будет предпочтительный способ изменения на всех узлах [номер узла 30+ в кластере] – Tariq
, какой дистрибутив вы используете ..., видя ваши вопросы, похоже, что вы используете дистрибутив apache. Самый простой способ, который может найти, - это напишите сценарий оболочки, чтобы сначала удалить hdfs-site.xml в подчиненных устройствах, как показано ниже. – Bhuvan