我需要計算ssvd。 對於50000 x 50000的矩陣,當減少到300x300庫(如ssvdlibc等)可以在不到3分鐘內計算出來;mahout ssvd工作性能
我想做大數據,嘗試使用mahout。首先,我嘗試在我的小數據集(即50000 x 50000)上本地運行它,但完成這項簡單工作需要32分鐘,使用大約5,5GB的磁盤空間來存儲溢出文件,導致帶有8GiB RAM的intel i5和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
我有HDFS複製設置爲1。我已經改變了我的JobTracker從地方到: mapred.job.tracker 本地主機:54311 現在我mapred.map.tasks財產生效。目前正在四核心中的一兩個核心上工作 - 稍好一點,但性能不佳,執行時間大約需要5分鐘左右 –
Bt-job是造成大量溢出的原因之一。我會嘗試將io.sort.mb修改爲一些很大的值,比如5000,看看是否有幫助 –
我希望hadoop有一些自動功能來在選定的範圍內更改選定的配置變量並運行速度測試。這對於使羣集正常工作非常有用 – greedybuddha