【问题标题】:What is wrong with my boto elastic mapreduce jar jobflow parameters?我的 boto 弹性 mapreduce jar 工作流参数有什么问题?
【发布时间】:2012-04-04 21:41:03
【问题描述】:

我正在使用 boto 库在 Amazons Elastic MapReduce Webservice (EMR) 中创建工作流。以下代码应创建一个步骤:

step2 = JarStep(name='Find similiar items',
            jar='s3n://recommendertest/mahout-core/mahout-core-0.5-SNAPSHOT.jar',
            main_class='org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob',
            step_args=['s3n://bucket/output/' + run_id + '/aggregate_watched/',
                       's3n://bucket/output/' + run_id + '/similiar_items/',
                       'SIMILARITY_PEARSON_CORRELATION'
                      ])

当我运行作业流程时,它总是无法抛出此错误:

java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/JobContext
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
at org.apache.hadoop.mapred.JobShell.run(JobShell.java:54)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.hadoop.mapred.JobShell.main(JobShell.java:68)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.JobContext

这是 EMR 日志中调用 java 代码的行:

2011-01-24T22:18:54.491Z INFO Executing /usr/lib/jvm/java-6-sun/bin/java \
-cp /home/hadoop/conf:/usr/lib/jvm/java-6-sun/lib/tools.jar:/home/hadoop:/home/hadoop \
/hadoop-0.18-core.jar:/home/hadoop/hadoop-0.18-tools.jar:/home/hadoop/lib/*:/home/hadoop/lib/jetty-ext/* \
-Xmx1000m \
-Dhadoop.log.dir=/mnt/var/log/hadoop/steps/3 \
-Dhadoop.log.file=syslog \
-Dhadoop.home.dir=/home/hadoop \
-Dhadoop.id.str=hadoop \
-Dhadoop.root.logger=INFO,DRFA \
-Djava.io.tmpdir=/mnt/var/lib/hadoop/steps/3/tmp \
-Djava.library.path=/home/hadoop/lib/native/Linux-i386-32 \
org.apache.hadoop.mapred.JobShell \
/mnt/var/lib/hadoop/steps/3/mahout-core-0.5-SNAPSHOT.jar \
org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob \
s3n://..../output/job_2011-01-24_23:09:29/aggregate_watched/ \
s3n://..../output/job_2011-01-24_23:09:29/similiar_items/ \
SIMILARITY_PEARSON_CORRELATION

参数有什么问题? java类定义可以在这里找到:

https://hudson.apache.org/hudson/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/hadoop/similarity/item/ItemSimilarityJob.html

【问题讨论】:

  • 哈哈。我花了一段时间才说服自己,你不只是在胡编乱造。
  • @T.E.D.:我和你在一起。我觉得我老了……
  • 当我读到“jar”时,我会回答 Cooking.stackexchange.com

标签: python hadoop boto mahout amazon-emr


【解决方案1】:

我找到了问题的解决方案:

  1. 您需要在作业流参数中指定 hadoop 版本 0.20
  2. 您需要使用 mahout-core-0.5-SNAPSHOT-job.jar 运行 JAR 步骤,而不是使用 mahout-core-0.5-SNAPSHOT.jar
  3. 如果您的工作流程中有额外的流式传输步骤,则需要修复 boto 中的错误:
    1. 打开boto/emr/step.py
    2. 将第 138 行更改为“return '/home/hadoop/contrib/streaming/hadoop-streaming.jar'”
    3. 保存并重新安装 boto

这就是应如何调用 job_flow 函数以使用 mahout 运行:

jobid = emr_conn.run_jobflow(name = name, log_uri = 's3n://'+ main_bucket_name +'/emr-logging/', enable_debugging=1, hadoop_version='0.20', steps=[step1,step2])

【讨论】:

  • 感谢您回来并发布您的答案。如果其他人遇到同样的问题,这可能会有所帮助。如果这确实是您问题的答案,您也应该接受它(单击其分数旁边的复选标记)。我知道以这种方式让自己成为代表似乎很俗气,但它告诉 SO 系统找到了解决方案。
【解决方案2】:

上面第 2 步中描述的对 boto 的修复(即使用非版本化的 hadoop-streamin.jar 文件)已被合并到本次提交中的 github master:

https://github.com/boto/boto/commit/a4e8e065473b5ff9af554ceb91391f286ac5cac7

【讨论】:

    【解决方案3】:

    对于一些从 boto 执行此操作的参考

    import boto.emr.connection as botocon
    
    import boto.emr.step as step
    
    con = botocon.EmrConnection(aws_access_key_id='', aws_secret_access_key='')
    
    step = step.JarStep(name='Find similar items', jar='s3://mahout-core-0.6-job.jar', main_class='org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob', action_on_failure='CANCEL_AND_WAIT', step_args=['--input', 's3://', '--output', 's3://', '--similarityClassname', 'SIMILARITY_PEARSON_CORRELATION'])
    
    con.add_jobflow_steps('jflow', [step])
    

    显然,您需要将 mahout-core-0.6-job.jar 上传到可访问的 s3 位置。并且输入和输出必须是可访问的。

    【讨论】:

      猜你喜欢
      • 2012-08-20
      • 2016-07-27
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      相关资源
      最近更新 更多