携程基于Flink的实时特征平台
本文来自7月26日在上海举行的 Flink Meetup 会议,分享来自于刘康,目前在大数据平台部从事模型生命周期相关平台开发,现在主要负责基于flink开发实时模型特征计算平台。熟悉分布式计算,在模型部署及运维方面有丰富实战经验和深入的理解,对模型的算法及训练有一定的了解。
本文主要内容如下:
- 在公司实时特征开发的现状基础上,说明实时特征平台的开发背景、目标以及现状
- 选择Flink作为平台计算引擎的原因
- Flink的实践:有代表性的使用示例、为兼容Aerospike(平台的存储介质)的开发以及碰到的坑
- 当前效果&未来规划
一、在公司实时特征开发的现状基础上,说明实时特征平台的开发背景、目标以及现状
1、原实时特征作业的开发运维;
1.1、选择实时计算平台:依据项目的性能指标要求(latency,throughput等),在已有的实时计算平台:Storm Spark flink进行选择
1.2主要的开发运维过程:
- 80%以上的作业需要用到消息队列数据源,但是消息队列为非结构化数据且没有统一的数据字典。所以需要通过消费对应的topic,解析消息并确定所需的内容
- 基于需求中的场景,设计开发计算逻辑
- 在实时数据不能完全满足数据需求的情况,另外开发单独的离线作业以及融合逻辑;
例如:在需要30天数据的场景下,但消息队列中只有七天内的数据时(kafka中消息的默认保留时间),剩下23天就需要用离线数据来补充。 - 设计开发数据的校验和纠错逻辑
消息的传输需要依赖网络,消息丢失和超时难以完全避免,所以需要有一个校验和纠错的逻辑。 - 测试上线
- 监控和预警
2、原实时特征作业的开发痛点
- 消息队列数据源结构没有统一的数据字典
- 特征计算逻辑高度定制化,开发测试周期长
- 实时数据不能满足需求时,需要定制离线作业和融合逻辑
- 校验和纠错方案没有形成最佳实践,实际效果比较依赖个人能力
- 监控和预警方案需要基于业务逻辑定制
3、基于整理的痛点,确定下来的平台目标
- 实时数据字典:提供统一的数据源注册、管理功能,支持单一结构消息的topic和包含多种不同结构消息的topic
- 逻辑抽象:抽象为SQL,减少工作量&降低使用门槛
- 特征融合:提供融合特征的功能,解决实时特征不能完全满足数据需求的情况
- 数据校验和纠错:提供利用离线数据校验和纠错实时特征的功能
- 实时计算延迟:ms级
- 实时计算容错:端到端 exactly-once
- 统一的监控预警和HA方案
4、特征平台系统架构
现在的架构是标准lamda架构,离线部分由spark sql + dataX组成。现在使用的是KV存储系统Aerospike,跟redis的主要区别是使用SSD作为主存,我们压测下来大部分场景读写性能跟redis在同一个数据量级。
实时部分:使用flink作为计算引擎,介绍一下用户的使用方式:
- 注册数据源:目前支持的实时数据源主要是Kafka和Aerospike,其中Aerospike中的数据如果是在平台上配置的离线或者实时特征,会进行自动注册。Kafka数据源需要上传对应的schemaSample文件
- 计算逻辑:通过SQL表达
- 定义输出:定义输出的Aerospike表和可能需要的Kafka Topic,用于推送Update或者Insert的数据的key
用户完成上面的操作后,平台将所有信息写入到json配置文件。下一步平台将配置文件和之前准备好的flinkTemplate.jar(包含所有平台所需的flink功能)提交给yarn,启动flink job。
5、平台功能展示
1)平台功能展示-数据源注册
2)实时特征编辑-基本信息
3)实时特征编辑-数据源选择
4)实时特征编辑-SQL计算
5)实时特征编辑-选择输出
二、选择Flink的原因
我们下面一个我们说一下我们选择flink来做这个特征平台的原因。
分为三个维度:最高延迟、容错、sql功能成熟度
- 延迟:storm和flink是纯流式,最低可以达到毫秒级的延迟。spark的纯流式机制是continuous模式,也可以达最低毫秒级的延迟
- 容错:storm使用异或ack的模式,支持atLeastOnce。消息重复解决不。spark通过checkpoint和WAL来提供exactlyOnce。flink通过checkpoint和SavePoint来做到exactlyOnce。
- sql成熟度:storm现在的版本中SQL还在一个实验阶段,不支持聚合和join。spark现在可以提供绝大部分功能,不支持distinct、limit和聚合结果的order by。flink现在社区版中提供的sql,不支持distinct aggregate
三、Flink实践
1、实⽤示例
2、兼容开发:flink现在没有对Aerospike提供读写支持,所以需要二次开发
3、碰到的坑
四、平台当前效果&未来规划
当前效果:将实时特征上线周期从原平均3天-5天降至小时级。未来规划:
- 完善特征平台的功能:融合特征等
- 简化步骤,提高用户体验
- 根据需求,进一步完善SQL的功能例如支持win的开始时间offset,可以通过countTrigger的win等
下一步的规划是通过sql或者DSL来描述模型部署和模型训练
携程基于Flink的实时特征平台相关推荐
- 携程基于Storm的实时大数据平台实践
来源:http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483881&idx=1&sn=04971941bf57 ...
- 日均百亿级日志处理:微博基于Flink的实时计算平台建设
来自:DBAplus社群 作者介绍 吕永卫,微博广告资深数据开发工程师,实时数据项目组负责人. 黄鹏,微博广告实时数据开发工程师,负责法拉第实验平台数据开发.实时数据关联平台.实时算法特征数据计算.实 ...
- 汽车之家基于 Flink 的实时计算平台 3.0 建设实践
▼ 关注「Apache Flink」,获取更多技术干货 ▼ 摘要:本文整理自汽车之家实时计算平台负责人邸星星在 Flink Forward Asia 2021 平台建设专场的演讲.主要内容包括: 应用 ...
- 基于Flink打造实时计算平台为企业赋能
点击上方 "zhisheng"关注, 星标或置顶一起成长 Flink 从入门到精通 系列文章 https://zhuanlan.zhihu.com/p/143169143 随着互联 ...
- 腾讯基于 Flink 的实时流计算平台演进之路
原文地址:https://www.infoq.cn/article/TjDeQDJQpKZ*NpG71pRW 大家好,我是来自腾讯大数据团队的杨华(vinoyang),很高兴能够参加这次北京的 QCo ...
- 当金融风控遇上人工智能,众安金融的实时特征平台实践
导读:随着企业数字化转型升级,线上业务呈现多场景.多渠道.多元化的特征.数据要素价值的挖掘可谓分秒必争,业务也对数据的时效性和灵活性提出了更高的要求.在庞大分散.高并发的数据来源背景下,数据的实时处理 ...
- 钱大妈基于 Flink 的实时风控实践
摘要:本文作者彭明德,介绍了钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失.主要内容包括: 项目背景 业务架构 未规则模型 难点攻坚 回顾展望 点击进入 ...
- plink源码_Plink v0.1.0 发布——基于Flink的流处理平台
Plink是一个基于Flink的流处理平台,旨在基于 [Apache Flink]封装构建上层平台. 提供常见的作业管理功能.如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配 ...
- 基于Flink的实时数据消费应用、功能质量保障方法
前言:由于最近公司的实时数据处理引擎再向Flink迁移,所以专门设计.总结了一篇"基于Flink的实时数据消费应用.功能质量保障方法".欢迎大家一起分享探讨在大数据方面的测试方法和 ...
最新文章
- Git config 查看和设置配置信息
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
- 面试题整理3 大数的表示及加减法问题
- 如何在手游中运用高逼格光影效果?
- 免密登录关闭_微信最新提醒:这个设置再不关闭,你的微信账号就能被别人“免密登录”!...
- C语言实践作业报告,c语言社会实践报告
- 画面逐渐放大_Redmi新机25倍极限放大拍照效果被公开,网友:6400万太厉害了
- 大学计算机相关理论,大学计算机理论基础 大学计算机基础理论题.doc
- 37wan《武易》全新系统机密放送
- 随机森林 matlab
- python的拼音_python 中文分词和拼音首字母
- RabbitMQ入门前篇
- ADB屏蔽知乎视频答案
- JavaScript判断当前浏览器是否为IE或者Edge
- 8个游戏开发工具让你不懂编程也能做游戏
- 钽电容,电解电容与普通电容的区别
- FMEA软件-FMEA的价值与局限性
- 同一局域网下两台PC之间大文件传输
- Xshell7、Xftp、Xmanager官方免费版下载
- 高仿京东Android App,集成React-Native热更
热门文章
- tomcat日志按天切分
- 《Python编程初学者指南》——1.2 Python简介
- Heritrix 3.1.0 源码解析(六)
- 在网上看到一个故事,我觉得挺感人
- FMS3系列(六):使用远程共享对象(SharedObject)实现多人时时在线聊天(Flex | Flash)
- Jq remove的使用
- CSS样式属性单词之Left
- LeetCode Number Complement
- 阿里云mariadb无法启动问题
- js处理异常try{}catch(e){}