【发布时间】:2013-10-04 09:21:46
【问题描述】:
我是 hadoop 的新手。现在我正在使用 avro 开发 MapR 程序。 当针对本地hadoop(1个reducer)运行时,程序的逻辑是正确的, 但是我遇到了一个针对 8 节点 CDH 集群的问题,即 64 个减速器中只有一个 真正做好工作。 其他 63 个 reducer 的日志显示,他们没有从 mapper 收到任何数据。
我的数据处理并不复杂,其实很简单。 下面是 Mapper 和 Reducer 的签名。
public static class MyAvroMap extends Mapper<AvroKey<NetflowRecord>, NullWritable,
Text, AvroValue<NetflowRecord>> {}
public static class MyAvroReduce extends Reducer<Text, AvroValue<NetflowRecord>,
AvroKey<NetflowRecord>, NullWritable> {}
Map 的输出键来自 NetflowRecord 的字符串字段。 选择随机播放键或其他关于 avro 的问题是否有任何问题?先谢谢了。
更新:在上面的实验中,我使用了一个 7GB 的 avro 文件,并且只有一个 reducer 工作。 当我将输入量增加到数百 GB 时,其他减速器也开始工作。 据我所知,Hadoop 默认的文件拆分限制为 64MB。但为什么它在处理 avro 数据时表现不同呢?
顺便说一句:如果有,我们不会更改 CDH 的默认文件拆分参数。
贾敏
【问题讨论】:
-
你的记录需要覆盖hashCode。