У меня есть установка кластера Mesos - я проверил, что мастер может видеть подчиненные устройства - но когда я пытаюсь для запуска работы Hadoop, все задачи заканчиваются статусом LOST. Та же ошибка присутствует во всех журналах Stderr ведомых:Hadoop на Mesos не удается: «Не удалось найти или загрузить основной класс org.apache.hadoop.mapred.MesosExecutor»
Error: Could not find or load main class org.apache.hadoop.mapred.MesosExecutor
и это единственная линия в журналах Stderr.
Следуя инструкциям на http://mesosphere.io/learn/run-hadoop-on-mesos/, я поместил модифицированный дистрибутив Hadoop на HDFS, доступ к которому может получить каждый подчиненный. В каталоге lib
распределения Hadoop я добавил hadoop-mesos-0.0.4.jar
и mesos-0.14.2.jar
.
Я проверил, что каждое подчиненное устройство действительно загружает этот дистрибутив Hadoop и что hadoop-mesos-0.0.4.jar
содержит класс org.apache.hadoop.mapred.MesosExecutor
, поэтому я не могу понять, почему класс не найден.
Я использую Hadoop от CDH4.4.0 и mesos-0.15.0-rc4.
Есть ли какие-либо предложения относительно того, что может быть проблемой? Я знаю, что всегда начинал с проблемы CLASSPATH
, но в этом случае mesos-slave загружает, распаковывает и пытается запустить Hadoop TaskTracker, поэтому я бы предположил, что любой CLASSPATH
будет настроен на mesos-slave.
В режиме ведомых журналов среда печатается. Существует MESOS_HADOOP_HOME
, который пуст. Должно ли это быть настроено на что-то? Если предполагается, что он настроен на загруженный дистрибутив Hadoop, я не могу установить его заранее, потому что дистрибутив Hadoop загружается в новое место каждый раз.
В случае, если это связано (возможно, с некоторыми разрешениями), при попытке просмотреть ведомые журналы через главный пользовательский интерфейс, я получаю ошибку Error browsing path: ...
. Пользователь, запускающий mesos-slave, может перейти к правильному каталогу, когда я делаю это вручную.