公司版Mahoutjava
開源Mahout算法
1. 下載開源mahoutapache
http://archive.apache.org/dist/mahout/babel
推薦用mahout 0.8版本oop
2. 配置ui
解壓縮後編輯mahout-distribution-0.8/bin/mahout文件this
HADOOP_CONF_DIR='/home/work/hadoop-opensource/confurl
HADOOP_HOME='/home/work/hadoop-opensource'spa
3. 運行命令orm
sh mahout-distribution-0.8/bin/mahout
返回結果是參數說明,按照你的需求配置參數便可。
示例代碼
1. id只支持[0, 2^32-1]的正整數
mahout的輸入userid、itemid是long型的,但內部會將id轉成int型。因此只支持的32位無符號int的範圍,即取值範圍[0, 2^32-1]的數。
因此若是id類型是baiduid、cuid、url的話,須要先將id作32位簽名。
2. OutOfMemoryError 內存不足錯誤
緣由是:mahout在計算協同矩陣前有一輪job countObservations,它使用一個reduce統計用戶數量,並且是用HashMap存儲,致使數據量稍大,內存就超限。
可是在後續的計算中countObservations數據並無使用到,這是一輪無用且致使致命錯誤的任務。
解決辦法是使用mahout0.8,此坑只在mahout0.9中出現。
3. 另外一種OutOfMemoryError 內存不足錯誤
即便在mahout0.8,也存在一些使用內存存儲hashmap的狀況,致使數據量大時oom
recommenditembased和itemsimilarity的第四輪job normsAndTranspose,map階段分別用hashmap存儲了每一個item的norm、nonZeroEntries(非0評分用戶數)、maxValues(最大pref)。
輸入數據200G,item數3500萬,oom。
解決辦法只能是調大內存、調大map數。