【问题标题】:How to submit mahout recommendation Jobs using HDInsight .NET SDK如何使用 HDInsight .NET SDK 提交 mahout 推荐作业
【发布时间】:2014-04-05 23:22:29
【问题描述】:

我是 HDInsight 的新手。我想学习和练习机器学习,HDInsight 正是我想要的,但似乎没有直接的 API 可以用于 mahout。由于 mahout 推荐本质上会转化为 mapredure 作业,所以我按照 Windows Azure 文档中的一些 mapreduce 示例编写了以下代码:

// Define the MapReduce job
MapReduceJobCreateParameters mrJobDefinition = new MapReduceJobCreateParameters()
{
    JarFile = "wasb:///example/jars/mahout-core-0.9-job.jar",
    ClassName = "org.apache.mahout.cf.taste.hadoop.item.RecommenderJob",
};

mrJobDefinition.Arguments.Add(" -s SIMILARITY_COOCCURRENCE");
mrJobDefinition.Arguments.Add(" --input=/reply");
mrJobDefinition.Arguments.Add(" --output=/recommend/");
mrJobDefinition.Arguments.Add(" --usersFile=/data/users.txt");

我已经将“mahout-core-0.9-job.jar”上传到指定 Azure blob 存储容器中的 /example/jars。

但我收到以下错误消息:

14/04/03 12:04:28 错误 security.UserGroupInformationPriviledgedActionException as:johnny 原因:java.io.IOException : 异常读取file:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= java.security.PrivilegedActionException:java.io.IOException:异常读取文件:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1233) 在 org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:951) 在 org.apache.hadoop.mapreduce.Job.submit(Job.java:550) 在 org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:580) 在 org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:77) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.run(RecommenderJob.java:164) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.main(RecommenderJob.java:322) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:160) 引起:java.io.IOException:异常读取文件:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= 在 org.apache.hadoop.security.Credentials.readTokenStorageFile(Credentials.java:136) 在 org.apache.hadoop.mapred.JobClient.readTokensFromFiles(JobClient.java:2149) 在 org.apache.hadoop.mapred.JobClient.populateTokenCache(JobClient.java:2185) 在 org.apache.hadoop.mapred.JobClient.access$300(JobClient.java:179) 在 org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:964) 在 org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:951) ... 16 更多 原因:java.io.FileNotFoundException:文件文件:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= 不存在。 在 org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:427) 在 org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:254) 在 org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.(ChecksumFileSystem.java:125) 在 org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283) 在 org.apache.hadoop.fs.FileSystem.open(FileSystem.java:436) 在 org.apache.hadoop.security.Credentials.readTokenStorageFile(Credentials.java:130) ... 21 更多 线程“主”java.io.IOException 中的异常:读取文件异常:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= 在 org.apache.hadoop.security.Credentials.readTokenStorageFile(Credentials.java:136) 在 org.apache.hadoop.mapred.JobClient.readTokensFromFiles(JobClient.java:2149) 在 org.apache.hadoop.mapred.JobClient.populateTokenCache(JobClient.java:2185) 在 org.apache.hadoop.mapred.JobClient.access$300(JobClient.java:179) 在 org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:964) 在 org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:951) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1233) 在 org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:951) 在 org.apache.hadoop.mapreduce.Job.submit(Job.java:550) 在 org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:580) 在 org.apache.mahout.cf.taste.hadoop.preparation.PreparePreferenceMatrixJob.run(PreparePreferenceMatrixJob.java:77) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.run(RecommenderJob.java:164) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.main(RecommenderJob.java:322) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:160) 原因:java.io.FileNotFoundException:文件文件:/c:/apps/temp/hdfs/mapred/local/taskTracker/johnny/jobcache/job_201404031203_0001/jobToken= 不存在。 在 org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:427) 在 org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:254) 在 org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.(ChecksumFileSystem.java:125) 在 org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283) 在 org.apache.hadoop.fs.FileSystem.open(FileSystem.java:436) 在 org.apache.hadoop.security.Credentials.readTokenStorageFile(Credentials.java:130) ... 21 更多 强制关闭观察者/保持活动线程池 Templeton:作业失败,退出代码为 1

在互联网上搜索后,似乎应该对 mapred-site.xml 或其他 hadoop 配置文件进行一些更改。但我对 Apache hadoop 完全陌生,对 Linux 和 Java 没有太多了解。

任何帮助或指导将不胜感激。

【问题讨论】:

    标签: hadoop mahout azure-hdinsight


    【解决方案1】:

    使用最新的 .NET SDK for Hadoop (http://hadoopsdk.codeplex.com/),我可以使用相同的代码成功提交 mahout 作业。 SDK似乎已经解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 2010-11-15
      • 2014-04-18
      相关资源
      最近更新 更多