Ошибка Flink: не удалось найти или загрузить основной класс

Я пытаюсь запустить эти тесты Flink: https://github.com/dataArtisans/flink-benchmarks< /а>

Я создал файл jar, используя maven с помощью этой команды:

mvn clean package -Pbuild-jar

Затем я пытаюсь запустить тест на кластере Flink с помощью этой команды:

./bin/flink run -c org.apache.flink.benchmark.WindowBenchmarks ~/flinkBenchmarks/target/flink-hackathon-benchmarks-0.1.jar

Я использовал параметр -c, чтобы добавить в путь к классам основной тест (WindowBenchmarks), который я хочу запустить.

Наконец, я получаю эту ошибку:

# JMH version: 1.19
# VM version: JDK 1.8.0_151, VM 25.151-b12
# VM invoker: /usr/lib/jvm/java-8-oracle/jre/bin/java
# VM options: -Dlog.file=/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/log/flink-user-client-mypc.log -Dlog4j.configuration=file:/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/conf/log4j-cli.properties -Dlogback.configurationFile=file:/home/user/flink-1.3.2/flink-dist/target/flink-1.3.2-bin/flink-1.3.2/conf/logback.xml -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
# Warmup: 10 iterations, 1 s each
# Measurement: 10 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
# Benchmark: org.apache.flink.benchmark.WindowBenchmarks.sessionWindow

# Run progress: 0.00% complete, ETA 00:04:00
# Fork: 1 of 3
Error: Could not find or load main class org.openjdk.jmh.runner.ForkedMain
<forked VM failed with exit code 1>
<stdout last='20 lines'>
</stdout>
<stderr last='20 lines'>
Error: Could not find or load main class org.openjdk.jmh.runner.ForkedMain
</stderr>

# Run complete. Total time: 00:00:00

Benchmark  Mode  Cnt  Score   Error  Units

The program didn't contain a Flink job. Perhaps you forgot to call execute() on the execution environment.

У меня нет опыта работы с Flink и Maven, поэтому я выясняю, чего не хватает. Моя первая мысль заключалась в том, что это ошибка отсутствия зависимостей, но они выглядят нормально. Какие-либо предложения?

Заранее спасибо!


person Orion Papadakis    schedule 21.06.2018    source источник
comment
Не могли бы вы проверить, содержится ли org.openjdk.jmh.runner.ForkedMain в банке?   -  person Chesnay Schepler    schedule 22.06.2018
comment
Хорошо, я мог бы воспроизвести его локально, даже если класс находится в банке.   -  person Chesnay Schepler    schedule 22.06.2018


Ответы (1)


flink-benchmarks — это репозиторий, содержащий наборы микротестов, предназначенных для работы на одной машине, а не в кластере. Функции main, определенные в различных классах (тестовых примерах), являются бегунами JMH, а не программами Flink. Таким образом, вы можете либо выполнить весь набор тестов (что занимает ~ 1 час):

mvn -Dflink.version=1.5.0 clean install exec:exec

или если вы хотите выполнить только один бенчмарк, лучше всего выполнить выбранную основную функцию вручную. Например, из вашей IDE (не забудьте выбрать flink.version, значение по умолчанию для свойства определено в pom.xml).

Существует также возможность выполнить один тест из консоли, но я не т пытался это в течение очень долгого времени.

person Piotr Nowojski    schedule 22.06.2018
comment
Спасибо Петр. Создатели бенчмарка говорят, что его можно запустить на кластере Flink. В предоставленных инструкциях в файле pom говорится, что для запуска эталонного теста в кластере вам необходимо сгенерировать файл jar, используя mvn clean package -Pbuild-jar в качестве первого шага. Затем вы вводите файл jar в кластер flink. Моя проблема на этом шаге, потому что кажется, что чего-то не хватает, но я не могу это найти. - person Orion Papadakis; 22.06.2018
comment
Пожалуйста. Однако я могу заверить вас, что это не было предполагаемым вариантом использования, поскольку случилось так, что я являюсь первоначальным создателем этих тестов вместе с Нико :) Этот pom, вероятно, был скопирован или создан скриптом, и поэтому он получился таким вводящий в заблуждение пом. Извините за это (этот проект был создан в рамках хакатона) - я уже исправил это и добавил соответствующий файл readme. - person Piotr Nowojski; 24.06.2018
comment
Спасибо за добавление readme, это ясно и полезно. Я хотел бы спросить, в какой точке файла pom фактически инициализируется flink и как вы его настроили. Я не могу найти кусок кода, делающий это. Я вижу, что Flink можно инициализировать только в классе jmh.Main, поскольку я не могу найти его где-либо еще в файле pom или во внутренней сборке и упаковке Maven. Вы изменили код jmh.Main для настройки flink? Большое спасибо! - person Orion Papadakis; 27.06.2018
comment
Извините за столь поздний ответ @OrionPapadakis, я только сейчас заметил ваш вопрос. Некоторые тесты в flink-benchmarks вообще не используют Flink, а настраивают некоторые тесты модулей/классов. Другие запускают приложения Flink, используя LocalExecutionEnvironment, что точно так же, как вы использовали бы для запуска приложения Flink на вашем локальном компьютере, не отправляя задание в кластер. - person Piotr Nowojski; 30.01.2019