При настройке hadoop я обнаружил, что сценарий hadoop-config.sh присутствует в двух каталогах: bin / и libexec /. Оба файла идентичны. Изучая сценарии, я обнаружил, что если в libexec присутствует hadoop-config.sh, то он запускается. Если нет, то вызывается тот, который находится под bin /. Для чего нужно хранить один и тот же файл в двух каталогах?
Спасибо, что указали на это. Я пробовал в своей системе
[root@prashant bin]# hadoop version
Hadoop 1.2.1
и ты абсолютно прав
20:39: 57.038706 открыть ("/ usr / local / hadoop / libexec /../ conf / hadoop-env.sh", O_RDONLY) = 3 <0.000253>
Когда я переместил этот файл, он имел в виду файл внутри / bin
20:42: 51.024234 открыть ("/ usr / local / hadoop / bin /../ conf / hadoop-env.sh", O_RDONLY) = 3 <0.000332>
Затем я настроил последнюю версию hadoop
[root@hadoop libexec]# hadoop version
Hadoop 2.4.1
[root@hadoop libexec]# pwd
/usr/local/hadoop/libexec
[root@hadoop libexec]# ls -l hadoop-config.sh
-rwxr-xr-x 1 67974 users 9793 Jun 21 11:35 hadoop-config.sh
[root@hadoop bin]# pwd
/usr/local/hadoop/bin
[root@hadoop bin]# ls -l hadoop-config.sh
ls: cannot access hadoop-config.sh: No such file or directory
Итак, насколько я вижу, большая часть скрипта вынесена из корзины в последней версии, но все же у меня нет ответа на ваш вопрос.
Историческая случайность? Разработчики строят вещи только для того, чтобы они работали? В прошлом не прилагалось больших усилий, чтобы убедиться, что сценарии операционной оболочки, используемые для запуска всех Java-программ, хорошо продуманы и разработаны функционально.
Аллен Виттенауэр взял на себя грандиозную задачу консолидации и исправления некоторых из этих проблем в HADOOP-9902. Возможно, вы захотите посмотреть этот выпуск JIRA.
Если вы используете выпуск от Apache, вы, вероятно, заметите изменения «скоро». Если вы используете один из коммерческих выпусков, я ожидаю, что они получат изменения намного позже; по крайней мере, они, вероятно, подождут, пока работа Аллена не будет полностью посвящена.