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. .NTE Core Web API Example

    Source from :https://www.codeproject.com/Articles/1260600/Speed-up-ASP-NET-Core-WEB-API-application- ...

  2. mysql的数据库开放权限

    链接数据库之后运行下面的命令即可 grant all PRIVILEGES on *.* to %username%@'%' identified by '%password%'; 如给root链接数 ...

  3. static的使用总结

    全局静态变量 全局变量前加上关键字static,全局变量就定义成一个全局静态变量.,全局静态变量存储在静态存储区,在整个程序运行期间一直存在.全局静态变量在程序运行之前就存在. 初始化:未经初始化的全 ...

  4. it兼职以及行业门户网

    程序员接私活的七大平台 https://www.jianshu.com/p/61a3fabe75fc 1.程序员客栈:程序员的经纪人 https://www.proginn.com/     2.快码 ...

  5. 多表更新:update,join

    1.多表更新: 下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法. 前期准备工作: update join_teacher_class jo ...

  6. Dockerfile文档编写

    图片显示问题,附上有道云笔记中链接:http://note.youdao.com/noteshare?id=fba6d2f53fd6447ba32c3b7accfeb89b&sub=B36B5 ...

  7. centOs安装出现No package git available的解决办法

    来源地址 [http://chinacheng.iteye.com/blog/1825538 ] centos安装git 下载源代码安装后,git clone出现“fatal unable to fi ...

  8. 移动端rem屏幕设置

    //修改页面title var pageTitle=document.getElementsByTagName("title")[0].innerHTML; if(location ...

  9. 【PAT甲级】1096 Consecutive Factors (20 分)

    题意: 输入一个int范围内的正整数,输出它最多可以被分解为多少个连续的因子并输出这些因子以*连接. trick: 测试点5包含N本身是一个素数的数据,此时应当输出1并把N输出. 测试点5包含一个2e ...

  10. c语言实现面向对象编程

    1.通用校验器接口(validator.h) #ifndef VALIDATOR_H_INCLUDED #define VALIDATOR_H_INCLUDED #include<stdbool ...