O arquivo escravos é usado apenas pelos scripts bin / start e stop. Se você está rodando no EC2, você deve verificar os scripts do EC2, por exemplo "hadoop-ec2 update-slaves-file"
Estou trabalhando em uma equipe que está tentando criar um sistema para criar clusters do Hadoop no EC2 com o mínimo de esforço por parte do usuário. Idealmente, gostaríamos que instâncias escravas exigissem apenas o nome do host da instância do mestre como dados do usuário na inicialização. Os escravos então rsync suas configurações da instância mestre e iniciar seus daemons TaskTracker e DataNode automaticamente.
Minha pergunta é a seguinte: é necessário que os nomes de host das instâncias de escravo sejam listados no arquivo conf/slaves
da instância do mestre? A única vez que vi esse arquivo usado no código para o Hadoop é pelos scripts start-{dfs,mapred}.sh
, que são o SSH em todas as máquinas listadas e iniciam os daemons. Se os daemons nos nós escravos começarem automaticamente, e se eles souberem a localização do JobTracker e do NameNode (através da configuração), eles podem se conectar ao JobTracker / NameNode sozinhos e serem tratados como escravos "normais"?
EDIT: Eu testei isso, e todo o sistema parece funcionar bem sem escravos listados na configuração. JobTracker mostra o TaskTracker escravo sob sua lista de nós, e eu executei um teste com sucesso.
OUTRA EDIÇÃO: Vale a pena observar que isso não funcionará se você usar a lista de desbloqueio do host do DFS ( conf/dfs.hosts
), que é um recurso pelo menos na distribuição do Cloudera.
Tags amazon-ec2 hadoop master-slave