第一次运行Hadoop Streaming

按照书上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 1
	at 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值