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