mahout ssvd工作表现

时间:2013-05-20 19:22:56

标签: hadoop mahout

我需要计算ssvd。 对于50 000 x 50 000矩阵,当减少到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>

核心-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和mahout -Xmx = 4000m

1 个答案:

答案 0 :(得分:1)

首先,我要验证它是并行运行的,确保将hdfs复制设置为“1”,并且通常只检查你的参数。只看到一个核心使用肯定是一个问题!

但是!

缓慢的问题可能不会完全消失,你可能能够通过适当的配置显着加快速度,但是在一天结束时,hadoop模型不会超过优化的共享内存模型库。一台电脑。

hadoop / mahout的强大功能适用于大数据,老实说50k x 50k仍处于相当小的范围内,可以在一台计算机上轻松管理。从本质上讲,Hadoop可以提高速度以实现可扩展性。因此,虽然它可能不会超过50000 x 50000的其他两个,但是尝试让它们在300000 x 300000上工作,而使用Hadoop时,你可以在分布式集群上工作。