当前位置: 首页 > 知识库问答 >
问题:

Hadoop Mapduce作业失败:java.lang.RuntimeException:配置对象时出错

郏博瀚
2023-03-14

我试图实现Hadoop Mapduce流与python简单的字数统计示例在本教程中:https://www.geeksforgeeks.org/hadoop-streaming-using-python-word-count-problem/

我的 mapper.py

#!/usr/bin/env python3
import sys

# Remove whitespace either side 
for line in sys.stdin:
    myline = line.strip() 
    
       # Break the line into words 
    words = myline.split() 
    
       # Iterate the words list
    for myword in words:
          # Write the results to standard output 
          print  (myword+'\t', 1)

我的reducer.py

#!/usr/bin/env python3

from operator import itemgetter 
import sys 

current_word = ""
current_count = 0 
word = "" 

for line in sys.stdin:
   # Remove whitespace either side 
   myline = line.strip() 
   # Split the input we got from mapper.py word, 
   word,count = myline.split('\t', 1) 

   # Convert count variable to integer 
   try: 
      count = int(count) 

   except ValueError: 
       continue
   
   if current_word == word:
       current_count += count
       
   else :
       if(current_count>0):
           print(current_word, current_count)
       current_count = count
       current_word = word

if current_word == word:
        print (current_word,current_count)

当我使用此代码运行程序时,程序在本地工作

cat word.txt | python mapper.py | sort -k1,1 | python reducer.py

但是,当我尝试使用hadoop对其进行流式处理时,我得到了以下错误:

21/04/27 09:53:46 INFO mapreduce.Job: Task Id : attempt_1619506264660_0001_r_000000_1, Status : FAILED
Error: java.lang.RuntimeException: Error in configuring object
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:113)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137)
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:409)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:177)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/javax.security.auth.Subject.doAs(Subject.java:423)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1886)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:171)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:110)
    ... 9 more
Caused by: java.lang.RuntimeException: configuration exception
    at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:222)
    at org.apache.hadoop.streaming.PipeReducer.configure(PipeReducer.java:67)
    ... 14 more
Caused by: java.io.IOException: Cannot run program "/home/edureka/reducer.py": error=2, No such file or directory
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
    at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:209)
    ... 15 more
Caused by: java.io.IOException: error=2, No such file or directory
    at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
    ... 17 more


我认为减速器的错误,因为映射器是100%完成的,如图片所示,但仍然不知道如何解决我的问题:

共有1个答案

查修谨
2023-03-14

这个错误是因为我为我的缩减器获取了错误的目录路径

 类似资料:
  • 我想在阿兹卡班经营蜂巢工作

  • 我目前正在尝试为一个项目设置Elasticsearch。我已经安装了,还安装了Java,即。 但是当我尝试使用以下命令启动Elasticsearch时 我得到以下错误 loaded:loaded(/usr/lib/systemd/system/elasticsearch.service;disabled;vend 活动:自世界协调时2019-11-01 06:09:54开始失败(结果:退出-代码)

  • 问题内容: 我为我们的maven多项目创建了一个hudson作业,其中包含5个模块,以将工件部署到maven存储库。没关系,只要它成功构建且没有测试失败即可。但是,现在我想满足以下要求: 当模块发生测试故障时,构建应继续扩建并测试其他模块,但变为黄色。使用可以完成,但在下一个要求时会失败。 当模块发生测试故障时,不应将任何工件部署到Maven存储库。 其他项目依赖于该项目的快照,而这些项目只想使用

  • 我一直在玩Hadoop和它的姊妹项目,一路上遇到了一些问题,但我最终遇到了一个我找不到答案的问题: 我有一个配置单元表存储在hdfs上,作为一个制表符分隔的文本文件。我可以在表上做一个基本的select,但一旦我将查询变得稍微复杂一些,hive就会将它变成一个map reduce作业,它会在以下堆栈跟踪中失败 所讨论的文件夹确实存在于dfs中,至少存在于“/tmp/hadoop-yarn/stag

  • 我正在通过rest上传视频到我们的Azure媒体服务器,但编码工作失败,以下例外: 我可以看到它声明不支持文件类型,但是如果我手动上传它就没有问题了。 这就是我发布视频的方式 该文件存在于Azure服务器上,但无法播放。 谁能给我指个方向吗

  • 我正在由Glue Crawler生成的CSV可数据上运行Glue ETL作业。爬虫点击具有以下结构的目录 这些文件被聚合到一个“聚合输出”表中,该表可以在athena中成功查询。 我正在尝试使用AWS Glue ETL作业将其转换为拼花地板文件。作业失败 我很难找到根本原因 我尝试了多种方式修改Glue作业。我确保分配给该作业的IAM角色有权删除相关存储桶上的文件夹。现在我正在使用AWS提供的默认