Share Dialog
Share Dialog
<100 subscribers
<100 subscribers


四月份换了岗位,从运维转到了大数据平台开发,整个知识体系都要重新梳理。幸好之前学习的大数据知识还存在,对于一些组件还算熟悉,这篇文章主要梳理一下当前我司画像标签系统的基本架构,由于还在熟悉中,一些细节会逐渐补充。
作为一家金融公司,通过画像标签系统可以构建对于不同客户的区分,提高营销活动目标人群的准确性。巴拉巴拉.
一般而言,画像标签系统都依据公司的大数据平台计算能力来构建,在数据仓库完成基本的标签计算,然后讲数据推送到指定的存储系统,数据流向如下:

一个完整的画像标签系统数据流向如上,从数据源抽取需要的数据到大数据平台进行加工,加工完成后推送到存储平台。
但是,一般而言,但公司决定做画像标签系统的时候,大数据的仓库应该基本构建完成,构建画像标签的数据之间从仓库的基础模式里面获取就可以。抽取,我们公司的调度改了一下DataX拿来使用。
这个的设计难点有两个:
标签存在hive在里面应该用哪种模式?
画像标签有一个非常大的特点就是每个标签的更新时间是分开,一个客户会有成千上百个标签,每个标签的依赖的基础数据不一样,计算的时间也会不一样。在一开始的版本,是在Hive 使用多分区,每个标签作为时间的下级标签,这样更新某个用户的数据的时候只需要做到更新单独的分区既可以,但是这样做的带来的一个问题,但是我们想查看某个用的所有标签的时候,会扫描几千个分区,如果再乘以一个时间,会拖累hive的metastore的性能。
后面经过调研,选择Icebery
选择iceberg有一下理由
iceberg的表结构是松散的
iceberg支持ACID
icbery的元数据不依赖hive的metastore,不会对metaster造成压力查询
基本的画像架构就变成:

Spark负责数据的加工和推送一份最新的数据到ES,由于目前ES存储有限,只保留了一份最新的用户数据,如果画像系统里面需要查询其他的历史,我们使用了trino(presto)来解决这个问题。
虽然基本架构是看起来是没有文档,但是目前还一些细节上还存很多问题,包括数据同步慢、前后端没有分离、上线不够自动化、以及数据接口非常多的个性化,这些是我转岗之后要解决的问题,也是接下来一个月的任务。
暂时先写这么多,最近在学习Vue,一个老运维的转型之路。
四月份换了岗位,从运维转到了大数据平台开发,整个知识体系都要重新梳理。幸好之前学习的大数据知识还存在,对于一些组件还算熟悉,这篇文章主要梳理一下当前我司画像标签系统的基本架构,由于还在熟悉中,一些细节会逐渐补充。
作为一家金融公司,通过画像标签系统可以构建对于不同客户的区分,提高营销活动目标人群的准确性。巴拉巴拉.
一般而言,画像标签系统都依据公司的大数据平台计算能力来构建,在数据仓库完成基本的标签计算,然后讲数据推送到指定的存储系统,数据流向如下:

一个完整的画像标签系统数据流向如上,从数据源抽取需要的数据到大数据平台进行加工,加工完成后推送到存储平台。
但是,一般而言,但公司决定做画像标签系统的时候,大数据的仓库应该基本构建完成,构建画像标签的数据之间从仓库的基础模式里面获取就可以。抽取,我们公司的调度改了一下DataX拿来使用。
这个的设计难点有两个:
标签存在hive在里面应该用哪种模式?
画像标签有一个非常大的特点就是每个标签的更新时间是分开,一个客户会有成千上百个标签,每个标签的依赖的基础数据不一样,计算的时间也会不一样。在一开始的版本,是在Hive 使用多分区,每个标签作为时间的下级标签,这样更新某个用户的数据的时候只需要做到更新单独的分区既可以,但是这样做的带来的一个问题,但是我们想查看某个用的所有标签的时候,会扫描几千个分区,如果再乘以一个时间,会拖累hive的metastore的性能。
后面经过调研,选择Icebery
选择iceberg有一下理由
iceberg的表结构是松散的
iceberg支持ACID
icbery的元数据不依赖hive的metastore,不会对metaster造成压力查询
基本的画像架构就变成:

Spark负责数据的加工和推送一份最新的数据到ES,由于目前ES存储有限,只保留了一份最新的用户数据,如果画像系统里面需要查询其他的历史,我们使用了trino(presto)来解决这个问题。
虽然基本架构是看起来是没有文档,但是目前还一些细节上还存很多问题,包括数据同步慢、前后端没有分离、上线不够自动化、以及数据接口非常多的个性化,这些是我转岗之后要解决的问题,也是接下来一个月的任务。
暂时先写这么多,最近在学习Vue,一个老运维的转型之路。
No comments yet