目录
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目录
- 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