Skip to main content
 首页 » 操作系统 » linux系统

给大家分享一个大数据hadoop streaming编程的实例

  Hadoop Streaming是Hadoop提供的多语言编程工具,通过该工具,用户可采用任何语言编写MapReduce程序,本文将介绍几个Hadoop Streaming编程实例,大家可重点从以下几个方面学习:

  (1)对于一种编写语言,应该怎么编写Mapper和Reduce,需遵循什么样的编程规范

  (2) 如何在Hadoop Streaming中自定义Hadoop Counter

  (3) 如何在Hadoop Streaming中自定义状态信息,进而给用户反馈当前作业执行进度

  (4) 如何在Hadoop Streaming中打印调试日志,在哪里可以看到这些日志

  (5)如何使用Hadoop Streaming处理二进制文件,而不仅仅是文本文件

  1. C++版WordCount

  (1)Mapper实现(mapper.cpp) 编程

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第1张

  (2)Reducer实现(reducer.cpp)

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第2张

  (3)编译运行

  编译以上两个程序:

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第3张

  测试一下:

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第4张

  注:上面这种测试方法会频繁打印以下字符串,可以先注释掉,这些字符串hadoop能够识别

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第5张

  测试通过后,可通过以下脚本将作业提交到集群中(run_cpp_mr.sh):

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第6张

  2. Shell版WordCount

  (1)Mapper实现(mapper.sh) 编程

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第7张

  (2)Reducer实现(mapper.sh)

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第8张

  (3)测试运行

  测试以上两个程序:

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第9张

  注:上面这种测试方法会频繁打印以下字符串,可以先注释掉,这些字符串hadoop能够识别 编程

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第10张

  测试通过后,可通过以下脚本将作业提交到集群中(run_shell_mr.sh):

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第11张

  3. 程序说明

  在Hadoop Streaming中,标准输入、标准输出和错误输出各有妙用,其中,标准输入和输出分别用于接受输入数据和输出处理结果,而错误输出的意义视内容而定: 编程

  (1)如果标准错误输出的内容为:reporter:counter:group,counter,amount,表示将名称为counter,所在组为group的hadoop counter值增加amount,hadoop第一次读到这个counter时,会创建它,之后查找counter表,增加对应counter值

  (2)如果标准错误输出的内容为:reporter:status:message,则表示在界面或者终端上打印message信息,可以是一些状态提示信息 编程

  (3)如果采用错误输出的内容不是以上两种情况,则表示调试日志,Hadoop会将其重定向到stderr文件中。注:每个Task对应三个日志文件,分别是stdout、stderr和syslog,都是文本文件,可以在web界面上查看这三个日志文件内容,也可以登录到task所在节点上,到对应目录中查看。

  另外,需要注意一点,默认Map Task输出的key和value分隔符是\t,Hadoop会在Map和Reduce阶段按照\t分离key和value,并对key排序,注意这点非常重要,当然,你可以使用stream.map.output.field.separator指定新的分隔符。

给大家分享一个大数据hadoop streaming编程的实例  Hadoop 第12张

评论列表暂无评论
发表评论
微信