【问题标题】:Error with KafkaHDFS example: java.lang.NoSuchMethodErrorKafkaHDFS 示例出错:java.lang.NoSuchMethodError
【发布时间】:2020-02-18 11:07:57
【问题描述】:

我在尝试 Kafka-HDFS 数据摄取示例时遇到问题。

我尝试了 0.10.0 和 0.14.0 版本。 对于 0.10.0 版本,我使用现成的分发版,对于 0.14.0 版本,我按照 README 文件中的说明自行构建(我在这里遇到的一个问题是 gradle 下载的 scala-library 是 不是依赖项中列出的那个,我必须手动下载 scala-library-2.11.8 并将其放在 lib/ 目录下)。

我使用了 hadoop 服务器版本 2.3.0(带有伪分布式单节点设置)和 3.2.1。我将 2.3.0 版本用作集群时遇到的一个问题是,从 apache hadoop 页面下载的版本是针对 32 位模式下的 java = 1.8,然后我得到关于堆栈保护等一些奇怪的错误。

不过,对于我的伪分布式单节点设置,我更喜欢使用 hadoop 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 传递给 hadoop jar all 的 LIBJARS 添加到 lib/ 文件夹下的 jar,以便作业使用那里提供的 2.3.0 版本(即上面错误中 URL 类的 hadoop-yarn-api-2.3.0 )。 在那次改变之后,我仍然得到同样的错误。

注意事项: 1. HADOOP_HOME 和 HADOOP_BIN_DIR 仅在调用 bin/gobblin-mapreduce.sh 之前设置,指向我的 hadoop 3.2.1 安装。

您对解决这个问题有什么建议吗?如果无法使用 hadoop 版本 3.2.1 进行集群设置,我可以使用什么 2.X 版本(不需要准备完整的开发环境来构建 java 1.8 64 位版本:))???

或者,你们中的任何人有没有成功尝试过页面中的示例,您能否列出使用的版本?

感谢您的时间和帮助!

【问题讨论】:

    标签: gobblin


    【解决方案1】:

    似乎您有混合版本的 hadoop 依赖项。 org.apache.hadoop.yarn.api.records.URL 来自 2+,但 YARNRunner 来自 3+。

    使用 0.14.0 时出现什么错误?

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 2023-03-18
      • 2017-05-02
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      相关资源
      最近更新 更多