这是一个新手问题
我有一个hadoop设置,并考虑使用Giraph或Hama基于图形的计算。我有一个大文件,格式为
3 43个73 85 6
,其中每一列表示顶点,每一行表示边。对于普通程序,我将整个文件读入像
这样的格式。3:(4、7、8)5: [6]
意味着顶点3的边是4 7 8 5的边是6。
如何在Hadoop中处理大文件的这种情况?像这样的阅读意味着将整个内容加载到RAM?在Hadoop中最好的方法是什么?
Hadoop做水平并行。对于一个大的输入文件,它将把输入分成一些较小的文件(显然是由用户定义的)。然后将较小的集合发送到不同的节点。这样您就不需要在内存有限的单个机器上加载大的输入文件。在此之前,hadoop框架做了大量的工作。
之后,您需要实现业务/域逻辑。你必须从你的输入集合中生成一些键值对。之后,Hadoop将把所有的键值对发送到下一个阶段。它会给你所有唯一的键值对,你必须合并它们才能得到最终的输出。
要注意。1) Hadoop是MAP-REDUCE范式的框架。2)大的输入文件并不总是意味着使用hadoop对你的问题是实用的。如果你的问题没有一些并行性,hadoop可能帮不了你。