Ошибка: не удалось найти или загрузить основной класс org.apache.flume.node.Application — установите flume на версии 1.2.1 для Hadoop.

Я построил кластер Hadoop, в котором 1 главный-ведомый узел, а другой — подчиненный. А теперь я хочу построить канал, чтобы получить весь журнал кластера на главной машине. Однако, когда я пытаюсь установить flume из архива, я всегда получаю: Ошибка: не удалось найти или загрузить основной класс org.apache.flume.node.Application Итак, пожалуйста, помогите мне найти ответ или лучший способ установить flume на моем кластере. огромное спасибо!


person user3546443    schedule 03.06.2014    source источник


Ответы (7)


Это в основном из-за FLUME_HOME..

Попробуйте эту команду

$ сбросить FLUME_HOME

person Ganesh Gaxy    schedule 12.09.2014
comment
Я играл с песочницей Hortonworks и использовал примеры из Hadoop Definitive Guide. Этот комментарий избавил меня от многих проблем при попытке выполнить пример spooldir из книги. Спасибо! - person Hegi; 09.08.2018

Я знаю, что для этого вопроса прошел почти год, но я его видел!

Когда вы устанавливаете свой agnet с помощью sudo bin/flume-ng.... обязательно укажите файл, в котором находится конфигурация агента.

--conf-file flume_Agent.conf -> -f conf/flume_Agent.conf

Это помогло!

person BenB    schedule 31.01.2015

похоже, что вы запускаете flume-ng в папке /bin flume после сборки в /flume-ng-dist/target/apache-flume-1.5.0.1-bin /apache-flume-1.5.0.1-bin запустите flume-ng в этом

person NguyenKien    schedule 05.09.2014

Я полагаю, вы пытаетесь запустить flume из cygwin на окнах? Если это так, то у меня была аналогичная проблема. Проблема может быть связана со скриптом flume-ng.

Найдите следующую строку в bin/flume-ng:

 $EXEC java $JAVA_OPTS $FLUME_JAVA_OPTS "${arr_java_props[@]}" -cp "$FLUME_CLASSPATH" \
  -Djava.library.path=$FLUME_JAVA_LIBRARY_PATH "$FLUME_APPLICATION_CLASS" $*

и замените его на это

$EXEC java  $JAVA_OPTS $FLUME_JAVA_OPTS "${arr_java_props[@]}" -cp `cygpath -wp "$FLUME_CLASSPATH"` \
  -Djava.library.path=`cygpath -wp $FLUME_JAVA_LIBRARY_PATH` "$FLUME_APPLICATION_CLASS" $*

Обратите внимание, что пути были заменены каталогами Windows. Java не сможет найти пути к библиотекам из путей cygdrive, и нам придется преобразовать их в правильные пути Windows, где это применимо.

person abinand    schedule 12.01.2015

Возможно, вы используете исходные файлы, вам сначала следует скомпилировать исходный код и сгенерировать двоичный код, а затем внутри каталога двоичных файлов вы можете выполнить: bin/flume-ng agent --conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n agent1. Вы можете следить за всей этой информацией: https://cwiki.apache.org/confluence/display/FLUME/Getting+Started

person Kehe CAI    schedule 30.04.2015
comment
Добро пожаловать в СО. Спасибо за ответ на вопрос. К вашему сведению, встроенный код обычно форматируется с помощью обратных кавычек: ‹код›` код ` ‹/код› должен выглядеть как code - person Richard Erickson; 30.04.2015

У меня была такая же проблема раньше, это просто из-за того, что FLUME_CLASSPATH не установлен

person silverbull    schedule 09.11.2015

лучший способ отладки — просмотреть запущенную команду java и убедиться, что flume lib включена в CLASSPATH (-cp),

Как и в следующей команде, он ищет /lib/*, где находятся flume-ng-*.jar, но это неверно, потому что в /lib ничего нет, в этой строке -cp '/staging001/Flume/server/conf://lib/*:/lib/*'. Должно быть ${FLUME_HOME}/lib.

usr/lib/jvm/java-1.8.0-ibm-1.8.0.3.20-1jpp.1.el7_2.x86_64/jre/bin/java -Xms100m -Xmx500m $'-Dcom.sun.management.jmxremote\r' \
-Dflume.monitoring.type=http \
-Dflume.monitoring.port=34545 \
-cp '/staging001/Flume/server/conf://lib/*:/lib/*' \
-Djava.library.path= org.apache.flume.node.Application \
-f /staging001/Flume/server/conf/flume.conf -n client

Итак, если вы посмотрите на flume-ng скрипт, Есть установка FLUME_CLASSPATH, которая если отсутствует, то это установка на основе FLUME_HOME.

# prepend $FLUME_HOME/lib jars to the specified classpath (if any)
if [ -n "${FLUME_CLASSPATH}" ] ; then
  FLUME_CLASSPATH="${FLUME_HOME}/lib/*:$FLUME_CLASSPATH"
else
  FLUME_CLASSPATH="${FLUME_HOME}/lib/*"
fi

Поэтому убедитесь, что установлена ​​любая из этих сред. С набором FLUME_HOME (у меня systemd)

Environment=FLUME_HOME=/staging001/Flume/server/

Вот рабочий java exec.

/usr/lib/jvm/java-1.8.0-ibm-1.8.0.3.20-1jpp.1.el7_2.x86_64/jre/bin/java -Xms100m -Xmx500m \
$'-Dcom.sun.management.jmxremote\r' \
-Dflume.monitoring.type=http \
-Dflume.monitoring.port=34545 \
-cp '/staging001/Flume/server/conf:/staging001/Flume/server/lib/*:/lib/*' \
-Djava.library.path= org.apache.flume.node.Application \
-f /staging001/Flume/server/conf/flume.conf -n client
person prayagupd    schedule 07.12.2016