2013-05-20 32 views
0

我需要計算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

回答

1

那麼首先我會驗證它是在並行運行,確保hdfs複製設置爲「1」,並且通常檢查你的參數。只有看到一個核心被使用絕對是一個問題!

但是!

緩慢的問題可能不會完全消失,您可以通過適當的配置顯着加速它,但是在一天結束時,hadoop模型不會超越優化的共享內存模型庫在一臺電腦上。

hadoop/mahout的威力在於大數據,老實說50k x 50k仍然處於相當小的領域,在一臺計算機上很容易管理。從本質上講,Hadoop可以提高可擴展性。所以雖然它可能不會以50000 x 50000超出其他兩個,但嘗試讓它們在300000 x 300000的工作時使用Hadoop,而您恰好坐在分佈式羣集上。

+0

我有HDFS複製設置爲1。我已經改變了我的JobTracker從地方到: mapred.job.tracker 本地主機:54311現在我mapred.map.tasks財產生效。目前正在四核心中的一兩個核心上工作 - 稍好一點,但性能不佳,執行時間大約需要5分鐘左右 –

+0

Bt-job是造成大量溢出的原因之一。我會嘗試將io.sort.mb修改爲一些很大的值,比如5000,看看是否有幫助 –

+0

我希望hadoop有一些自動功能來在選定的範圍內更改選定的配置變量並運行速度測試。這對於使羣集正常工作非常有用 – greedybuddha