hadoop 运行mahout 问题小结(一)

完成hadoop上的搭建,开始运行几个小的测试,毕竟第一次,遇到了一些小问题。

首先,是参考资料中的 验证安装是否成功的步骤。

 将下载数据 synthetic_control.data 上传到HDFS中,命令如下

  hadoop fs -mkdir   testdata(注意,此命令的文件夹路径必须是如上,不可是/testdata 等其他形式)

  hadoop fs -put    synthetic_control.data(注意,如果数据不是当前文件夹下,应该添加相对或者绝对路径)    testdata/

  hadoop fs -ls testdata (查看是否上传成功)


数据上传成功之后,开始运行测试聚类程序,命令如下

  hadoop   jar   mahout-distribution-0.9/mahout-examples-0.9-job.jar (注意路径)    org.apache.mahout.clustering.syntheticcontrol.kmeans.Job  


运行完成之后,查看结果

  hadoop  fs -ls  output(注意路径)


完成。


其次,在运行数据序列化时遇到问题,就是将HDFS中数据转成Mahout可以识别额输入格式。

会提示,Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/mahout/common/AbstractJob 错误!!!!

这是因为没有将mahout中的jar文件进行相关的导入。网上找的一些解决方法,如下

要想让mapreduce程序引用第三方jar文件, 可以采用如下方式:
  1。通过命令行参数传递jar文件, 如-libjars等;
  2。直接在conf中设置, 如conf.set(“tmpjars”,*.jar), jar文件用逗号隔开;
  3。利用分布式缓存, 如DistributedCache.addArchiveToClassPath(path, job), 此处的path必须是hdfs, 即自己讲jar上传到hdfs上, 然后将路径加入到分布式缓存中;第三方jar文件和自己的程序打包到一个jar文件中, 程序通过job.getJar()将获得整个文件并将其传至hdfs上. (很笨重)
  4。在每台机器的$HADOOP_HOME/lib目录中加入jar文件. (不推荐)

前三种没有研究和验证,使用的第四种,但是这里注意,hadoop老的版本放入lib文件夹下可以,我使用的是hadoop-2.5.2,需要将jar文件放到$HADOOP_HOME/share/hadoop/common  或者其他文件夹中

完成之后,就可以正常执行了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值