我有两个用于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)。
我有两个用于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)。
我认为这样大小的Value会导致一个问题,因为在内存中操作它们是有问题的。如果你确实需要这么大的值,你可以把它们放到HDFS中,并使V成为文件的名字。在这种情况下,您应该考虑的问题是,这种方法不再有用 - 例如来自失败的映射器的副作用。
你是什么意思“当然,对发射到标准输出”?
你的意思是说关键值对的数量非常大吗?如果是的话,那么hadoop就能有效地处理这个问题
如果你的意思是说v的大小非常大。所以,对于一个给定的密钥,发射的值是1到4 GB甚至更多。首先你运行什么样的应用程序来生成这么大的值。是否有可能分手钥匙?
回到要点:Hadoop效率不高。取决于用例。 在大多数情况下,这会非常低效。