我正在使用hadoop、hive和mahout技术。我正在hadoop中使用mapreduce作业处理一些数据,以便在mahout中进行推荐。我想知道上面模型的正确工作流程,即当hadoop处理数据并将其存储在HDFS中时,mahout将如何使用这些数据,mahout如何获得这些数据,在mahout处理这些数据后,mahout会将这些推荐数据放在哪里?注意:我正在使用hadoop处理数据,我的同事正在另一台机器上使用mahout。希望你答对了我的问题。
如果您想从mahout中的hadoop-hdfs获取输入,那么您必须执行以下步骤-
通过命令将输入文件首次复制到hdfs
hadoop dfs -copyFromLocal input /
然后运行mahout命令进行推荐,该命令从hdfs获取输入并将输出保存在hdfs中
假设您的JAVA_HOME设置正确,并且Mahout安装正确,我们就可以配置语法了。输入以下命令:
$ mahout recommenditembased -s SIMILARITY_LOGLIKELIHOOD -i hdfs://localhost:9000/inputfile -o hdfs://localhost:9000/output --numRecommendations 25
运行该命令将执行一系列作业,这些作业的最终产品将是存储到命令语法中指定的目录中的输出文件。输出文件将包含两列:userID和itemID和分数的数组。
这一切都取决于Mahout的运行配置。Mahout可以在本地模式或分布式模式下运行。我们需要设置"MAHOUT_LOCAL"变量。
MAHOUT_LOCAL set to anything other than an empty string to force
mahout to run locally even if
HADOOP_CONF_DIR and HADOOP_HOME are set
例如,如果我们不配置MAHOUT_LOCAL并尝试执行任何MAHOUT算法,那么您可以在控制台中看到下面的内容。
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop,
在分布式模式下运行时,Mahout将所有路径视为HDFS路径。因此,即使在Mahout处理完您的数据后,最终输出也将存储在HDFS中。