Если вы используете Каскадирование, убедитесь, что JAR, содержащий класс, который вы задали в
_props = new Properties();
AppProps.setApplicationJarClass(_props, MyMain.class);
- это JAR, в котором есть папка 'lib' со всеми зависимостями.
Иногда случается, что JAR (назовем его MyWorkflow.jar), который содержит MyMain.class, находится в своем собственном jar без папки lib , и есть еще один «модуль», который выполняет десять разных функций от запуска каскадного рабочего процесса. Этот мастер-модуль (давайте назовем этот MasterModule.jar) имеет модуль MyWorkflow, определенный как зависимость maven. Поэтому, когда кто-то пытается запустить
hadoop jar MasterModule.jar <options>
можно ожидать, что все jar-файлы в папке lib MasterModule.jar будут добавлены в classpath TaskTracker ... но Cascading обнаруживает, что MyMain.class принадлежит MyWorkflow.jar и не видит никакой папки lib в MyWorkflow.jar, поэтому вы начинаете видеть ClassNotFoundException ...!
Также обратите внимание, что зависимости папки lib не будут поддерживаться с CDH5.
Блог Cloudera