Hadoop Writable接口(interface)依赖"public void write(DataOutput out)"方法。看起来好像是在DataOutput接口(interface)的后面,Hadoop使用了DataOutputStream,它在后台使用了一个简单的数组。

当我尝试在化简器的DataOutput中写入大量数据时,我得到:



看来系统无法分配所请求大小的连续数组。
显然,增加可用于 reducer 的堆大小无济于事-它已经为84GB(-Xmx84G)

如果无法减小需要序列化的对象的大小(当化简器通过组合对象数据来构造此对象时),我应该如何解决该问题?

最佳答案

我认为您应该使用 -Xms 例如 -Xms40G 而不是-Xmx84G

08-26 00:37