您的当前位置:首页正文

用户画像技术实现之大致思路

来源:帮我找美食网
⽤户画像技术实现之⼤致思路

⽤户画像实现的基础功能,准确的应该说是⼤数据开发相关组件功能的⽤途。当作学习⼤数据⼀个具体的案例,基本所有项⽬都是以⽤户为中⼼,只是各项⽬的侧重点不同。WEB项⽬相关技术组件不在此讨论。

⽤户标签数据存储

⼤数据数据存储组件基本运⽤较多mysql,hbase,elasticsearch、1.mysql

MySQL作为关系型数据库,在⽤户画像中可⽤于元数据管理、监控预警数据、结果集存储等应⽤

⽤户的⽤户名,昵称,性别等基础信息,标签的定义、管理等⼀些基本的元数据。⽤户标签相关数据的⼀些结果集(⽐如⼀天某功能的统计结果)。

2.HBase

是⼀个⾼性能、列存储、可伸缩、实时读写的分布式存储系统,同样运⾏在HDFS之上。与Hive不同的是,HBase能够在数据库上实时运⾏,⽽不是跑MapReduce任务,适合进⾏⼤数据的实时查询。系统中⽤户的购买,点击等数据可以存储到hbase中3.Elasticsearch

Elasticsearch是⼀个开源的分布式全⽂检索引擎,可以近乎实时地存储、检索数据。⽽且可扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。对于⽤户标签查询、⽤户⼈群计算、⽤户群多维

透视分析这类对响应时间要求较⾼的场景,也可以考虑选⽤Elasticsearch进⾏存储。Elasticsearch是⾯向⽂档型数据库,⼀条数据在这⾥就是⼀个⽂档,⽤json作为⽂档格式。

基于HBase的存储⽅案并没有解决数据的⾼效检索问题。在实际应⽤中,经常有根据特定的⼏个字段进⾏组合后检索的应⽤场景,⽽

HBase采⽤rowkey作为⼀级索引,不⽀持多条件查询,如果要对库⾥的⾮rowkey进⾏数据检索和查询,往往需要通过MapReduce等分布式框架

进⾏计算,时间延迟上会⽐较⾼,难以同时满⾜⽤户对于复杂条件查询和⾼效率响应这两⽅⾯的需求。为了既能⽀持对数据的⾼效查询,同时也能⽀持通过条件筛选进

⾏复杂查询,需要在HBase上构建⼆级索引,以满⾜对应的需要。PS:

Hbase的rowkey虽然可以组合⼀些查询条件,hbase⼆级索引采⽤索引表的⽅案。但当复杂,多条件查询hbase有点不适,Elasticsearch可以组合hbase进⾏相关⾼效检索。

可以采⽤Elasticsearch存储HBase的索引信息,以⽀持复杂⾼效的查询功能。

Elasticsearch对⼀些商城或涉及到关键词检索⾮常适⽤。mysql不能⽀持复杂的检索查询,且数据量⽀持不够⼤,hbase也不太适合复杂检查,会涉及到⼤量的索引表。在作技术选型组合时三者相互结合。4.REDIS

REDIS⼀般⽤做数据缓存,当然也可以做⼀些型业务处理操作。这⾥把它当作⼀种存储⽅案。可以认为REDIS是mysql的⼀个补充。可以把⽤户基础信息等那些不易改变的数据

存在REDIS,可以增强WEB访问的响应速度。任务的执⾏调度(可以当作⼀种管理⼯具)常见调度⼯具

CRONTAB (最简单的⽅式,⼀般不使⽤)OOZIE(Hadoop⾃带的)

AZKABAN(开源的⼀个调度⼯具) OOZIE

Oozie是⼀个基于⼯作流的调度系统,⽤来管理Hadoop中的的各种操作。它是运⾏在Java Servlet容器中的Web应⽤,并⽤数据库存储⼯作流定义及状态等元数据。

Hadoop⽣态⾃带调度系统⼯作流通过DAG(有向⽆环图)来控制

调度可以基于时间和数据驱动,⼯作流通过hPDL定义(⼀种XML流程定义语⾔),资源⽂件(脚本、Jar包等)存放在HDFS

Azkaban

Azkaban是由Linkedin公司推出的⼀个批量⼯作流任务调度器,Azkaban使⽤job⽂件建⽴任务之间的依赖关系,并提供Web界⾯供⽤户管理

和调度⼯作流

Oozie和Azkaban的区别:

两者在功能⽅⾯⼤致相同,只是Oozie底层在提交Hadoop Spark作业是通过org.apache.hadoop的封装好的接⼝进⾏提交,⽽Azkaban可以直接操作shell语句。在安全性上可能Oozie会⽐较好。

⼯作流定义:Oozie是通过xml定义的⽽Azkaban为properties来定义。部署过程:Oozie的部署相对困难些,同时它是从Yarn上拉任务⽇志。

Azkaban中如果有任务出现失败,只要进程有效执⾏,那么任务就算执⾏成功,这是BUG,但是Oozie能有效的检测任务的成功与失败。操作⼯作流:Azkaban使⽤Web操作。Oozie⽀持Web,RestApi,Java API操作。

权限控制:Oozie基本⽆权限控制,Azkaban有较完善的权限控制,供⽤户对⼯作流读写执⾏操作。Oozie的action主要运⾏在hadoop中⽽Azkaban的actions运⾏在Azkaban的服务器中。

记录workflow的状态:Azkaban将正在执⾏的workflow状态保存在内存中,Oozie将其保存在Mysql中。出现失败的情况:Azkaban会丢失所有的⼯作流,但是Oozie可以在继续失败的⼯作流运⾏ 个性化推送

不涉及到推送的算法。对离线数据统计,实时分析做个了解。涉及到spark,flink组件。后续对⽤户画像及PV,UV模拟统计等这个⽰例项⽬所涉及到技术栈结合⼤数据组件进⾏整合

因篇幅问题不能全部显示,请点此查看更多更全内容

Top