У меня есть настройка кластера Mesos — я проверил, что мастер может видеть подчиненные — но когда я пытаюсь запустить задание Hadoop, все задачи заканчиваются со статусом LOST. Одна и та же ошибка присутствует во всех журналах ведомого stderr:
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, так что я полагаю, что mesos-slave настроит любую CLASSPATH
.
В стандартном выводе ведомых журналов печатается среда. Есть MESOS_HADOOP_HOME
, который пуст. Это должно быть установлено на что-то? Если он должен быть установлен для загруженного дистрибутива Hadoop, я не могу установить его заранее, потому что дистрибутив Hadoop каждый раз загружается в новое место.
В случае, если это связано (возможно, некоторые проблемы с разрешениями), при попытке просмотреть журналы подчиненных устройств через основной пользовательский интерфейс я получаю сообщение об ошибке Error browsing path: ...
. Пользователь, работающий с mesos-slave, может перейти в нужный каталог, когда я делаю это вручную.