mahout程序和java web_mahout及java编写mapreduce

40947352_1.jpg

一直都没用java写过hadoop程序(除了wordcount),后来发现不用java有些问题处理不了。现在The Apache Software Foundation的开发速度也不是太快不太清楚是不是人手不够,其他语言的api不是太多,而且还有很多bug。这两周遇到的2个bug,都是hive的bug真的是郁闷啊,insert overwrite 和 set hive.optimize.skewjoin=tru遇到的,很是无奈啊。

一直都用streaming和perl和shell,这样的程序都比较好写。遇到一些聚类的时候发现这个好像不是太好用啊。其实像kmeans在分布式环境下的聚类过程很好想像,就是需要一批向量的数据,和一批随机中心点的数据,map读数据看看和哪个中心点近将key设置成最近的中心点的序号,reduce设置和k相同的个数,reduce里将每个送过来的向量计算求出新的中心点,修正老的中心点。输出向量这样就形成了一次聚类的过程然后再来一次mapreduce,循环下去知道中心点不动了聚类就结束了。可是用streaming+perl实现起来还是比较困难的,但是应该也是可以实现的,这里面主要是修正中心点需要reduce去修改或是形成新的中心点。其实reduce可以在自己的运行目录里创建临时文件然后放到HDFS里,下个循环再用 。-file 这个可以用一下

MAHOUT

既然已经有了分布式环境下的轮胎我们就不必发明轮胎了,mahout这个被很多人吹捧的东东,我们可以试一下。现在只讨论0.4版本的。

其实我是先在单机环境下实验的,还可以直接可以将例子运行。在集群上也是可以运行的。

编译示例程序

Apache software foundation’s website

http://mahout.apache.org mahout的官方地址

http://hadoop.apache.org hadoop的官方地址

http://hive.apache.org hive的官方地址

http://svn.apache.org 代码地址 包含了所有的开源项目

http://archeve.apache.org 归档地址:所有软件的历史版本都可以在这里找到

mahout几个有用的参考连接

命令运行kmeans:

https://cwiki.apache.org/confluence/display/MAHOUT/k-means-commandline

历史版本源代码地址:

https://github.com/apache/mahout/blob/mahout-0.3/examples/src/main/java/org/apache/mahout/clustering/syntheticcontrol/kmeans/Job.java

https://github.com/apache/mahout/branches

从文本创建向量:

https://cwiki.apache.org/MAHOUT/creating-vectors-from-text.html

快速开始;

http://cwiki.apache.org/MAHOUT/quickstart.html

比较重要示例运行:

https://cwiki.apache.org/confluence/display/MAHOUT/Clustering+of+synthetic+control+data

http://webcache.googleusercontent.com/search?q=cache:9kvXlIJ3lc0J:https://cwiki.apache.org/MAHOUT/clustering-of-synthetic-control-data.html+Clustering%2Bof%2Bsynthetic%2Bcontrol%2Bdata&cd=1&hl=zh-CN&ct=clnk&source=www.google.com.hk (google快照)

eclipse编译打包运行示例程序

1. 首先是eclipse我用的是官方下载的HELIOS版本的

2. 创建一个java project

3. 找到mahout0.4源代码中的 kmeans聚类实例。路径是(\src\examples\src\main\java\org\apache\mahout\clustering\syntheticcontrol\kmeans

)。创建一个类为kmeansjob,然后将示例代码贴过来。修改代码中的类名称为kmeansjob。

4. 添加引用包。

hadoop-0.20.2\hadoop-0.20.2-core.jar

hadoop-0.20.2\lib\log4j-1.2.15.jar

mahout-distribution-0.4\mahout-core-0.4-job.jar

mahout-distribution-0.4\mahout-core-0.4.jar

mahout-distribution-0.4\mahout-utils-0.4.jar

mahout-distribution-0.4\lib\commons-cli-1.2.jar

mahout-distribution-0.4\lib\slf4j-api-1.6.0.jar

mahout-distribution-0.4\lib\commons-cli-2.0-mahout.jar

加入编译0.3版本的需要添加一下包:

hadoop-0.19.2\hadoop-0.19.2-core.jar

hadoop-0.19.2\lib\log4j-1.2.15.jar

mahout-0.3\mahout-core-0.3.jar

mahout-0.3\lib\commons-cli-1.2.jar

mahout-0.3\lib\commons-cli-2.0-mahout.jar

mahout-0.3\mahout-utils-0.3.jar

mahout-0.3\lib\slf4j-api-1.5.8.jar

mahout-0.3\mahout-examples-0.3.jar

5. 将项目export runnable jar file40947352_2.jpg40947352_3.jpg

6. 然后就是运行了hadoop jar k22.jar

7. 输入是示例程序提供输入的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop和Mahout是两个不同的项目,但它们可以同时用于构建和运行大规模数据处理和机器学习任务。 Hadoop是一个由Apache基金会开发的分布式系统基础架构,可以用于高速运算和存储大规模数据。它的核心设计包括HDFS和MapReduce。HDFS提供了海量数据的存储,而MapReduce则用于海量数据的计算。中的步骤安装和配置Hadoop。然后,你可以使用Hadoop的命令行工具将训练集和测试集上传到HDFS中的指定目录,如引用中的示例所示。接下来,你可以使用Mahout提供的API或命令行工具来执行机器学习任务,例如分类或聚类等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Hadoop Mahout 推荐系统](https://blog.csdn.net/u010343650/article/details/52974603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Hadoop入门进阶课程9--Mahout介绍、安装与应用案例](https://blog.csdn.net/yirenboy/article/details/46894267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值