文章目录
用户画像是一个非常通用普遍使用的系统,从我们的架构图中可以看出,从数据计算时效性上来讲分离线计算和实时计算。离线计算一般是每天晚上全量计算所有用户,或者按需把用户数据发生变化的那批用户重新计算。离线计算主要是使用Hive SQL语句处理、Spark数据处理、或者基于机器学习算法来算用户忠诚度模型、用户价值模型、用户心理模型等。实时计算指定的通过Flume实时日志收集用户行为数据传输到Kafka消息队列,让流计算框架Flink/Storm/SparkStreaming等去实时消费处理用户数据,并触发实时计算模型,计算完成后把新增的用户画像数据更新搜索索引。个性化推荐、运营推广需要获取某个或某些用户画像数据的时候直接可以毫秒级别从搜索索引里搜索出结果,快速返回给调用方数据。这是从计算架构大概分了两条线离线处理和实时。
下面我们从上到下详细看下每个架构模块如图2.3所示:
图2.3 用户画像系统架构图
(1)收集和用户画像相关的Mysql业务数据库每天增量抽取到Hadoop平台,当然第一次的时候需要全量的来做初始化,数据转化工具可以用Sqoop,它可以分布式的批量导入数据到Hadoop的Hive;
(2)和用户画像相关的Flume分布式日志收集可以从各个Web服务器实时收集比如用户行为、埋点数据等,可以指定source和sink直接把数据传输到Hadoop平台。
在大数据平台建设用户画像相关的数据集市,分层设计,道理和推荐、搜索相似的。
(1)Hive SQL可以对一部分用户数据进行计算,得到一部用户画像属性,如果是特别的复杂用户属性,比如需要用到机器学习的,我们可以用下面的Spark平台来处理。
(2)Spark从Hadoop平台加载用户数据一个是进行一部分数据处理、另外用机器学习模算法来计算一些复杂的用户属性,比如用户忠诚度模型、用户价值模型、用户心理模型等,当然这些模型也不一定用机器学习,用规则实现也是可以的。
(3)不管是用Hive SQL计算,还是用Spark来处理,最终的用户模型结果多会在Hadoop的Hive仓库存一份,然后会单独写一个Spark任务把这个用户画像模型加载更新到Solr或ES搜索索引里,供线上接口实时调用获取。另外Hadoop上面存的这份Hive用户画像表的数据也会根据公司的其他部门定制需求,按需异步的执行Hive SQL然后落地到本地文件,然后分发到需求方的服务器上,或者返回落地文件访问地址,让其它部门主动wget这个文件数据。
(1)Flume实时日志收集用户行为数据传输到Kafka消息队列,让流计算框架Flink/Storm/SparkStreaming等去实时消费处理用户数据,并触发实时计算模型,计算完成后把新增的用户画像数据更新搜索索引。实时计算是按需计算,那个用户行为有变化才会触发计算,没有变化用户行为数据不会收集到消息队列里,自然也不会触发计算。
(2)如果有需要实时计算完成后,除了更新Solr或ES索引,也可以更新到Hbase里面,然后建一个Hive到Hbase的映射表,就可以对Hbase里的实时用户画像数据做统计分析。当然也可以Hbase Shell脚本,但没有Hive SQL方便灵活。
这是毫秒级提供实时用户画像数据的核心,不但可以根据用户ID来查询,而且能根据任意的定制查询字段来精确的筛选。另外,因为是搜索引擎,自然可以通过关键词来做一些模糊的相关度搜索。
(1)因为我们用的Solr/ES搜索引擎,它们是用Java开发的,所以Web接口建议也使用Java来做。
(2)这个Web接口是实时提供给需求方的,比如推荐接口获取某个用户画像的数据直接根据用户ID就能几毫秒内把对应的用户画像数据实时返回。当然也可以根据其他筛选条件或指定关键词搜索获取topN前面几个用户画像数据,注意这种方式不是把符合筛选条件的所有用户数据返回,一般是前几十或几百个。最多的话一般一次就几千。太多的话,一个是慢,另一个是可能会把Web服务器比如Tomcat整挂了。
(1)为什么说这是个Web自助后台呢?一般是这种应用场景,运营团队要筛选一部分用户做广告投放,这个时候通过Web后台指定筛选条件,点击异步获取,然后这个异步获取会触发后台异步指定Hive SQL或者其它比如Spark处理程序、Spark SQL等从用户画像集市里查询出对应的所有用户集合,这个用户集合会比较大,不是几千条,一般是几十万、几百万这个量级,然后落地生成文件。异步计算完成后会返回一个文件地址,自助人员就可以把这个文件下载下来做后续的其他处理去了。
(2)什么叫实时展示异步触发呢?实时展示指的是我筛选的那部分用户,可以先实时调用搜索结果先看下前面一些样本数据如何,能返回多少个用户,这次推广能有多少用户触达。因为调用搜索接口是毫秒级的在页面上分页展示数据,很快能看到大概的一个效果。如果是异步获取数据,一般计算时间会很长,比如最少几分钟、甚至几个小时等。执行了这么久,不是自己想要的数据就白搞了。所以实时展示是快速验证下是不是自己想要的数据,确定了再去异步大批量的获取数据。
用户画像系统架构基本上是这个架构,每个公司大同小异。用户画像系统是一个通用和核心的系统,如果公司有预算的情况下,一般是安排一个用户画像小组专门负责这块的研发。
从上面几个系统的架构大家也能看出来,基于大数据的分布式人工智能应用系统,一般必须得掌握核心的Hadoop、Hive、Hbase、Spark等大数据平台和框架,分布式机器学习也是以它们为基础的,所以下面的章节专门讲一下大数据基础核心框架。
其它深度学习框架也有不错的开源实现,比如MXNet,后面请大家关注充电了么app,课程,微信群,更多内容请看新书《分布式机器学习实战(人工智能科学与技术丛书)》
【新书介绍】
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目
【新书介绍视频】
视频特色:重点对新书进行介绍,最新前沿技术热点剖析,技术职业规划建议!听完此课你对人工智能领域将有一个崭新的技术视野!职业发展也将有更加清晰的认识!
【精品课程】
【免费体验视频】:
视频特色: 本系列专家级精品课有对应的配套书籍《分布式机器学习实战》,精品课和书籍可以互补式学习,彼此相互补充,大大提高了学习效率。本系列课和书籍是以分布式机器学习为主线,并对其依赖的大数据技术做了详细介绍,之后对目前主流的分布式机器学习框架和算法进行重点讲解,本系列课和书籍侧重实战,最后讲几个工业级的系统实战项目给大家。 课程核心内容有互联网公司大数据和人工智能那些事、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)、就业/面试技巧/职业生涯规划/职业晋升指导等内容。
【充电了么公司介绍】
充电了么App是专注上班族职业培训充电学习的在线教育平台。
专注工作职业技能提升和学习,提高工作效率,带来经济效益!今天你充电了么?
https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app
功能特色如下:
【全行业职位】 - 专注职场上班族职业技能提升
覆盖所有行业和职位,不管你是上班族,高管,还是创业都有你要学习的视频和文章。其中大数据智能AI、区块链、深度学习是互联网一线工业级的实战经验。
除了专业技能学习,还有通用职场技能,比如企业管理、股权激励和设计、职业生涯规划、社交礼仪、沟通技巧、演讲技巧、开会技巧、发邮件技巧、工作压力如何放松、人脉关系等等,全方位提高你的专业水平和整体素质。
【牛人课堂】 - 学习牛人的工作经验
1.智能个性化引擎:
海量视频课程,覆盖所有行业、所有职位,通过不同行业职位的技能词偏好挖掘分析,智能匹配你目前职位最感兴趣的技能学习课程。
2.听课全网搜索
输入关键词搜索海量视频课程,应有尽有,总有适合你的课程。
3.听课播放详情
视频播放详情,除了播放当前视频,更有相关视频课程和文章阅读,对某个技能知识点强化,让你轻松成为某个领域的资深专家。
【精品阅读】 - 技能文章兴趣阅读
1.个性化阅读引擎:
千万级文章阅读,覆盖所有行业、所有职位,通过不同行业职位的技能词偏好挖掘分析,智能匹配你目前职位最感兴趣的技能学习文章。
2.阅读全网搜索
输入关键词搜索海量文章阅读,应有尽有,总有你感兴趣的技能学习文章。
【机器人老师】 - 个人提升趣味学习
基于搜索引擎和智能深度学习训练,为您打造更懂你的机器人老师,用自然语言和机器人老师聊天学习,寓教于乐,高效学习,快乐人生。
【精短课程】 - 高效学习知识
海量精短牛人课程,满足你的时间碎片化学习,快速提高某个技能知识点。
网友评论