我正在尝试使用Mahout来计算包含200万行的矩阵中的行相似度。这个矩阵是根据排名为400的mahout ssvd的输出生成的,然后使用mahout rowid以适当的格式为RowSimilarityJob转换它。
当作业到达CooccurrencesMapper时,它开始为列中的每对非零元素发出一个向量。几个小时后,工作开始失败。
我尝试使用--maxObservationsPerColumn参数,但如果我将其设置为过低的值,则结果不正确,如果我将其设置为高于30000的值则失败。
问题在于,对于每个地图输入,它会发出~10GB的值。
我这样调用这个工作:
mahout / bin / mahout rowsimilarity -Dmapred.reduce.child.java.opts = -Xmx4G -Dmapred.map.child.java.opts = -Xmx4G -Dmapred.reduce.tasks = 20 -Dio.sort.mb = 1000 -Dio.sort.factor = 3 --tempDir test_row_similarity --input“UHalfSigma_matrix_400 / matrix” - -output“doc_lsa_similarity_test /” - numberOfColumns 400 --maxSimilaritiesPerRow 35 --maxObservationsPerColumn 50000 -tr 0.4 --similarityClassname SIMILARITY_COSINE -ow --excludeSelfSimilarity true
我使用3个节点的集群:
- cpu 12 core, RAM 64 GB, HDD 256GB
- cpu 12 core, RAM 128 GB, HDD 2 TB
- cp 8 core, RAM 24 GB, HDD 4 TB
感谢您的帮助