文章标题

今天主要熟悉一下Hadoop – python – streaming

知识框架:
1. Streaming简介
2. Streaming优缺点
3. Streaming具体原理
4. Streaming使用方法
具体:
1. streaming简介:
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或脚本文件作为Mapper和Reducer,来从标准输入(stdin)中读取数据,将结果写入到标准输出(stdout)中.这非常类似于Linux的管道机制。

Hadoop支持用其他语言来编程,需要用到名为streaming的通用API
Streaming主要用于编写简单,短小的MapReduce程序,可以通过脚本语言编程,开发更快捷,并充分运用非Java库。

HadoopStreaming使用Unix中的流与程序交互,从stdin输入数据,从stdout输出数据。

实际上可以用任何命令作为mapper和reducer。
数据流示意如下:
cat [ input_file ] [ mapper ] | sort | [ reducer ] > [output_file]
cat | python mapper.py | sort | python reducer.py

2. streaming 优缺点:
优点:
1. 直接:
2. 方便灵活

缺点:
1. 慢
2. 无法避免的数据类型转换

3. streaming具体原理:
mapper和reducer会从标准输入中读取用户数据,一行一行处理后发送给标准输出。
如果一个文件( 可执行或者脚本 )作为mapper。

mapper初始化时,每一个mapper任务会把该文件作为一个单独进程启动;
mapper任务运行时,它把输入切分成行并且把每一行提供给可执行文件进程的标准输入。同时,mapper收集可执行文件进程标准输出的内容,并把收到的每一行内容转化成key/value对,作为mapper的输出。默认情况下,一行中的第一个tab之前的部分作为key,之后的( 不包括tab ) 作为value。如果没有tab,整行作为key,value作为null。

对于reducer,类似。

  1. Streaming使用方法
    Usage:
    HADOOP_HOME/bin/Hadoop jar
    HADOOP_HOME/contrib/streaming/Hadoop-*-streaming.jar [options]
    Options:
    (1) -input : 输入文件路径
    (2) –inputformat 输入格式 JavaClassName
    (3) -output : 输出文件路径
    (4) –outputformat 输出格式 JavaClassName
    (3) -mapper : 用户自己写的mapper程序,可以是可执行文件或脚本
    (4) -reducer : 用户自己写的reducer程序,可以是可执行文件或脚本
    (5) -file : 打包文件到要提交的作用中,可以是mapper或者reducer要用的输入文件,如配置文件,字典等。
    (6) –partitioner : 用户自定义的partitioner程序
    (7) –combiner : 用户自定义的combiner程序( 必须用java实现 )
    (8)cmdenv : 可以传递环境变量,可以当作参数传入到任务中,可以配置多个
    (9) -D : 作业的一些属性 ( 以前用的是-jobconf )
    -D 具体有:
    名称 含义 备注
    1) mapreduce.job.maps 每个Job运行map task的数量 (map启动的个数无法被完全控制)
    2) mapreduce.job.reduces 每个job运行reduce task的数量
    3) stream.map.input.field.seprator Map输入数据的分隔符 默认是\t (制表符)
    4) steam.reduce.input.field.seprator Reduce输入数据的分隔符 默认是\t
    5) stream.map.output.field.seprator Map输出数据的分隔符 默认是\t
    6) stream.map.output.field.seprator Reduce输出数据的分隔符
    7) stream.num.map.output.key.fields Map task输出record中key所占的个数
    8) stream.num.reduce.output.key.files Reduce task输出record 中key所占的个数

  2. Mapper和Reducer实现(Python实现) 及常见问题
    获取标准输入:
    import sys
    for line in sys.stdin:

常见问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值