您的位置:首页 > 运维架构 > Shell

07-天亮大数据系列教程之streaming运行流程与shell实现wordcount

2017-11-23 17:55 447 查看
目录

1、streaming运行流程

2、streaming任务提交与shell实现wordcount

3、常用参数支持

详情

1、streaming运行流程

Java标准版运行流程



streaming运行流程

在worker处存在差异,通过stdin/stdout将PipeMapper和StreamingMapper打通



2、streaming任务提交与shell实现wordcount

步骤实现

数据准备

map编写

reduce编写

driver不再需要写了…….

yarn jar提交

结果查看

步骤详情

数据准备

hdfs目录



shell map编写



shell reduce编写



shell运行

本地测试



集群执行模板

通用模板:yarn jar  streaming_jar_path.jar [genericOptions] [streamingOptions]
细化模板 :yarn jar streaming_jar_path.jar \
-D configKey =configValue \
-input inputDirs \
-output outputDirs \
-mapper scriptMapper \
-reducer scriptReducer \
-file uploadFile


样例(shell实现wordcount案例)

yarn jar /usr/hdp/2.4.3.0-227/hadoop-mapreduce/hadoop-streaming.jar \
-Dmapred.output.compress=false \
-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-Dmapred.reduce.tasks=1 \
-input /tmp/tianliangedu/input \
-output /tmp/tianliangedu/output73 \
-mapper "sh mapper_shell.sh" \
-reducer "sh reducer_shell.sh" \
-file mapper_shell.sh \
-file reducer_shell.sh


输出效果



3、常用参数支持

通用系统参数传递

设置job名称 : -Dmapreduce.job.name=”jobName”

是否压缩输出:-Dmapred.output.compress=true

压缩格式设置:-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec

设置reduce数量:-Dmapred.reduce.tasks=1

批量上传文件:-files,此为hadoop generic参数,要放到参数的最前边跟-D一样传输

yarn jar /usr/hdp/2.4.3.0-227/hadoop-mapreduce/hadoop-streaming.jar \
-files mapper_shell.sh,reducer_shell.sh \
-Dmapred.output.compress=false \
-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-Dmapred.reduce.tasks=1 \
-Dstream.map.output.field.separator=\001 \
-input /tmp/tianliangedu/input \
-output /tmp/tianliangedu/output76 \
-mapper "sh mapper_shell.sh" \
-reducer "sh reducer_shell.sh" \


设置map的输出分隔符:-Dstream.map.output.field.separator =\t

设置map输出的时候key的组成:-Dstream.num.map.output.key.fields = 4

设置自定义的比较器: -Dmapreduce.job.output.key.comparator.class = org.apache.hadoop.mapreduce.lib.partition.KeyFieldBasedComparator

streamingy应用参数传递

上传一个文件:-file , 此为streaming参数

设定mapper执行文件:-mapper

设定reducer执行文件:-reducer

设定输入文件目录:-input

设定输出文件目录 : -output

设定自定义分区器: -partitioner=org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息