我需要计算ssvd。对于50000 x 50000矩阵,当缩减到300x300时,ssvdlibc等库可以在不到3分钟内计算出来;
我想为大数据做这件事,尝试使用mahout。首先,我尝试在我的小数据集(即50000 x 50000)上本地运行它,但完成这项简单的工作需要32分钟,溢出文件占用了大约5.5gb的磁盘空间,导致我的intel i5(带8gib ram和ssd驱动器)冻结了几次。
我知道mahout和hadoop必须做很多额外的步骤来执行map reduce任务,但是性能的影响似乎很大。我想我一定是出了什么问题。
我已经阅读了一些hadoop和mahout文档,在配置文件中添加了一些参数,但是仍然非常慢。大多数情况下,它只使用一个cpu。
有人能告诉我我的设置有什么问题吗?它是否可以调整为简单的,一个mahine使用,只是为了看看什么寻找更大的部署?
我的配置文件:mapred-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>local</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx5000M</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>3</value>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>3</value>
</property>
<property>
<name>io.sort.factor</name>
<value>35</value>
</property>
</configuration>
core-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>file:///</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>file:///</value>
</property>
<!--
<property>
<name>fs.inmemory.size.mb</name>
<value>200</value>
</property>
<property>
<name>io.sort.factor</name>
<value>100</value>
</property>
-->
<property>
<name>io.sort.mb</name>
<value>200</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
我的工作是这样的:
mahout ssvd --rank 400 --computeU true --computeV true --reduceTasks 3 --input ${INPUT} --output ${OUTPUT} -ow --tempDir /tmp/ssvdtmp/
我还将hadoop配置为-xmx=4000m和mahout
1条答案
按热度按时间lzfw57am1#
首先,我要验证它是并行运行的,确保hdfs replication设置为“1”,并检查您的参数。只看到一个核心被使用绝对是一个问题!
但是!
速度慢的问题可能不会完全消失,通过适当的配置,您可能可以显著加快速度,但最终hadoop模型不会超过一台计算机上优化的共享内存模型库。
hadoop/mahout的强大功能是用于大数据,老实说,50k x 50k仍然是一个相当小的领域,在一台计算机上很容易管理。本质上,hadoop以速度换取可伸缩性。因此,虽然它可能无法以50000 x 50000胜过其他两个,但请尝试让它们在300000 x 300000上工作,而使用hadoop,您在分布式集群上的地位相当不错。