Ошибка с примером KafkaHDFS: java .lang.NoSuchMethodError - PullRequest
1 голос
/ 18 февраля 2020

У меня возникли проблемы при тестировании примера приема данных Kafka-HDFS.

Я пробовал версии 0.10.0 и 0.14.0. Для версии 0.10.0 я использую готовый дистрибутив, а для версии 0.14.0 я сделал сборку самостоятельно, следуя инструкциям в файле README (одна проблема, с которой я здесь столкнулся, заключалась в том, что библиотека scala, загруженная gradle, была не тот, что указан в зависимостях, и мне пришлось вручную загрузить scala -library-2.11.8 и поместить его в каталог lib /).

Я использовал, имел oop версия сервера 2.3.0 (с псевдораспределенной настройкой одного узла) и 3.2.1. Одна проблема, которую я имею с версией 2.3.0, которую я использую в качестве кластера, состоит в том, что загруженный выпуск со страницы apache имел oop построен против java <1.8 в 32-битном режиме, тогда как библиотекам гоблинов требуется java> = 1.8, а затем я получаю некоторые странные ошибки, касающиеся охраны стека и т. Д.

Тем не менее, я предпочитаю go с has oop 3.2.1 для моей псевдораспределенной установки с одним узлом. Итак, я пошел, чтобы попробовать это. Используя готовый дистрибутив для 0.10.0 (gobblin-distribution-0.10.0.tar.gz), я следую инструкциям здесь: https://github.com/apache/incubator-gobblin/blob/gobblin_0.10.0/gobblin-docs/case-studies/Kafka-HDFS-Ingestion.md

, затем выполняю:

bin/gobblin-mapreduce.sh --conf ~/Gobblin/ap       ps/KafkaHDFSIngestionMapReduce/job_conf_dir/job.pull

И я получил эту ошибку в журнале gobblin-current.log:

2020-02-18 10:42:18 UTC ERROR [main] gobblin.runtime.AbstractJobLauncher  442 - Failed to launch and run job job_GobblinKafkaQuickStart_1582022486716: java.lang.NoSuchMethodError: org.apache.hadoop.yarn.api.records.URL.fromPath(Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/yarn/api/records/URL;
java.lang.NoSuchMethodError: org.apache.hadoop.yarn.api.records.URL.fromPath(Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/yarn/api/records/URL;
    at org.apache.hadoop.mapred.YARNRunner.setupLocalResources(YARNRunner.java:393)
    at org.apache.hadoop.mapred.YARNRunner.createApplicationSubmissionContext(YARNRunner.java:573)
    at org.apache.hadoop.mapred.YARNRunner.submitJob(YARNRunner.java:325)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:432)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1282)
    at gobblin.runtime.mapreduce.MRJobLauncher.runWorkUnits(MRJobLauncher.java:230)
    at gobblin.runtime.AbstractJobLauncher.runWorkUnitStream(AbstractJobLauncher.java:570)
    at gobblin.runtime.AbstractJobLauncher.launchJob(AbstractJobLauncher.java:417)
    at gobblin.runtime.mapreduce.CliMRJobLauncher.launchJob(CliMRJobLauncher.java:89)
    at gobblin.runtime.mapreduce.CliMRJobLauncher.run(CliMRJobLauncher.java:66)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at gobblin.runtime.mapreduce.CliMRJobLauncher.main(CliMRJobLauncher.java:111)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

Я попытался изменить bin / gobblin-mapreduce. sh и добавить в LIBJARS, которые Передано как -libjars для oop jar all jar-файлов в папке lib /, так что задания используют предоставленные там версии 2.3.0 (т.е. имели oop -yarn-api-2.3.0 для класса URL в ошибке выше). После этого изменения я все еще получаю ту же ошибку.

Примечания: 1. HADOOP_HOME и HADOOP_BIN_DIR устанавливаются только перед вызовом bin / gobblin-mapreduce. sh, которые указывают на мою установку oop 3.2.1.

Есть ли у вас какие-либо предложения по решению этой проблемы? Если использование oop версии 3.2.1 для настройки кластера невозможно, какую версию 2.X можно использовать (для этого не потребуется готовить полную среду разработки только для создания 64-разрядной сборки java 1.8 :) ) ???

Кроме того, кто-нибудь из вас успешно попробовал пример на странице и не могли бы вы перечислить используемые версии?

Спасибо за ваше время и помощь!

1 Ответ

0 голосов
/ 19 февраля 2020

Похоже, у вас смешанные версии с oop зависимостями. Орг. apache .had oop .yarn.api.records.URL происходит от 2+, а YARNRunner от 3+.

В чем ошибка при использовании 0.14.0?

...