第一次运行Hadoop Streaming

来源:互联网 发布:dota2 数据网站有哪些 编辑:程序博客网 时间:2024/05/10 07:20

按照书上95的内容~~写了一堆ruby。。。。(真是对这个语言无感。。。)

结果hadoop运行不出来。。。。cry 啊。。。。

错误是:# of failed Map Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask: task_201407231146_0005_m_000000

上网查到了这个:

http://f.dataguru.cn/thread-266297-1-1.html


发现我的虚拟机上根本没有装什么ruby。。。

用 $ sudo apt-get install ruby 装了个旧的ruby。。。将就着用吧。。我觉得。。。

用 whereis ruby找到安装的文件夹,是usr/bin,所以把ruby的script都改了~~之后呢,又是同样的错误。。。

顺便学到了stop-all.sh可以停止所有hadoop进程~~之前都是一个个删的。。囧。。。

把ruby scripts的头改成#!/usr/bin/env ruby之后,mapper没问题,reducer又有这个exceeded allowed limit的问题。。好坑!!!

找到了 http://www.linuxidc.com/Linux/2012-09/70972.htm

设置之后,可以运行了。。。但是结果什么都没有。。。感觉是掩耳盗铃的方法。。。。

找了半天结果未果。。。只能找其他ruby的例子,找到了网页

http://www.bigfastblog.com/map-reduce-with-ruby-using-hadoop#coding-your-map-and-reduce-scripts-in-ruby

里面说可以先用

cat /usr/share/dict/words | ruby map.rb | sort | ruby reduce.rb
来先验证一下ruby代码对不对~~~验证的结果把我自己蠢哭了。。。。把变量拼错了!!!!难怪没有结果!!!!!!


综上所述,

如果碰到问题:

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:576)at org.apache.hadoop.streaming.PipeReducer.close(PipeReducer.java:137)at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:232)at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:539)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:421)at org.apache.hadoop.mapred.Child$4.run(Child.java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)at org.apache.hadoop.mapred.Child.main(Child.java:249)
就用一下网址解决

http://www.linuxidc.com/Linux/2012-09/70972.htm


运行之前要先检查ruby scripts是不是对!!!!蠢哭了我!!!!

不过最终运行出来,耶耶耶耶!!!!

0 0
原创粉丝点击