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

来源:互联网 发布:58网络销售工作怎么样 编辑:程序博客网 时间:2024/06/08 05:40

目录
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
阅读全文
0 0
原创粉丝点击