WeBankFinTech / WeDataSphere

WeDataSphere is a financial grade, one-stop big data platform suite.
661 stars 162 forks source link

【有奖征文】Linkis是如何为Boss直聘数据中台赋能的? #23

Open liangqilang opened 4 years ago

liangqilang commented 4 years ago

一、Boss直聘数星平台介绍

结合业内的大数据业务经验,以及在公司内的实际业务环境,为了帮助数据和技术人员可以更加方便地利用大数据技术、帮助产品运营等业务人员可以轻松用数据创建业务价值,我们自研了一站式大数据应用开发和数据管理平台——数星平台。

 围绕着数据的血缘链路,从数据源头的生产管理,到数据同步采集、数据存储,实时离线计算引擎,
 再到数据的服务化,对接业务应用等,实现了数据开发、任务运维、自助分析、数据管理、项目管理、调度管理及多租户管理等功能。

 数星平台将数据开发、数据分析、数据ETL等数据科学工作通过工作流的方式有效地串联起来,
 提高了数据开发工程师和数据分析工程师的工作效率;作用于业务上,提高了数据价值变现的能力。

目前支持: 4套集群(实时Flink on Yarn集群 + Hadoop集群 + Spark集群 + Hbase集群)稳定使用; 数星平台—入口flume系统:每天采集400多亿条日志,接入实时的 ETL 存储解析流程,交付下游数据团队稳定使用; 数星平台—入口Dbus系统:接入关系型数据库表数量5w+ 个,每日完成过亿条数据记录的同步操作; 数星平台—调度系统:承接了约 22400+ 的调度任务,涵盖各业务线应用的核心数据计算环节; DMP用户画像系统:接入了 5000+ 的用户标签,每日完成几万次人群画像分析服务;

目前服务近1000名产研、数据、算法的同学。

image

二、建设路径

现状问题: 如何将各BU大数据技术堆栈百花齐放转变为统一的平台
方案方案:四步走:工具、平台、数据、应用
第一步:全链路工具积累各场景用户量,datax、flume、kafka、canal、Ranger等等,提供不同场景的工具包指的获取用户流量。
第二步:工具互通形成平台,提高效率:kafka 对接 flume形成统一采集平台、canal 对接 kafka 统一binlog服务;
第三步:沉淀公共数据指标,提供数据地图、开发平台等产品,增加用户粘性。
第四步:场景化pipeline抽象应用工厂提高数据应用研发上线的效率,将能形成闭环的数据产品做出公共应用,为业务方做乘法,为自己做加法。

image

三、Linkis的价值

数据开发平台,尤其是hive、spark方面,linkis提供了整体技术解决方案,网关、入口、引擎、资源管理、公共服务等模块抽象了开发平台的业务,为后续新引擎的扩展提供了无限可能,目前日均SQL任务量4000左右。
Linkis使用心得:
(1)代码质量高:分包、分层合理。
(2)架构设计精良:子系统职责分明,通讯协议规范。参考我们参考Publicservice聚合不同领域API的模式实现了StreamManager模块。
(3)运行稳定:目前承接了很多对可用性要求高的,消息推送业务,整体运行稳定性比较好。
(4)可扩展性强,面向接口编程,方便后续扩展实现新特性。例如:storage子系统的com.webank.wedatasphere.linkis.storage.fs文件系统接口可以很方便实现其他存储系统。

四、扩展点:让Linkis支持数据角色,解决百名数据员工权限混乱问题。

image

问题:      
   按照用户和资源进行绑定授权,会带来以下问题:
(1)hadoop用户量膨胀,/user/*目录管控治理繁杂
(2)员工离职入职权限初始化繁琐
(3)按照部门进行资源审计工作量大
(4)权限元数据信息膨胀
解决方案:
    将数据按照角色进行管理、授权
(1) 登录用户、引擎用户隔离,具体办法:loginUser(用户账号)、umUser(数据角色)
(2)集成数据权限系统,进行角色校验,gateway网关透传entrance的时候引擎的时候切角色账号
(3)Apache Ranger 解决hive、spark权限,带来新问题:hdfs rpc超时严重,重写Apache Ranger API以及hdfs插件去除无用的鉴权例如:执行权限。

五、扩展点:互相打通形成新功能,数据订阅服务

问题:定时日报、周报,简单的数据监控场景,形式SQL+定时+邮件
解决方案:Linkis Web进行定时任务录入,包括:SQL、触发时间、目标邮件地址等信息,调度系统扩展Linkis 执行器,集成SDK即可。

六、扩展点:Impala引擎

问题:JDBC方式天然缺陷,无法获取进度条,缺失失效重连机制等
解决方案:
        1、thrift协议  thrift -r --gen java TCLIService.thrift(hive-1-api目录)
        2、重连机制,实现连接池
        3、impala、hive 队列不匹配问题,需要按照一定逻辑做好队列映射。

七、扩展点:权限体系 + Mysql、ClickHouse引擎

问题:Mysql、ClickHouse、PostgreSQL、Kylin...... 账号权限控制
代理授权系统: 用户、组账号、库类型、库实例、库/表、可操作权限
数据源管理系统:库类型、库实例、操作类型、账号密码
使用:库实例、SQL、角色账号

八、扩展点:Flink实时计算平台

特性:Engine需要支持提交flink 不同版本的作业到不同的yarn集群, 例如:flink  1.9、1.11 ,因为不同版本的Flink submit 任务的API 和机制 不一样,所以Engine也要支持插件化,并且在SQL 的开发场景,会面临同一时间段的SQL提交到一个 Flink Session中。参考Linkis publicservice 聚合服务的机制,设计了streamManager,支持作业开发、物料版本控制、作业上线/回滚、日志搜索、监控报警等工作。
线上环境:DataStream、SQL 
开发环境:SQL
解决方案:
(1)StreamManager
(2)FlinkEntrance、FlinkEngineManager、FlinkEngine
(3)EngineGroup机制

九、扩展点:Linkis SDK 在Push推送以及特征计算同步一体化场景的运用

主要解决:上G结果集,数据传输的问题
支持3种方式下载结果集:
(1)默认直接下载
(2)经过publicservice 流下载:Linkis Dolphin ResultSetReader.getResultSetReader 反序列化读取即可。
(3)直接连接集群下载:获取result path,hadoop FileSystem read即可,需要注意的是去掉Linkis Dolphin协议,换成txt即可。

十、解决数据最后一公里赋能的问题:如何将Hive表变成Http、Dubbo接口?数据API服务方面的探讨

image

问题:数据分析师、数据工程师 数据上线的问题
两条pipeline,协议代码自动生成:支持dubbo、http
(1) online: hive、hbase、redis 、api、用户产品
(2) offline: hive、clickhouse、BI
特性:资源自助申请、K8S容器化部署管理、网关路由监控配置管理:Spring Cloud、Nacos、Sentinel
1、数据开发者(数仓|分析师):少做一些事
    减轻开发:减轻DM/DWS层到APP层的数据开发同步工作,对导入结果表类型无感知,在整个需求中可以提前退场解放
2、数据调用方(服务端RD):少做一些事,配接口、调接口方便
    分担职责:数据开发和运维的职责转移到上游,专注业务逻辑开发,对上游表类型无感知
    代码分离:数据代码、业务代码分离,方便业务交接
    方便调试:数据代码通过配置自动生成,可快速调试(测试调整、线上调整)
3、数据应用方(业务方PM):流程清楚,需求交付快
流程清晰:基于数据的业务应用开发流程清晰化(数据开发-数据接口配置-业务代码开发),便于跟踪进度(节点-相关人)
缩短需求周期:数据代码自动生成代替手动开发,缩短业务需求的整体开发周期
降低“改需求”的成本:若要基于OS接口的业务应用做优化迭代,无需阅读修改代码,界面改配置即可
4、系统维护方(管理员):可管控,可追踪

image

Linkis,目前是我们这边数据平台DAU排名top3的产品,感谢微众银行的同学!