我是一名学生,正在尝试对一个大型数据集使用一些机器学习算法。我们的训练集中有大约1.4亿条记录(目前存储在Postgresql表中),并且有五个表,每个表大约有600万条记录,展示了主键-外键关系。
我们只有两台机器,配置如下:1) 6GB内存,第二代i5处理器2) 8GB内存,第二代i7处理器
我们现在计划在进行统计分析之前将它们分成逻辑分组,因为周转时间相当长。
1) 我应该将它们分成Postgresql中的单独表,然后使用MATLAB或R进行编程吗?2) 我应该通过移植数据库使用Hadoop和HBase吗?3) 我应该结合使用它们(即)根据逻辑组分解它们并导入Postgresql数据库,同时为分析设置Hadoop+HBase,并根据需要的算法使用它吗?
谢谢
回答:
很难相信在这样小的集群中Hadoop会有效。如果你能在没有它的情况下有效地并行化任务——几乎可以肯定会更有效。
我会考虑的另一个因素是——你的学习过程中的迭代时间是多少。如果一次迭代需要几十秒——那么Hadoop作业的开销(大约30秒)将太大。
你从Hadoop中能得到的是有效的外部并行排序——这就是洗牌阶段。如果你需要它——考虑使用Hadoop。
请注意,一般来说,将关系模式移植到HBase并不容易——因为不支持连接操作。