hadoop - Mahout RecommenderJob 没有收敛

标签 hadoop mahout mahout-recommender

这是我的第一篇 SO 帖子,所以如果我错过了任何重要的事情,请告诉我。我是 Mahout/Hadoop 初学者,正在尝试组装一个分布式推荐引擎。

为了模拟在远程集群上工作,我在我的机器上设置了 hadoop 以与 Ubuntu VM(使用 VirtualBox)进行通信,该 VM 也位于我的机器上,并安装了 hadoop。此设置似乎运行良好,我现在正尝试在(非常!)小型试验数据集上运行 Mahout 的“RecommenderJob”作为测试。

输入包含一个 .csv 文件(保存在 hadoop dfs 上),其中包含大约 50 个用户首选项,格式为:userID, itemID, preference ... 和我正在运行的命令是:

hadoop jar /Users/MyName/src/trunk/core/target/mahout-core-0.8-SNAPSHOT-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.input.dir=/user/MyName/Recommendations/input/TestRatings.csv -Dmapred.output.dir=/user/MyName/Recommendations/output -s SIMILARITY_PEARSON_CORELLATION

其中 TestRatings.csv 是包含首选项的文件,output 是所需的输出目录。

起初作业看起来运行良好,我得到以下输出:

12/12/11 12:26:21 INFO common.AbstractJob: Command line arguments: {--booleanData=[false], --endPhase=[2147483647], --maxPrefsPerUser=[10], --maxPrefsPerUserInItemSimilarity=[1000], --maxSimilaritiesPerItem=[100], --minPrefsPerUser=[1], --numRecommendations=[10], --similarityClassname=[SIMILARITY_PEARSON_CORELLATION], --startPhase=[0], --tempDir=[temp]}
12/12/11 12:26:21 INFO common.AbstractJob: Command line arguments: {--booleanData=[false], --endPhase=[2147483647], --input=[/user/Naaman/Delphi/input/TestRatings.csv], --maxPrefsPerUser=[1000], --minPrefsPerUser=[1], --output=[temp/preparePreferenceMatrix], --ratingShift=[0.0], --startPhase=[0], --tempDir=[temp]}
12/12/11 12:26:21 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
12/12/11 12:26:21 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/12/11 12:26:22 INFO input.FileInputFormat: Total input paths to process : 1 
12/12/11 12:26:22 WARN snappy.LoadSnappy: Snappy native library not loaded
12/12/11 12:26:22 INFO mapred.JobClient: Running job: job_local_0001
12/12/11 12:26:22 INFO mapred.Task:  Using ResourceCalculatorPlugin : null
12/12/11 12:26:22 INFO mapred.MapTask: io.sort.mb = 100
12/12/11 12:26:22 INFO mapred.MapTask: data buffer = 79691776/99614720
12/12/11 12:26:22 INFO mapred.MapTask: record buffer = 262144/327680
12/12/11 12:26:22 INFO mapred.MapTask: Starting flush of map output
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new compressor
12/12/11 12:26:22 INFO mapred.MapTask: Finished spill 0
12/12/11 12:26:22 INFO mapred.Task: Task:attempt_local_0001_m_000000_0 is done. And is in the process of commiting
12/12/11 12:26:22 INFO mapred.LocalJobRunner:
12/12/11 12:26:22 INFO mapred.Task: Task 'attempt_local_0001_m_000000_0' done.
12/12/11 12:26:22 INFO mapred.Task:  Using ResourceCalculatorPlugin : null
12/12/11 12:26:22 INFO mapred.ReduceTask: ShuffleRamManager: MemoryLimit=1491035776, MaxSingleShuffleLimit=372758944
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new decompressor
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new decompressor
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new decompressor
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new decompressor
12/12/11 12:26:22 INFO compress.CodecPool: Got brand-new decompressor
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Thread started: Thread for merging on-disk files
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Thread started: Thread for merging in memory files
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Thread waiting: Thread for merging on-disk files
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Need another 1 map output(s) where 0 is already in progress
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Thread started: Thread for polling Map Completion Events
12/12/11 12:26:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Scheduled 0 outputs (0 slow hosts and0 dup hosts)
12/12/11 12:26:23 INFO mapred.JobClient:  map 100% reduce 0%
12/12/11 12:26:28 INFO mapred.LocalJobRunner: reduce > copy >
12/12/11 12:26:31 INFO mapred.LocalJobRunner: reduce > copy >
12/12/11 12:26:37 INFO mapred.LocalJobRunner: reduce > copy > 

但是最后三行无限重复(我把它放了一夜......),两行:

12/12/11 12:27:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Need another 1 map output(s) where 0 is already in progress
12/12/11 12:27:22 INFO mapred.ReduceTask: attempt_local_0001_r_000000_0 Scheduled 0 outputs (0 slow hosts and0 dup hosts)

每十二行重复一次。

我不确定我的输入是否有问题,或者试验数据的小规模是否把事情搞砸了。任何有关解决此问题的最佳方法的帮助和/或建议将不胜感激。

附注我试图按照 https://www.box.com/s/041rdjeh7sny128r2uki 中的说明进行操作

最佳答案

这实际上是一个 Hadoop 或集群问题。它正在等待未到来的映射器输出。在映射阶段寻找更早的失败。

关于hadoop - Mahout RecommenderJob 没有收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13819887/

相关文章:

hadoop - 没有 hadoop 但有其他 MR 实现的 mahout

java - 使用 MAHOUT 使用不同的数据集进行测试和训练

hadoop - Hive 中的 JOIN 会触发 MapReduce 中的哪种类型的 JOIN?

xml - 为什么hadoop不提供XmlInputFormat?

hadoop - sparkSession/sparkContext 获取不到hadoop配置

apache-spark - Spark - 如何在生产中使用训练有素的推荐模型?

hadoop - 如何使用 Mahout/Hadoop 评估推荐系统

java - 向 Apache mahout 添加新方法

python - 从日期到字符串的 Pyspark 类型转换问题

hadoop - Hadoop-无法找到或加载主类org.apache.hadoop.hdfs.qjournal.server.JournalNode