你好,游客 登录 注册 搜索
背景:
阅读新闻

hadoop之streaming(一)官网翻译

[日期:2015-08-14] 来源:CSDN博客  作者: [字体: ]

  官网:

  1. Hadoop Streaming 
  2.  
  3. Hadoop streaming is a utility that comes with the Hadoop distribution. The utility allows you to create and run Map/Reduce jobs with any executable or script as the mapper and/or the reducer. For example: 
  4.  
  5. hadoop jar hadoop-streaming-2.6.0.jar \ 
  6.     -input myInputDirs \ 
  7.     -output myOutputDir \ 
  8.     -mapper /bin/cat \ 
  9.     -reducer /usr/bin/wc 


  今天我来解释一下这个很简单的demo,首先呢你要一行一行的输入命令去探索,不然不知道哪里错了,先输入第一行

  1. hadoop jar hadoop-streaming-2.6.0.jar \ 

你看能没有hadoop命令 ,也可能没找到hadoop-streaming-2.6.0.jar包,前者是你配置环境的问题,我前面有提到hadoop配置,如果还是没用,请你source /etc/environment

  

  如果没找到

  1. hadoop-streaming-2.6.0.jar \ 

请你在搜索里面搜索这个jar包,找到他的路径,要么换成全路径,要么先进到这个目录中

  另外解释一下 那个 \代表续航符,意思是可以接着输入,不打这个换行的话就会直接执行的

  然后命令行中出现>   ,你在继续输入

  1. -input myInputDirs \ 

这个后面是输入hdfs系统的输入文件

  1. -output myOutputDir \ 

输出文件放那

  1. -mapper /bin/cat \ 
  1. -reducer /usr/bin/wc 


后面的cat是查看文件信息,wc是计数

  输出后结果为

  1. 4       7      58     


  行数    单词数    字节数

  最后解释一下streaming是干什么的,原理是什么

  1. Hadoop streaming is a utility that comes with the Hadoop distribution. The utility allows you to create and run Map/Reduce jobs with any executable or script as the mapper and/or the reducer. For example: 

翻译结果:

    它是hadoop分布式的一个工具,用来创建和运行一类特殊的map/reduce作业。所谓的特殊的map/reduce作业可以是可执行文件或脚本本件(python、PHP、c等)。例子

  1. How Streaming Works 
  2.  
  3. In the above example, both the mapper and the reducer are executables that read the input from stdin (line by line) and emit the output to stdout. The utility will create a Map/Reduce job, submit the job to an appropriate cluster, and monitor the progress of the job until it completes. 
  4.  
  5. When an executable is specified for mappers, each mapper task will launch the executable as a separate process when the mapper is initialized. As the mapper task runs, it converts its inputs into lines and feed the lines to the stdin of the process. In the meantime, the mapper collects the line oriented outputs from the stdout of the process and converts each line into a key/value pair, which is collected as the output of the mapper. By default, the prefix of a line up to the first tab character is the key and the rest of the line (excluding the tab character) will be the value. If there is no tab character in the line, then entire line is considered as key and the value is null. However, this can be customized by setting -inputformat command option, as discussed later. 
  6.  
  7. When an executable is specified for reducers, each reducer task will launch the executable as a separate process then the reducer is initialized. As the reducer task runs, it converts its input key/values pairs into lines and feeds the lines to the stdin of the process. In the meantime, the reducer collects the line oriented outputs from the stdout of the process, converts each line into a key/value pair, which is collected as the output of the reducer. By default, the prefix of a line up to the first tab character is the key and the rest of the line (excluding the tab character) is the value. However, this can be customized by setting -outputformat command option, as discussed later. 
  8.  
  9. This is the basis for the communication protocol between the Map/Reduce framework and the streaming mapper/reducer. 
  10.  
  11. User can specify stream.non.zero.exit.is.failure as true or false to make a streaming task that exits with a non-zero status to be Failure or Success respectively. By default, streaming tasks exiting with non-zero status are considered to be failed tasks. 

  

  翻译:

  

    在上面的例子里,mapper和reducer都是可执行文件,它们从标准输入读入数据(一行一行读),并把计算结果发给标准输出。Streaming工具会创建一个Map/Reduce作业,并把它发送给合适的集群,同时监视这个作业的整个执行过程。

      如果一个可执行文件被用于mapper,则在mapper初始化时,每一个mapper任务会把这个可执行文件作为一个单独的进程启动。 mapper任务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。同时,mapper收集可执行文件进程标准输出的内容,并把收到的每一行内容转化成key/value对,作为mapper的输出。默认情况下,一行中第一个tab之前的部分作为key,之后的(不包括tab)作为 value。如果没有tab,整行作为key值,value值为null。不过,这可以定制,在下文中将会讨论如何自定义key和value的切分方式。

      如果一个可执行文件被用于reducer,每个reducer任务会把这个可执行文件作为一个单独的进程启动。 Reducer任务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。同时,reducer收集可执行文件进程标准输出的内容,并把每一行内容转化成key/value对,作为reducer的输出。默认情况下,一行中第一个tab之前的部分作为key,之后的(不包括tab)作为 value。在下文中将会讨论如何自定义key和value的切分方式。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款