Amazon Elastic Map Reduce使用Apache Mahout计算建议

Apache Mahout是一个“可扩展的机器学习库”,其中包含各种单节点和分布式推荐算法的实现。 在我的上一篇博客文章中, 我描述了如何在单个节点上实现在线推荐系统来处理数据。 如果数据太大而无法放入内存(> 100M首选项数据点)怎么办? 然后我们别无选择,只能看一下Mahout的分布式推荐器实现!

分布式推荐器基于Apache Hadoop。 这是一项需要输入用户偏好列表,计算项目共现矩阵并为每个用户输出前K个建议的工作。 有关此博客如何工作以及如何在本地运行的介绍性博客,请参见此博客文章 。

我们当然可以在自定义的Hadoop群集上运行此作业,但是仅使用预先配置的作业(如EMR)会更快(且痛苦更少)。 但是,有一个小问题。 EMR上可用的最新Hadoop版本是1.0.3,其中包含Apache Lucene 2.9.4的jar。 但是,推荐器作业取决于Lucene 4.3.0,这将导致以下漂亮的堆栈跟踪:

2013-10-04 11:05:03,921 FATAL org.apache.hadoop.mapred.Child (main): Error running child : java.lang.NoSuchMethodError: org.apache.lucene.util.PriorityQueue.<init>(I)Vat org.apache.mahout.math.hadoop.similarity.cooccurrence.TopElementsQueue.<init>(TopElementsQueue.java:33)at org.apache.mahout.math.hadoop.similarity.cooccurrence.RowSimilarityJob$UnsymmetrifyMapper.
map(RowSimilarityJob.java:405)at org.apache.mahout.math.hadoop.similarity.cooccurrence.RowSimilarityJob$UnsymmetrifyMapper.
map(RowSimilarityJob.java:389)at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:771)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:375)at org.apache.hadoop.mapred.Child$4.run(Child.java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)at org.apache.hadoop.mapred.Child.main(Child.java:249)

如何解决呢? 好吧,我们“只是”需要在EMR Hadoop安装中更新Lucene。 我们可以为此使用引导操作 。 具体步骤如下:

  1. 下载lucene-4.3.0.tgz(例如从此处下载)并将其上传到S3存储桶中; 将文件公开。
  2. 将该脚本也上传到存储桶中; 称之为例如update-lucene.sh
    #!/bin/bash
    cd /home/hadoop
    wget https://s3.amazonaws.com/bucket_name/bucket_path/lucene-4.3.0.tgz
    tar -xzf lucene-4.3.0.tgz
    cd lib
    rm lucene-*.jar
    cd ..
    cd lucene-4.3.0
    find . | grep lucene- | grep jar$ | xargs -I {} cp {} ../lib

    该脚本将在Hadoop节点上运行,并将更新Lucene版本。 确保更改脚本并输入正确的存储桶名称和存储桶路径,以使其指向公共Lucene存档。

  3. mahout-core-0.8-job.jar到存储桶
  4. 最后,我们需要将输入数据上传到S3。 输出数据也将保存在S3上。
  5. 现在,我们可以开始设置EMR作业流程。 转到Amazon控制台上的EMR页面,并开始创建新的工作流程。 我们将使用“ Amazon Distribution” Hadoop版本,并使用“ Custom JAR”作为作业类型。

    2013-10-15_1230-1024x672

  6. “ JAR位置”必须指向我们上载Mahout jar的位置,例如s3n://bucket_name/bucket_path/mahout-0.8-job.jar (请确保将其更改为指向真实的存储桶!)。 至于jar参数,我们将运行RecommenderJob并使用对数似然性:
    org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 
    --booleanData 
    --similarityClassname SIMILARITY_LOGLIKELIHOOD 
    --output s3n://bucket_name/output 
    --input s3n://bucket_name/input.dat

    这也是指定S3上输入数据的位置以及应将输出写入何处的地方。

    2013-10-15_1232-1024x405

  7. 然后,我们可以选择要使用的计算机数量。 当然,这取决于输入数据的大小以及所需的结果速度。 这里主要要更改的是“核心实例组”计数。 2是测试的合理默认值。

    2013-10-15_1236-1024x532

  8. 我们可以保持高级选项不变
  9. 现在我们进入更重要的步骤之一:设置引导程序动作。 我们需要设置两个:
    • 内存密集型配置(否则您会很快看到一个OOM)
    • 我们的自定义update-lucene操作(路径应指向S3,例如s3://bucket_name/bucket_path/update-lucene.sh

    2013-10-15_1240-1024x622

就是这样! 现在,您可以创建并运行作业流程,在几分钟/几小时/几天之后,您将在S3上等待结果。

参考: Amazon Elastic Map Reduce可以通过 JCG合作伙伴 Adam Warski的Blog在Adam Warski博客上使用Apache Mahout计算建议 。

翻译自: https://www.javacodegeeks.com/2013/10/amazon-elastic-map-reduce-to-compute-recommendations-with-apache-mahout.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于element-ui实现table可配置化

写在前面 感谢 饿了么前端团队提供组件化框架elememt-ui&#xff0c;本文基础组件使用element-ui。 大背景 在开发一些系统过程中&#xff0c;使用table作数据展示在所难免。先来看看el-table组件。 非常简单易用的组件&#xff0c;根据提供的data数据&#xff0c;配置table…

一种思路,隐藏input标签,通过label关联

一种思路&#xff0c;隐藏input标签&#xff0c;通过label关联 <label class"btn btn-default btn-file">上传图片 <input hidden type"file" class"btn btn-default"></label>posted on 2018-07-09 16:59 .Tang 阅读(...)…

微信小程序 反编译

反编译处于技术学习角度&#xff0c;瞻仰大神代码。 使用工具 node mumu安卓模拟器获取小程序文件 小程序的代码压缩之后 会形成一个后缀为 wxapkg 的文件&#xff0c;下载到微信客户端打开mumu模拟器&#xff0c;安装微信登录之后&#xff0c;打开步步换小程序 &#xff0c;这…

麟龙指标通达信指标公式源码_通达信指标公式源码波段极限副图源码

做价值的传播者&#xff0c;一路同行&#xff0c;一起成长问题&#xff1a;怎样才能每天都收到这类文章&#xff01;答案&#xff1a;只需点击上方《通达信公式指标》{买卖公式}AA:(2*CHIGHLOW)/4;BB:AA-REF(C,12);CC:EMA(BB,13);DD:EMA(CC,2);EE:EMA(BB,34);FF:EMA(BB,55);GG:…

计算机系统备份的原则和策略,计算机系统数据备份机制与策略

计算机系统数据备份机制与策略20年第5 05期华中电力第 l卷 8计算机系统数据备份机制与策略耿煜(樊学院机械系&#xff0c;北襄樊襄湖 4 15 ) 4 03摘要&#xff1a;针对当今计算环境中不断增长的数据量&#xff0c;系统地分析、论述了完整的数据备份机制&#xff0c;出了相应的策…

用Java递增Map值的最有效方法–仅搜索一次键

这个问题可能被认为太基础了&#xff0c;但是在论坛上经常被问到。 在本文中&#xff0c;我将讨论一种仅在Map ONCE中搜索键的方法。 让我们首先来看一个例子。 假设我正在使用Map创建一个字符串频率列表&#xff0c;其中每个键是一个正在计数的String &#xff0c;值是一个In…

[译] 帮助你成为一名成功的 Web 开发工程师的 21 步

前言 随着 Web 开发的蓬勃发展&#xff0c;许多人都在问这样一个问题&#xff1a;我如何才能成为一名 Web 开发者&#xff1f;我认为这个问题不应该这样问&#xff0c;而应该是&#xff1a;我如何才能成为一名成功的 Web 开发者&#xff1f;这样的问题是很有必要的&#xff0c;…

小白_Unity引擎_Mathf

Ceil 1 //向上取值&#xff0c;向大取值 2 Debug.Log(Mathf.Ceil(0.1f)); //1 3 Debug.Log(Mathf.Ceil(0.9f));//1 4 Debug.Log(Mathf.Ceil(-0.1f));//0 5 Debug.Log(Mathf.Ceil(-0.9f));//0 Floor 1 //向下取值&#xff0c;向…

循环卷积和周期卷积的关系_基于单口RAM读写的卷积电路(下)

这是迟到很久的卷积电路verilog设计的下篇。。。你看我还有机会吗。。。上回我们给出系统的层次结构、卷积计算模块以及用于数据缓存的fifo模块&#xff0c;今天我们首先回顾一下上一次的关键内容。系统结构回顾RTL代码文件可以分为结构如下所示 ~|--top_conv_tb.v|--top_conv.…

浅析 PHP 中的 Generator

浅析 PHP 中的 Generator Miss Wang php开发案例 前天 何为 Generator 从 PHP 5.5 开始&#xff0c;PHP 加入了一个新的特性&#xff0c;那就是 Generator&#xff0c;中文译为生成器。生成器可以简单地用来实现对象的迭代&#xff0c;让我们先从官方的一个小例子说起。 xrange…

哈师大计算机等级考试,哈尔滨师范大学教务处

阳光高考网 小编整理分享http://jwc.hrbnu.edu.cn/哈尔滨师范大学教务处教务管理系统 哈尔滨师范大学教务平台 学校前身是1946年我党在东北解放区建立..点击查看http://jwc.hrbnu.edu.cn/哈尔滨师范大学教务处教务管理系统 重点支持建设的百所中西部高校之一。http://www.17xue…

Spring MVC应用程序中的Thymeleaf模板布局,无扩展

在使用JSP / JSTL和Apache Tiles几年之后&#xff0c;我开始为我的Spring MVC应用程序发现Thymeleaf。 Thymeleaf是一个非常出色的视图引擎&#xff0c;尽管目前缺乏良好的IntelliJ&#xff08;投票&#xff1a;http: //youtrack.jetbrains.com/issue/IDEABKL-6713 &#xff09…

注意安全!XSS 和 XSRF

[Tips] 本文是从 jianshu 平台重新修改编辑后移植来的&#xff0c;比上一版本做了些修订。 最近在看一些关于网络安全的问题&#xff0c;当然许多是跟前端相关的&#xff0c;包括且不局限于xss和xsrf 了&#xff0c;那么小编就结合最近的学习实践谈一些粗浅的认识。&#xff08…

go分析和kegg分析_干货预警:3分钟搞定GO/KEGG功能富集分析(2)

在 3分钟了解GO/KEGG功能富集分析 一文中给大家讲解了GO和KEGG的基本概念和内涵,并且给大家介绍了DAVID这一神奇网站。今天我们就把GO/KEGG功能富集分析的详细教程按部就班地呈现给大家,有请小猎豹。 多图预警,轻点图片,查看高清大图 1 Step1: 打开DAVID官网:https://dav…

区块链即将面临的问题有哪些?

很多人只知道区块链给我们带来的好处&#xff0c;但在这个技术和行业高速发展的阶段&#xff0c;区块链也出现了一些问题&#xff0c;那么区块链即将面临的问题有哪些&#xff1f;有哪些问题会对区块链行业的发展产生非常不利的影响呢&#xff1f;下面我来给大家说说区块链发展…

如何在Java中读取CSV文件-Iterator和Decorator的案例研究

在本文中&#xff0c;我将讨论如何使用Apache Common CSV读取CSV&#xff08;逗号分隔值&#xff09;文件。 从这个案例研究中&#xff0c;我们将学习如何在设计模式的上下文中使用Iterator和Decorator来提高不同情况下的可重用性。 但是在开始之前&#xff0c;我想我必须先回答…

如何在本地开发环境调试微信 JS-SDK

以下篇幅将会描述不同前提下对应的调试策略&#xff0c;当然也有可能不是最优解&#xff0c;望斧正 →_→ 前言 何谓「安全域名限制」&#xff1f; 以微信 JS-SDK 的使用为例&#xff0c;每个公众号被限制最多可设置三个安全域名&#xff0c;且必须能被腾讯服务器所验证&#…

PHP中常用加解密方式

PHP中使用OpenSSL生成RSA公钥私钥及进行加密解密示例 加密基础 加密算法一般分为两种&#xff1a;对称加密算法和非对称加密算法。 对称加密 对称加密算法是消息发送者和接收者使用同一个密匙&#xff0c;发送者使用密匙加密了文件&#xff0c;接收者使用同样的密匙解密&#x…

云南省农村信用社计算机岗位待遇如何,云南农村信用社薪资待遇如何?

在云南如果去存钱&#xff0c;相信大多数人都会把自己的小钱钱存在农村信用社而不是XX银行。在这一块风景秀丽&#xff0c;人美山美水美的地方&#xff0c;就金融行业来说云南农村信用社要是说自己差&#xff0c;那基本没有谁敢说自己做的好。所以在云南农信社这家企业里做一名…

小票上为啥指甲能划出印_指甲上出现竖纹,除遗传问题,或是身体在向你拉警报了,别忽视...

生活中常见女生给指甲抹上各种不同的颜色来让它变得美美的&#xff0c;指甲起着修饰人的形象的作用。而指甲的状况也能折射出身体的健康状态如何。每个人的指甲形态不一&#xff0c;有的润滑饱满&#xff0c;光滑平整&#xff0c;有月牙&#xff1b;有的坑坑洼洼&#xff0c;凸…