• hadoop学习;Streaming,aggregate;combiner


    hadoop streaming同意我们使用不论什么可运行脚本来处理按行组织的数据流,数据取自UNIX的标准输入STDIN,并输出到STDOUT

    我们能够用 linux命令管道查看文本有多少行。cat data.txt |wc -l 以下我们用streaming实现,先将文件放入hdfs,然后输出结果,streaming的包在contrib/streaming以下


    通过设定mapper为‘RandomSample.py 10’,我们按十分之中的一个的採样率。没有设定特殊的reducer。一般默认使用IdentityReducer(把输入直接转向输出)

    通过HDFS的命令getMerge(输出合并)或其它文件操作,能够获得正确数目的输出文件

    随机採样脚本用Python实现,可是仅仅要基于STDIN和STDOUT的脚本语言都能够,当把一个文件当作php脚本时。<?php ...........?

    >这里的?

    >要省略

    在Sreaming中,每一个mapper都会看到完整的数据流。也正是由mapper负责将完整的数据流切割成记录。而在java模式中,是由框架将输入数据切割为记录。每次仅将一个记录传给map()。

    Streaming模式更easy维护一个分片中跨记录的状态信息,我们利用这一点计算多个记录中的最大值。

    聚类算法:能够让mapper计算一个分片(多个记录)的最大值,reducer接收这些值并输出一个全局最大值

    我们使用聚合函数来计算统计,它通常分为三类:分配型。代数型和全集型。最大函数式是一个分配型的样例。其它分配型包含最小值。求和和计数。分配型函数具有分配律特征。你能够在逻辑上循环的将这些函数应用到更小块的数据上

    默认情况下Streaming使用制表符分离记录的key和value,当没有制表符时。整个记录被视为key,而value为空白文本。mapper能够选择把每条记录翻译成一个键值对,还是一行文本

    实践上讲reducer的输出直接写入到一个文件里,但技术上讲。在写之前还有个无操作的步骤,在这个步骤中,Streaming API将reducer的输出自己主动用制表符分开。并将键值对送到默认的TextOutPutFormat中,即在文件输出前。默认插入一个制表符

    hadoop有个aggregate软件包。它让数据汇集更为简单


    当我们使用的时候,能够直接封装,比如编写ValueHistogram.py对ValueHistogram进行封装



    在mapper和reducer之间添加了combiner,它在数据的转换上必须同reducer等价,mapreduce能够使用combiner次数不限(0到N),假设我们去掉combiner,reducer输出应保持不变,并且当combiner被应用于中间数据随意子集时,仍需保持等价转换的特性




  • 相关阅读:
    Linux块设备IO子系统(二) _页高速缓存
    Linux块设备IO子系统(一) _驱动模型
    Linux usb子系统(二) _usb-skeleton.c精析
    Linux usb子系统(一) _写一个usb鼠标驱动
    Linux i2c子系统(四) _从i2c-s3c24xx.c看i2c控制器驱动的编写
    Linux i2c子系统(三) _解决probe无法执行
    Linux i2c子系统(二) _通过i2c-dev.c访问设备的方法
    Linux i2c子系统(一) _动手写一个i2c设备驱动
    从0移植uboot(六) _实现网络功能
    从0移植uboot(五) _实现串口输出
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6869527.html
Copyright © 2020-2023  润新知