Atualmente, sou responsável por um cluster do Hadoop em rápido crescimento para meu empregador, atualmente construído na versão 0.21.0 com o CentOS como o SO para cada trabalhador e nó mestre. Eu trabalhei com a maioria dos problemas de configuração padrão (balanceamento de carga, planejamento de IO para HDFS, garantindo espaço em disco suficiente disponível para operações de derramamento e assim por diante), mas não encontrei uma boa documentação sobre gerenciamento do número de descritores de arquivo necessário para cada rastreador de tarefas, nó de dados, mapeador ou redutor.
A documentação que li até agora (em Hadoop e HBase) indica vagamente que a operação de derramamento consome um grande número de descritores simultaneamente quando tenta gravar em disco. Esta documentação, obviamente, não fornece detalhamento do escopo ou vida útil esperada dos referidos descritores. A única sugestão dada foi a de elevar o limite do sistema, o que é plausível como uma solução alternativa e espúria como estratégia para o planejamento de longo prazo.
Não tenho informações sobre quais suposições o Hadoop faz em relação ao número de descritores de arquivos necessários. Como resultado, um cálculo dependente da configuração do número total de descritores de arquivos necessários por mapeador, redutor, rastreador de tarefas e nó de dados durante a vida útil de um trabalho normal (ou seja, não dependente de MultipleOutputs) seria extremamente útil.
Esse cálculo existe atualmente e, em caso afirmativo, posso fazer estimativas razoáveis sobre quais meus limites devem ser relativos a um número arbitrário de trabalhos, conforme definido?
(Para aumentar a probabilidade de que essa questão seja encontrada por outras pessoas com esse problema, o Hadoop lançará java.io.EOFException e java.io.IOException (apontando para um Bad File Descriptor) quando o conjunto de descritores disponíveis tiver sido Isso me levou várias horas para rastrear, já que as mensagens incluídas com essas exceções são extremamente genéricas.)