美文网首页
hadoop pipeline 搭建

hadoop pipeline 搭建

作者: siduoge | 来源:发表于2019-11-04 21:27 被阅读0次

    背景

        在互联网公司做算法工程师,一般的工作流程是1.hadoop跑数据做线下调研,2 调研结果出来后,跟线上效果做对比,3 线下调研结果OK 将模型上线。一般来讲,训练数据都具有时效性,模型需要常常更新才能在线上获得稳定的效果,于是在模型上线后搭建一个自动化更新模型的pipeline就变得非常重要了。

        pipeline的一般搭建流程如图一所示:

        

    图一:pipeline一般流程

        首先是日志挖掘,从线上日志利用hadoop挖掘原始数据;其次是从原始数据中清洗并且提取特征(可能这里还需要对数据进行采样,变换数据分布);然后是重新自动训练一个新的模型,在测试集上自动评估后,以词典的方式上线。(深度学习的模型参数值保存为pb文件,可以通过上线词典的形式更新模型)。我将整体的pipeline 流程分为三段: 

            a.数据集生成,hadoop 日志挖掘与清洗

            b.模型生成,模型自动训练

            c.词典上线,评估结果并自动上线

    数据集生成,hadoop 日志挖掘与清洗

        在数据集生成阶段,其实可以分为三段: 1 日志挖掘原始数据;2 数据清洗与特征变换;3 数据抽样变换分布,用一个主shell处理数据集生成。

        1 在这里每一个子任务都应该由一个shell脚本处理,在每一个子任务里都应该打印重要的参数信息,例如输入和输出以及其他的重要参数,方便脚本出错debug调试。每一个子任务都可能有很多需要控制的参数,这些参数不应该分开写在每个shell里,应该写在主shell里统一控制。

        2 一个自动化的pipeline应该是全程自行的,不需要我们去管他。只有当遇到错误发生的时候需要提醒我们去处理。所以在每一个子shell里应当编写if语句 发送邮件通知。

                if [ $? -ne 0 ];then

                           echo "dst M/R Job  fails" | mail -s "check the hadoop shell"  邮箱名

                            exit 1

                fi

        3 有的数据清洗与特征变换任务可以在hadoop上直接完成,有的可能由于一些特征原因需要在本地完成,这点需要工程师自行决定怎么才是最优选择。

        4 对于数据抽样变换分布,我一般用蓄水池抽样,根据不同的分类,等概率抽取每个类别的样本数据

    相关文章

      网友评论

          本文标题:hadoop pipeline 搭建

          本文链接:https://www.haomeiwen.com/subject/mxcjbctx.html