首页
登录 | 注册

Hadoop Streaming

参考
http://hadoop.apache.org/common/docs/current/streaming.html
http://dongxicheng.org/mapreduce/hadoop-streaming-programming/
1、
Hadoop Streamimg是随Hadoop发布的一个编程工具,允许使用任何可执行文件或脚本创建和运行map/reduce job。
例如:最简单的
$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
    -input myInputDirs \
    -output myOutputDir \
    -mapper /bin/cat \
    -reducer /bin/wc
2、Streaming如何工作
在上面的例子中,mapper和reducer从标准输入逐行的读入输入。处理后发送到标准输出。Streaming将创建map/reducejob,提交job到cluster,并监视job的执行过程。
当一个可执行文件或脚本作为mappers,当mapper初始化时,每个mapper task将该可执行文件或脚本作为一个独立的进程运行。当mapper task运行时,转换输入为行,并将该行提供给进程作为标准输入。在此期间,mapper收集可执行文件或脚本的标准输出,并把每一行内容转换为key/value对,作为mapper的输出。默认情况下,一行中第一个tab之前的部分作为key,之后的(不包含tab)作为value。如果没有tab,正行作为key值,value值为null。key值也可以通过自定义,将在稍后提到。
当一个可执行文件或脚本作为reducers,当reducer初始化时,每个reducer task将该可执行文件或脚本作为一个独立的进程运行。当reducer task运行时,转换输入的key/values对为行并提供给进程作为标准输入。在此期间,reducer收集可执行文件或脚本的标准输出,并将每一行内容转换为key/values对,作为reducer的输出。默认情况下,一行中第一个tab之前的部分作为key,之后的(不包含tab)作为value。如果没有tab,正行作为key值,value值为null。key值也可以通过自定义,将在稍后提到。
以上是Map/Reduce框架

可以只map而不reduce
Specifying Map-Only Jobs
Often, you may want to process input data using a map function only. To do this, simply set mapred.reduce.tasks to zero. The Map/Reduce framework will not create any reducer tasks. Rather, the outputs of the mapper tasks will be the final output of the job.

    -D mapred.reduce.tasks=0
 
To be backward compatible, Hadoop Streaming also supports the "-reduce NONE" option, which is equivalent to "-D mapred.reduce.tasks=0".

options:
(1)-input:输入文件路径
(2)-output:输出文件路径
(3)-mapper:用户自己写的mapper程序,可以是可执行文件或者脚本
(4)-reducer:用户自己写的reducer程序,可以是可执行文件或者脚本
(5)-file:打包文件到提交的作业中,可以是mapper或者reducer要用的输入文件,如配置文件,字典等。
(6)-partitioner:用户自定义的partitioner程序
(7)-combiner:用户自定义的combiner程序(必须用java实现)
(8)-D:作业的一些属性(以前用的是-jonconf),具体有:
注意:-D参数必须作为第一个参数,有多个参数需要调整时,写多个-D
             1)mapred.map.tasks:map task数目
             2)mapred.reduce.tasks:reduce task数目
             3)stream.map.input.field.separator/stream.map.output.field.separator: map task输入/输出数
据的分隔符,默认均为\t。
             4)stream.num.map.output.key.fields:指定map task输出记录中key所占的域数目(即,使用几个域用于排序。如果为2,则第一和第二个域整体作为可以,参与排序。似乎不能单独指定第二个域作为key)
             5)stream.reduce.input.field.separator/stream.reduce.output.field.separator:reduce task输入/输出数据的分隔符,默认均为\t。
             6)stream.num.reduce.output.key.fields:指定reduce task输出记录中key所占的域数目
-D Use value for given property.
其中的property是任何可以在core,hdfs,maprd配置文件里写的属性,都可以在这里传递。 
-D参数可以广泛用于hadoop的命令中,例如dfs,详细查看:http://hadoop.apache.org/common/docs/current/commands_manual.html
例如:在上传文件时,指定拷贝的副本
hadoop dfs -D dfs.replication=10 -put 70M  logs/2

相关文章

  • 在Rhadoop上运行mapreduce时报以下错误 >  small.ints = 1:10 > small.ints = to.dfs(1:10) 14/04/03 10:12:17 INFO util.NativeCode ...
  • 大数据技术并非只有Hadoop
     1.Apache Flink 这是一种由社区驱动的分布式大数据分析开源框架,类似于Apache Hadoop和Apache Spark.它的引擎可借助数据流和内存中(in-memory)处理与迭代操作改善性能.目前Apache Flink ...
  • 目前人工智能和大数据火热,使用的场景也越来越广,日常开发中前端同学也逐渐接触了更多与大数据相关的开发需求.因此对大数据知识也有必要进行一些学习理解 大数据的本质 基础知识 学习路线 数据采集引擎 -> Sqoop.Flume ZooK ...
  • Hadoop参数调优 1. 设置合理的槽位数目 在Hadoop中,计算资源是用槽位(slot)表示的.slot分为两种:Map slot和Reduce slot. 2. 调整心跳间隔  心跳中包含节点资源使用情况.各任务运行状态等信息,如果 ...
  • Hadoop Delegation Tokens Explained
    本文转自:http://blog.cloudera.com/blog/2017/12/hadoop-delegation-tokens-explained/ Apache Hadoop's security was designed and ...
  • 三大方法保护Hadoop集群免遭攻击!
    一直以来,Hadoop集群服务器都是一个非常稳定的平台,因此企业愿意选择搭建并使用.但是,自9月下旬以来,被攻击的服务器已经从最初的每天几台发展到70多台,DemonBot(新型的恶意软件)可以主动在网上搜索易受攻击的Hadoop集群服务器 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号