2015-02-18 6 views
0

My Hadoop версия 2.5.2. Я изменяю свой файл dfs.blocksize в файле hdfs-site.xml на главном узле. У меня следующий вопрос:Изменяет ли значение dfs.blocksize существующие данные

1) Будет ли это изменение влияет на существующие данные в HDFS 2) Нужно ли мне на распространение информации это изменение всех его узлов в Hadoop кластера или только на NameNode достаточно

ответ

1

вы должны вносить изменения в hdfs-site.xml всех подчиненных устройств ... размер dfs.block должен быть согласованным по всем datanodes.

+0

Спасибо. Какой будет предпочтительный способ изменения на всех узлах [номер узла 30+ в кластере] – Tariq

+0

, какой дистрибутив вы используете ..., видя ваши вопросы, похоже, что вы используете дистрибутив apache. Самый простой способ, который может найти, - это напишите сценарий оболочки, чтобы сначала удалить hdfs-site.xml в подчиненных устройствах, как показано ниже. – Bhuvan

1

ochanging размер блока в hdfs-site.xml влияет только на новые данные.

+0

Нужно ли изменять размер блока на всех ndoes или только на мастере? – Tariq

1

распределение которых вы используете ... видя ваши вопросы он выглядит, как вы используете Apache distribution..easiest способ я могу найти это написать скрипт для удаления первого HDFS-site.xml в рабах, как

ssh [email protected] 'rm /some/hadoop/conf/hdfs-site.xml' 
 
ssh [email protected] 'rm /some/hadoop/conf/hdfs-site.xml' 
 
ssh [email protected] 'rm /some/hadoop/conf/hdfs-site.xml'

позже скопировать HDFS-site.xml от мастера всех рабов

scp /hadoop/conf/hdfs-site.xml [email protected]:/hadoop/conf/ 
 
scp /hadoop/conf/hdfs-site.xml [email protected]:/hadoop/conf/ 
 
scp /hadoop/conf/hdfs-site.xml [email protected]:/hadoop/conf/

+0

Apache Hadoop 2.5.2. \t Не могли бы вы также ответить на этот вопрос: http://stackoverflow.com/questions/28586561/yarn-container-lauch-failed-exception-and-mapred-site-xml-configuration – Tariq

3

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