首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据用户画像系统架构设计

个性化搜索目前发展阶段不是要替换掉传统搜索,而是对传统搜索的一个补充。我们先看下它的架构如图2.3所示:

图2.3 用户画像系统架构图

用户画像是一个非常通用普遍使用的系统,从我们的架构图中可以看出,从数据计算时效性上来讲分离线计算和实时计算。离线计算一般是每天晚上全量计算所有用户,或者按需把用户数据发生变化的那批用户重新计算。离线计算主要是使用Hive SQL语句处理、Spark数据处理、或者基于机器学习算法来算用户忠诚度模型、用户价值模型、用户心理模型等。实时计算指定的通过Flume实时日志收集用户行为数据传输到Kafka消息队列,让流计算框架Flink/Storm/SparkStreaming等去实时消费处理用户数据,并触发实时计算模型,计算完成后把新增的用户画像数据更新搜索索引。个性化推荐、运营推广需要获取某个或某些用户画像数据的时候直接可以毫秒级别从搜索索引里搜索出结果,快速返回给调用方数据。这是从计算架构大概分了两条线离线处理和实时。下面我们从上到下详细看下每个架构模块。

1)搜索数据仓库搭建、数据抽取部分

(1)和用户画像相关的Mysql业务数据库每天增量抽取到Hadoop平台,当然第一次的时候需要全量的来做初始化,数据转化工具可以用Sqoop,它可以分布式的批量导入数据到Hadoop的Hive;

(2)和用户画像相关的Flume分布式日志收集可以从各个Web服务器实时收集比如用户行为、埋点数据等,可以指定source和sink直接把数据传输到Hadoop平台。

2)大数据平台、用户画像集市分层设计、处理

在大数据平台建设用户画像相关的数据集市,分层设计,道理和推荐、搜索相似的。

3)离线计算部分

(1)Hive SQL可以对一部分用户数据进行计算,得到一部用户画像属性,如果是特别的复杂用户属性,比如需要用到机器学习的,我们可以用下面的Spark平台来处理。

(2)Spark从Hadoop平台加载用户数据一个是进行一部分数据处理、另外用机器学习模算法来计算一些复杂的用户属性,比如用户忠诚度模型、用户价值模型、用户心理模型等,当然这些模型也不一定用机器学习,用规则实现也是可以的。

(3)不管是用Hive SQL计算,还是用Spark来处理,最终的用户模型结果多会在Hadoop的Hive仓库存一份,然后会单独写一个Spark任务把这个用户画像模型加载更新到Solr或ES搜索索引里,供线上接口实时调用获取。另外Hadoop上面存的这份Hive用户画像表的数据也会根据公司的其他部门定制需求,按需异步的执行Hive SQL然后落地到本地文件,然后分发到需求方的服务器上,或者返回落地文件访问地址,让其它部门主动wget这个文件数据。

4)实时计算部分

(1)Flume实时日志收集用户行为数据传输到Kafka消息队列,让流计算框架Flink/Storm/SparkStreaming等去实时消费处理用户数据,并触发实时计算模型,计算完成后把新增的用户画像数据更新搜索索引。实时计算是按需计算,那个用户行为有变化才会触发计算,没有变化用户行为数据不会收集到消息队列里,自然也不会触发计算。

(2)如果有需要实时计算完成后,除了更新Solr或ES索引,也可以更新到Hbase里面,然后建一个Hive到Hbase的映射表,就可以对Hbase里的实时用户画像数据做统计分析。当然也可以Hbase Shell脚本,但没有Hive SQL方便灵活。

5)Solr/ES搜索引擎部分

这是毫秒级提供实时用户画像数据的核心,不但可以根据用户ID来查询,而且能根据任意的定制查询字段来精确的筛选。另外,因为是搜索引擎,自然可以通过关键词来做一些模糊的相关度搜索。

6)Java Web毫秒级实时用户画像接口服务

(1)因为我们用的Solr/ES搜索引擎,它们是用Java开发的,所以Web接口建议也使用Java来做。

(2)这个Web接口是实时提供给需求方的,比如推荐接口获取某个用户画像的数据直接根据用户ID就能几毫秒内把对应的用户画像数据实时返回。当然也可以根据其他筛选条件或指定关键词搜索获取topN前面几个用户画像数据,注意这种方式不是把符合筛选条件的所有用户数据返回,一般是前几十或几百个。最多的话一般一次就几千。太多的话,一个是慢,另一个是可能会把Web服务器比如Tomcat整挂了。

7)用户画像实时展示异步触发获取Web自助后台

(1)为什么说这是个Web自助后台呢?一般是这种应用场景,运营团队要筛选一部分用户做广告投放,这个时候通过Web后台指定筛选条件,点击异步获取,然后这个异步获取会触发后台异步指定Hive SQL或者其它比如Spark处理程序、Spark SQL等从用户画像集市里查询出对应的所有用户集合,这个用户集合会比较大,不是几千条,一般是几十万、几百万这个量级,然后落地生成文件。异步计算完成后会返回一个文件地址,自助人员就可以把这个文件下载下来做后续的其他处理去了。

(2)什么叫实时展示异步触发呢?实时展示指的是我筛选的那部分用户,可以先实时调用搜索结果先看下前面一些样本数据如何,能返回多少个用户,这次推广能有多少用户触达。因为调用搜索接口是毫秒级的在页面上分页展示数据,很快能看到大概的一个效果。如果是异步获取数据,一般计算时间会很长,比如最少几分钟、甚至几个小时等。执行了这么久,不是自己想要的数据就白搞了。所以实时展示是快速验证下是不是自己想要的数据,确定了再去异步大批量的获取数据。

用户画像系统架构基本上是这个架构,每个公司大同小异。用户画像系统是一个通用和核心的系统,如果公司有预算的情况下,一般是安排一个用户画像小组专门负责这块的研发。

从上面几个系统的架构大家也能看出来,基于大数据的分布式人工智能应用系统,一般必须得掌握核心的Hadoop、Hive、Hbase、Spark等大数据平台和框架,分布式机器学习也是以它们为基础的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201107A0C7NW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券