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

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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...