1.1.1         Stream 作业

1hadoop streaming

Hadoop streaming是hadoop的一个工具,用于运行费java的maper或reducer作业,例如maper和reducer是C++编写的可执行程序或者脚本文件。同时也可以是java类。

HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \

-input myInputDirs \

-output myOutputDir \

 -mapper /bin/cat \

 -reducer /bin/wc

2Stream工作原理

如果可执行程序被用于maper和reducer,可执行程序作为单独的进程启动,mapper任务运行时,将输入按照分隔符切分成行(默认情况下每一行tab之前的为键key,之后为值value,如果没有tab,整行为键,值为null,key和value的分隔符可以设置),提供给可执行程序的标准输入,可执行程序处理之后输出到标准输出,mapper任务收集标准输出的内容,转换为key/value对,作为maper/reducer的输出。用户可以设定stream.non.zero.exit.is.failure true 或false 来表明streaming task的返回值非零时是 Failure 还是Success。默认情况,streaming task返回非零时表示失败。

3)集群运行可执行程序一起打包提交

如果是集群运行stream作业,需要用-file参数指定可执行程序,framework将可执行程序一起打包提交到集群运行。例如下面的-file myPythonScript.py除了可执行文件外,其他mapper或reducer需要用到的辅助文件(比如字典,配置文件等)也可以用这种方式打包上传。

HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \

-input myInputDirs \

-output myOutputDir \

-mapper myPythonScript.py \

-reducer /bin/wc \

 -file myPythonScript.py

-file myDictionary.txt

4Stream只使用mapper的设置

有时只需要map函数处理输入数据。这时只需把mapred.reduce.tasks设置为零,Map/reduce框架就不会创建reducer任务,mapper任务的输出就是整个作业的最终输出。

为了做到向下兼容,Hadoop Streaming也支持“-reduce None”选项,它与“-jobconf mapred.reduce.tasks=0”等价。

5Stream参数设置

-inputformat JavaClassName

设置输入值类型

-outputformat JavaClassName

设置输出值类型

-partitioner JavaClassName

设置分区类

-combiner JavaClassName

设置combine函数类

-input myinputdir

设置输入路径

-output myoutputdir

设置输出路径

-cluster name

切换集群

-dfs host:port or local

设置新的hdfs或者用local表示本地

-jt host:port or local

设置新的jobtracker或者用local表示本地

-file ./map_sort.py

将当前目录的map_sort.py文件(10M以内)上传到计算节点

-cacheFile "hdfs://hadoop-master:8020/fruit.txt#fruit

HDFS中已经存在的文件发送到需要使用该文件的节点。“#”是给要分发的文件起别名(符号链接),在Mapreduce程序中直接使用该别名就可访问该文件。

-cacheArchive “hdfs://hadoop-master:8020/fruit.tar.gz#fruitlink

-cacheArchive:将HDFS中已经存在的压缩文件fruit.tar.gz分发到相应的计算节点并解压,fruitlink指向解压后的文件夹。

-jobconf mapred.reduce.tasks=2

Hadoop的参数设置,这里表示用两个reduce任务,还有很多其他任务。

6Streaming输入输出键值分隔符设置

默认是tab作为分隔符,如果键值中包含tab键,则需要将分隔符设置为其他符号。除了分隔符,还要对键所占分隔符的数量stream.num.map.output.key.fields和stream.num.reduce.output.key.fields进行设置,例如一行数据是a,b,c,数量设置为1,则a是键,b,c是值,如果设置为2,则a,b是键,c是值。

属性名称

描述

stream.map.input.field.separator

String,默认\t,map输入键值分隔符

stream.reduce.input.field.separator

String,默认\t,reduce输入键值分隔符

stream.map.output.field.separator

String,默认\t,map输出键值分隔符

stream.reduce.output.field.separator

String,默认\t,reduce输出键值分隔符

stream.num.map.output.key.fields

Map输出键值字符串中,键占的字段数

stream.num.reduce.output.key.fields

reduce输出键值字符串中,键占的字段数

这参数的作用如图所示,参数作为内部分隔设置,与总的输入input和输出output无关。如果用标准的TextOutputFormat作为output的输出格式,则默认会用tab分隔,写入输出文件。可以通过属性mapreduce.output.textoutput.format.separator来修改output输出的分隔符。

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

8.1.2hadoop Streaming 作业原理和参数设置的更多相关文章

  1. hadoop作业调优参数整理及原理(转)

    1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内 ...

  2. hadoop作业调优参数整理及原理【转】

    1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内 ...

  3. hadoop作业调优参数整理及原理

    hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...

  4. Spark 以及 spark streaming 核心原理及实践

    收录待用,修改转载已取得腾讯云授权 作者 | 蒋专 蒋专,现CDG事业群社交与效果广告部微信广告中心业务逻辑组员工,负责广告系统后台开发,2012年上海同济大学软件学院本科毕业,曾在百度凤巢工作三年, ...

  5. 老版mapreduce跑streaming作业多路输出的方法

    1. 继承MultipleTextOutputFormat实现自己的输出类. 2. 重写generateFileNameForKeyValue方法,返回输出的名字,可通过"/"分割 ...

  6. <Spark><Spark Streaming><作业分析><JobHistory>

    Intro 这篇是对一个Spark (Streaming)作业的log进行分析.用来加深对Spark application运行过程,优化空间的各种理解. Here to Start 从我这个初学者写 ...

  7. Hadoop streaming 排序、分桶参数设置

    编写hadoop任务经常需要用到partition和排序.这里记录一下几个参数. 1. 概念 Partition:分桶过程,用户输出的key经过partition分发到不同的reduce里,因而par ...

  8. spark作业提交参数设置(转)

    来源:https://www.cnblogs.com/arachis/p/spark_parameters.html 摘要 1.num-executors 2.executor-memory 3.ex ...

  9. Spark Streaming的原理

    Spark Streaming应用也是Spark应用,Spark Streaming生成的DStream最终也是会转化成RDD,然后进行RDD的计算,所以Spark Streaming最终的计算是RD ...

随机推荐

  1. 如何在Access中使用SQL语句

    如何在Access中使用SQL语句 创建,查询设计,弹出[显示表]窗口,点击[关闭]将该窗口关掉.这时软件会进入[设计]工具栏,我们点击工具栏左侧的[SQL视图].[SQL视图]默认选择的是[设计视图 ...

  2. Bugku-CTF之login3(SKCTF)(基于布尔的SQL盲注)

    Day41 login3(SKCTF)

  3. maven中的pom.xml中的scope的作用

    pom.xml配置文件中, <dependency>中的<scope>,它主要管理依赖的生效范围.目前<scope>可以使用5个值: * compile,缺省值,适 ...

  4. 动态链接--运行时加载dlopen

    前面我们在编译可执行文件时,如果可执行文件要依赖某个so.必须要通过-L指定so路径,并且-l指定so名字. 而且在可执行文件运行时,要先加载so的load部分到进程地址空间. 有一种方式可以在编译时 ...

  5. 每日扫盲(四):java之Netty原理和使用

    转自:https://www.jdon.com/concurrent/netty.html Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Nett ...

  6. Jquery插件validate使用一则

    jquery.validate是一个基于jquery的非常优秀的验证框架,可以通过它迅速验证一些常见的输入,并且可以自己扩充自己的验证方法. 主要功能有: 验证url,email,number,len ...

  7. 题解 P1283 【平板涂色】

    P1283 平板涂色 数据范围也太小了qwq..适合本萌新暴搜 小小的剪枝: 1.用pre预处理出每块矩形上方的矩形,pre[i][0]记录数目(如果数据范围再开大一点,直接1~n枚举判断可能超时qw ...

  8. 专题一 Java基础语法

    小辨析: println 输出字符后,下一个输出的字符会换行展示 print 输出字符后,下一个输出字符不会会换展示 system.out.println()  空格 分支结构:if-else使用说明 ...

  9. easyExcel+poi导出Excel出现乱码

    这种问题肯定是浏览器编码问题,修改官方给的util就好了

  10. if的特性

    js中 if(变量),这个变量只要满足: 变量如果不为0,null,undefined,false,都会被处理为true.只要变量有非0的值或是某个对象,数组,字符串,都会认为true