Cloudera CDH4如何与Avro配合使用?

凯撒0301

我正在开发一些MapR程序。它们通常在我的本地计算机上的Apache hadoop上进行编码和测试,并且打包的jar(带有依赖项)被上载到运行Cloudera CDH4(v4.4.1)的集群中。对于这两种情况,我都有不同的pom.xml文件来制作软件包。

现在,我正在使用Apache Avro序列化数据,并且涉及当前的稳定版本1.7.5。在本地模式下,我具有avro-mapred pom.xml依赖项

<dependency>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-mapred</artifactId>
    <version>1.7.5</version>
</dependency>

它在Apache hadoop上运行良好。

在集群模式下,对于pom.xml依赖项,将按照CDH4 doc的建议附加一个分类器标记

<classifier>hadoop1</classifier>

但是,如果没有hadoop1或hadoop2,都将发生错误。对于hadoop1标签:

Error running child : java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected
at org.apache.avro.mapreduce.AvroKeyOutputFormat.getRecordWriter(AvroKeyOutputFormat.java:87)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:597)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:444)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.Child.main(Child.java:262)

对于hadoop2标签,

Error running child : java.lang.NoSuchMethodError: org.apache.avro.generic.GenericData.createDatumWriter(Lorg/apache/avro/Schema;)Lorg/apache/avro/io/DatumWriter;
at org.apache.avro.mapreduce.AvroKeyRecordWriter.<init>(AvroKeyRecordWriter.java:53)
at org.apache.avro.mapreduce.AvroKeyOutputFormat$RecordWriterFactory.create(AvroKeyOutputFormat.java:78)
at org.apache.avro.mapreduce.AvroKeyOutputFormat.getRecordWriter(AvroKeyOutputFormat.java:104)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:597)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:444)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.Child.main(Child.java:262)

我正在使用MapR1中的mapreduce接口进行编程。我还猜想它与已安装的avro版本存在冲突,并且将与我们的群集管理员取得进一步联系。大家有什么想法吗?

贾明

肖恩·欧文(Sean Owen)

问题几乎可以肯定是,您正在针对与运行时完全不同的Hadoop版本进行开发。CDH 4.4具有“ MR1”和“ MR2”两种风格,默认为更新的“ MR2”。我认为您可能正在针对Hadoop 1.x发行版进行编译?您不需要针对CDH库进行编译(尽管这是最好的主意),但是如果我在这里,您至少需要针对Hadoop 2.x进行编译。

您的Avro很好,只是您随后无需指定“ hadoop1”。

或者,如果您确实打算使用MR1,则需要确保已在CDH 4.4中实际设置了MR1群集。这意味着安装在“ mapreduce”服务中而不是“ yarn”中,并使用名称中带有“ ...- mr1 -...”的Maven工件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Cloudera QuickStart Terminal中编写多行?

来自分类Dev

Cloudera CDH4:无法将主机添加到群集中,因为规范名称与主机名不一致

来自分类Dev

Cloudera CDH4上的Accumulo-启动组件时拒绝访问

来自分类Dev

Cloudera CDH VM默认HADOOP_HOME位置

来自分类Dev

如何通过cloudera tarball安装spark?

来自分类Dev

在Cloudera中使用Storm

来自分类Dev

Cloudera Impala:如何从HDFS块读取数据?

来自分类Dev

How to duplicate a cloudera impala table backed by avro?

来自分类Dev

如何复制由avro支持的cloudera impala表?

来自分类Dev

如何下载特定cloudera发行版的源代码?

来自分类Dev

无法通过Java API(Cloudera-CDH4.4.0)访问HDFS

来自分类Dev

CDH4将Cloudera Manager还原到现有群集

来自分类Dev

Apache演习可以与cloudera hadoop一起使用吗?

来自分类Dev

无法在Cloudera Quickstart VM 5.3.0中使用Cloudera Manager添加新服务

来自分类Dev

如何在Cloudera QuickStart Terminal中编写多行?

来自分类Dev

使用CDH4 + Cloudera Manager时将JDBC驱动程序放在哪里?

来自分类Dev

使用Cloudera Manager的哪个版本的CDH会自动安装JDK1.7?

来自分类Dev

Hadoop的cloudera发行版是否使用控制脚本?

来自分类Dev

Cloudera Impala:如何从HDFS块读取数据?

来自分类Dev

使用CDH(cloudera)有什么好处?

来自分类Dev

如何在Cloudera中的Cassandra中启用节俭?

来自分类Dev

将cloudera与docker-compose一起使用

来自分类Dev

使用Cloudera 5.9的Polybase

来自分类Dev

如何使用Cloudera Quickstart Docker容器执行MapReduce Job / JAR

来自分类Dev

如何从cloudera CDH发送颜色编码的警报?

来自分类Dev

在 AWS 上构建 Cloudera CDH 集群:实例和存储

来自分类Dev

如何在cloudera manager上配置flume服务?

来自分类Dev

如何使用 HUE 查找 CDH(包括 Apache Hadoop 的 Cloudera 发行版)版本

来自分类Dev

如何在 Cloudera 中安排/触发 Spark 作业?

Related 相关文章

  1. 1

    如何在Cloudera QuickStart Terminal中编写多行?

  2. 2

    Cloudera CDH4:无法将主机添加到群集中,因为规范名称与主机名不一致

  3. 3

    Cloudera CDH4上的Accumulo-启动组件时拒绝访问

  4. 4

    Cloudera CDH VM默认HADOOP_HOME位置

  5. 5

    如何通过cloudera tarball安装spark?

  6. 6

    在Cloudera中使用Storm

  7. 7

    Cloudera Impala:如何从HDFS块读取数据?

  8. 8

    How to duplicate a cloudera impala table backed by avro?

  9. 9

    如何复制由avro支持的cloudera impala表?

  10. 10

    如何下载特定cloudera发行版的源代码?

  11. 11

    无法通过Java API(Cloudera-CDH4.4.0)访问HDFS

  12. 12

    CDH4将Cloudera Manager还原到现有群集

  13. 13

    Apache演习可以与cloudera hadoop一起使用吗?

  14. 14

    无法在Cloudera Quickstart VM 5.3.0中使用Cloudera Manager添加新服务

  15. 15

    如何在Cloudera QuickStart Terminal中编写多行?

  16. 16

    使用CDH4 + Cloudera Manager时将JDBC驱动程序放在哪里?

  17. 17

    使用Cloudera Manager的哪个版本的CDH会自动安装JDK1.7?

  18. 18

    Hadoop的cloudera发行版是否使用控制脚本?

  19. 19

    Cloudera Impala:如何从HDFS块读取数据?

  20. 20

    使用CDH(cloudera)有什么好处?

  21. 21

    如何在Cloudera中的Cassandra中启用节俭?

  22. 22

    将cloudera与docker-compose一起使用

  23. 23

    使用Cloudera 5.9的Polybase

  24. 24

    如何使用Cloudera Quickstart Docker容器执行MapReduce Job / JAR

  25. 25

    如何从cloudera CDH发送颜色编码的警报?

  26. 26

    在 AWS 上构建 Cloudera CDH 集群:实例和存储

  27. 27

    如何在cloudera manager上配置flume服务?

  28. 28

    如何使用 HUE 查找 CDH(包括 Apache Hadoop 的 Cloudera 发行版)版本

  29. 29

    如何在 Cloudera 中安排/触发 Spark 作业?

热门标签

归档