2011-02-18 57 views
0

我有两个用于Hadoop流式传输的程序。Hadoop Streaming with large size of stdout

mapper (produces <k, v> pair) 
    reducer 

当然,<k, v>对发射到stdout

我的问题是

如果v<k, v>是非常大的,它在Hadoop有效地运行?

我猜v由mapper发出的将是1G或更多(有时超过4G)。

回答

1

我认为这样大小的Value会导致一个问题,因为在内存中操作它们是有问题的。如果你确实需要这么大的值,你可以把它们放到HDFS中,并使V成为文件的名字。在这种情况下,您应该考虑的问题是,这种方法不再有用 - 例如来自失败的映射器的副作用。

0

你是什么意思“当然,对发射到标准输出”?

你的意思是说关键值对的数量非常大吗?如果是的话,那么hadoop就能有效地处理这个问题

如果你的意思是说v的大小非常大。所以,对于一个给定的密钥,发射的值是1到4 GB甚至更多。首先你运行什么样的应用程序来生成这么大的值。是否有可能分手钥匙?

回到要点:Hadoop效率不高。取决于用例。 在大多数情况下,这会非常低效。