我是hadoop的新手。现在我正在使用 avro 开发 MapR 程序。当针对本地hadoop(1个reducer)运行时程序的逻辑是正确的,但是我在8节点CDH集群上遇到了一个问题,即64个reducer中只有一个真正在做作业。其他 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 文件,只有一个减速器工作。当我将输入量增加到数百 GB 时,其他减速器也开始工作。据我所知,Hadoop 默认的文件拆分限制为 64MB。但是,为什么它在处理 avro 数据时表现不同呢?
顺便说一句:如果有,我们不会更改 CDH 的默认文件拆分参数。
贾敏