【问题标题】:Automate standard Mahout recommender自动化标准 Mahout 推荐器
【发布时间】:2016-07-29 17:15:06
【问题描述】:

我对 Mahout/Hadoop 环境相当陌生,所以如果这个问题是微不足道的,我深表歉意,但是我还没有找到任何直接的答案。

有一个带有 Mahout 的 EMR 集群,我可以在其中提交以下标准推荐作业:

mahout recommenditembased --input s3a://input-bucket/ratings_small.csv 
--output s3a://output-bucket/out/ --numRecommendations 2 
--similarityClassname SIMILARITY_COSINE

一切都很好,但它需要我通过 SSH 连接到主节点。

现在我正在考虑自动执行此操作,以便专用 Lambda 函数向 EMR 提交一个步骤并忘记它。最简单的方法是什么?是否可以在不使用 Java 编写整个推荐应用程序的情况下将其作为 Hadoop 的 JAR 步骤提交?

----- 2016 年 4 月 10 日更新 ------

在深入研究之后,最简单的选项(至少对我而言)原来是 EMR 集群上的“自定义 JAR”作业,具有以下参数:

  1. 名称:任意步骤名称

  2. JAR 位置:/usr/lib/mahout/mahout-mr-0.12.2-job.jar

  3. 参数:

    org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 
    --input s3a://your-bucket/input/ 
    --output s3a://your-bucket/output/ 
    --similarityClassname SIMILARITY_EUCLIDEAN_DISTANCE 
    --tempDir temp/random_guid/
    
  4. 对失败的操作 - 继续。

显然,您也可以通过 AWS CLI 或 SDK 完全以编程方式提交上述作业。

注意:我在参数中使用了--tempDir,因为每次执行推荐器时,Mahout都会在HDFS中创建一个临时目录(默认为temp/)。但是,Mahout 不会在计算完成后删除该目录。因此,如果您连续提交 2 个推荐人作业,则第二个将失败并出现类似于

的错误
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory temp/preparePreferenceMatrix/itemIDIndex already exists 

当我以编程方式提交推荐工作时,我决定为每个工作使用带有随机 guid 的不同临时目录。或者,您可以在提交新目录之前手动删除由上一个作业创建的临时目录。

【问题讨论】:

    标签: hadoop aws-lambda amazon-emr mahout-recommender


    【解决方案1】:

    最简单的方法是使用非常适合自动化的 EMR 数据管道模板。

    【讨论】:

      【解决方案2】:

      这取决于这个集群是否会保持一段时间? AWS Data Pipeline 确实是为单次使用集群而设计的。对于需要将作业安排为定期运行的长时间运行的集群,它的效果并不理想。

      如果您希望它定期运行,那么您可以考虑使用常规 EMR 集群,然后使用 Oozie 来安排您的作业。在这里,您需要创建一个包含所有 Mahout 内容的 jar。

      最后,如果您发现想要缩小和扩展集群以完成更大和更小的作业,您可以使用调整大小工具,让您可以使用不支持开箱即用自动扩展的 EMR 集群来实现此目的,看看这篇文章

      http://www.lopakalogic.com/articles/hadoop-articles/dynamically-resize-emr/

      源代码在 Github 上,文章链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 1970-01-01
        • 2014-09-21
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多