1

我在尝试 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 构建的,而 gobblin 库需要 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 的 LIBJARS 添加到lib/ 文件夹下的所有jar,以便作业使用那里提供的 2.3.0 版本(即 hadoop -yarn-api-2.3.0 用于上述错误中的 URL 类)。在那次改变之后,我仍然得到同样的错误。

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

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

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

感谢您的时间和帮助!

4

1 回答 1

0

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

使用 0.14.0 时出现什么错误?

于 2020-02-19T04:19:53.077 回答