我有两个Hadoop流媒体程序。
mapper (produces <k, v> pair)
reducer
当然,<k, v>
对会发送到stdout
。
我的问题是
如果v
中的<k, v>
非常大,它是否有效地在hadoop上运行?
我猜映射器发出的v
将是1G或更多(有时超过4G)。
答案 0 :(得分:1)
我认为这样的大小值会导致问题,因为在内存中操作它们是有问题的。如果确实需要这么大的值,可以将它们放入HDFS并使V成为文件的名称。在这种情况下您应该考虑的问题是这种方法不再起作用 - 您有副作用,例如来自失败的映射器。
答案 1 :(得分:0)
你是什么意思“当然,对发射到stdout”?
你的意思是说键值对的数量非常大吗?如果是,那么hadoop会有效地处理这个问题。
如果你的意思是坐着,v的大小非常大。因此,对于给定的密钥,发出的值是1到4 GB甚至更多。首先,您运行什么样的应用程序来生成如此大的值。是否可以分解钥匙?
回到主要观点:Hadoop效率不高。取决于用例。 在大多数情况下,这将是非常低效的。