day01_项目介绍和环境搭建
简单来说:用户画像就像是“用户的数字名片”,通过收集和分析用户的行为、兴趣、demographics(人口统计信息)等数据,构建出一个虚拟的用户模型,帮助企业更好地理解和服务用户。具体而言数据来源行为数据:用户的浏览、点击、购买等行为。兴趣数据:用户的偏好、关注点、兴趣标签。人口统计信息:用户的年龄、性别、地域、职业等。构建方法数据收集:通过日志、埋点、问卷调查等方式收集用户数据。数据分析:使用统
文章目录
day01_项目介绍和环境搭建
一、用户画像基本介绍(了解)
1、什么是用户画像
简单来说:用户画像就像是“用户的数字名片”,通过收集和分析用户的行为、兴趣、 demographics(人口统计信息)等数据,构建出一个虚拟的用户模型,帮助企业更好地理解和服务用户。
具体而言:
- 数据来源:
- 行为数据:用户的浏览、点击、购买等行为。
- 兴趣数据:用户的偏好、关注点、兴趣标签。
- 人口统计信息:用户的年龄、性别、地域、职业等。
- 构建方法:
- 数据收集:通过日志、埋点、问卷调查等方式收集用户数据。
- 数据分析:使用统计分析和机器学习方法,挖掘用户特征。
- 标签化:将用户特征转化为标签,如“高消费用户”、“科技爱好者”。
- 应用场景:
- 精准营销:根据用户画像推送个性化的广告和促销活动。
- 产品优化:根据用户画像优化产品设计和功能。
- 用户分群:根据用户画像将用户分为不同群体,制定差异化策略。
实际生产场景:
- 在电商平台中,使用用户画像推荐个性化商品,提高转化率。
- 在内容平台中,使用用户画像推荐个性化内容,提升用户粘性。
总之:用户画像通过数据收集和分析,构建出虚拟的用户模型,帮助企业更好地理解和服务用户,提升营销效果和用户体验。
用户画像, 主要是针对用户的基础信息数据和用户关联信息数据, 给用户打上具体属性标签的过程 (给用户打标签)
简单理解: 给用户打标签,帮助我们认识我们的用户
例如:

男,28岁,已婚,收入2万以上,爱旅行,爱美食,喜欢淘宝,喜欢红酒配香烟。
女,80后,白领,喜欢美剧,爱打扮,常去星巴克,常住中高端宾馆,关注时尚等。
这就是用户信息标签化
用户画像是一种能将定性与定量方法很好结合在一起的载体。
定性化的方法: 通过对用户的生活情境、使用场景、用户心智进行分析对来用户的性质和特征做出抽象与概括;
定性化也可以通俗的叫做维度,就是我们去描述一个用户的角度,维度是我们设计人员定的,用什么维度来描述用户,最开始可能是我们的经验、理性分析、直觉等因素让我们决定了用什么维度,用多少维度来描述用户,来构建用户画像,把用户画像交给计算机,让计算机通过用户画像读懂用户并利用来解决一些业务问题,在来通过结果来迭代我们的设计,我们设计人员在过程中起到的很大的作用。
定量化的方法: 可以对特征做精细的统计分析与计算,获得对于用户较为精准的认识,便于在数值排序的基础上实现核心用户的发掘与突发。
在确定了维度的基础上,我们可以对特征做精细的统计分析与计算,这样的工作就叫给计算机做了,要以使用效果为导向,来指导量化。
2、为什么要做用户画像
简单来说:做用户画像就像是“给用户画一张数字肖像”,通过收集和分析用户的行为、兴趣、 demographics(人口统计信息)等数据,帮助企业更好地理解和服务用户。
具体而言:
- 精准营销:通过用户画像,企业可以精准推送个性化的广告和促销活动,提高转化率。
- 产品优化:通过分析用户画像,企业可以了解用户需求,优化产品设计和功能。
- 用户分群:通过用户画像,企业可以将用户分为不同群体,制定差异化策略。
- 风险控制:通过用户画像,企业可以识别高风险用户,采取相应的风险控制措施。
实际生产场景:
- 在电商平台中,使用用户画像推荐个性化商品,提高转化率。
- 在内容平台中,使用用户画像推荐个性化内容,提升用户粘性。
- 在金融领域,使用用户画像识别高风险用户,降低风险。(eg: 贷款)
总之:做用户画像通过数据收集和分析,帮助企业更好地理解和服务用户,提升营销效果和用户体验,是数据驱动决策的重要工具。
深刻认知用户:通过构建用户画像,企业可以更深入地了解用户的特征、行为和偏好,从而实现对用户的深刻认知。这样的认知有助于企业更准确地把握用户需求、解决用户问题,提升产品和服务的质量。
个性化运营和营销:通过对不同用户群体特点的分析,企业可以制定个性化的运营和营销方案,更好地满足不同用户群体的需求和偏好。这种个性化的运营和营销策略能够提高用户的满意度和忠诚度,促进业务增长。
建设底层数据基础,为上层应用提供服务:用户画像作为底层数据,可以为上层的应用提供服务,特别是像推荐系统这样的个性化应用。推荐系统可以基于用户画像和用户行为数据,为用户提供个性化的产品推荐和服务,提升用户体验和满意度。

3、用户画像应用方向
简单来说:用户画像的应用方向就像是“用户数据的多面镜”,通过不同的角度和场景,帮助企业更好地理解和服务用户。
具体而言:
- 精准营销:
- 个性化推荐:根据用户画像推荐个性化商品、内容或服务,提高转化率。
- 定向广告:根据用户画像推送定向广告,提升广告效果。
- 产品优化:
- 需求分析:通过用户画像了解用户需求,优化产品设计和功能。
- 用户体验:通过用户画像分析用户行为,提升用户体验。
- 用户分群:
- 用户细分:根据用户画像将用户分为不同群体,制定差异化策略。
- 用户生命周期管理:根据用户画像分析用户生命周期,制定相应的营销策略。
- 风险控制:
- 欺诈检测:通过用户画像识别高风险用户,降低欺诈风险。
- 信用评估:通过用户画像评估用户信用,降低信用风险。
实际生产场景:
- 在电商平台中,使用用户画像推荐个性化商品,提高转化率。
- 在内容平台中,使用用户画像推荐个性化内容,提升用户粘性。
- 在金融领域,使用用户画像识别高风险用户,降低风险。
总之:用户画像通过精准营销、产品优化、用户分群和风险控制等应用方向,帮助企业更好地理解和服务用户,提升营销效果和用户体验。
用户画像目前在各个领域中都有着很好的应用方向, 包括推荐系统、搜索引擎、广告投放、其他业务定制等
推荐系统:
推荐系统是用户画像主要的应用领域. 最早的亚马逊和豆瓣应该是这方面的鼻祖
例如亚马逊通过记录用户的站点行为, 包括浏览商品、购买商品、加入收藏等,同时提供评分等各种用户反馈的方式, 构建了早期用户画像的数据来源: 主要可以在今日推荐、新品推荐、关联推荐、他人购买/浏览商品
例如豆瓣以图片、音乐、电影为核心形成一个多元化的社交网络, 分析用户 "看过" 和 "想看"列表获取用户的偏好信息, 最终的推荐结果也更加关注用户的品味
搜索引擎:
根据用户输入的搜索关键词以及已构建的用户画像, 猜测用户可能更想要得到的信息, 从而将该用户最可能的信息展示在最前面
例如google有一个 Kaltix算法: 思路就是将类似的兴趣爱好归为一组, 为属于不同组的用户给出不同的结果排序

其他业务定制
比如: 个性化阅读领域
新闻客户端根据用户画像, 根据读者行为习惯和阅读经历为其定制内容, 为不同的用户展示不同的新闻, 该机制还允许根据用户的实际行动来进行反馈调整, 从而根据用户兴趣变化动态更新内容
比如: 个人征信
用户画像可以提供丰富的用户标签体系, 为个人信用评级提供详细的数据参考. 如: 用户年龄、文化程度、职业、家庭状态、购买习惯等等, 例如京东白条其实就是基于在京东的信用体系评级系统来匹配额度
风控:

总结说明:
用户画像的作用:
从公司角度: 实现精准化营销,提升广告投放的精准度,提升用户粘性
从用户角度: 帮助用户从海量的信息中快速找到自己感兴趣的内容
公司的总用户数有1千万,【男性】喜欢【钓鱼】的用户有100万。假设公司需要给喜欢钓鱼的男性用户投放钓鱼竿的广告,1元/次/人
没有开发用户画像之前,广告的投放成本: 1千万*1元=1千万元
有开发用户画像之后,广告的投放成本: 1百万*1元=1百万元
最终, 我们需要通过一个系统, 来记录这些用户特征:
| 用户 ID | 标签 |
|---|---|
| 1001 | 男, 北京, 宅男, 高消费能力 |
| 1002 | 女, 河北, 程序媛, 高消费能力 |
| 1003 | 男, 天津, 富二代, 高消费能力 |
这样对于精准营销, 数据化运营以及推荐使用, 就会方便很多了, 例如精准营销就可以基于地区 性别精确划分客群
二、如何给用户画像(了解)
1、什么是标签体系
1.1 标签介绍
标签: 是某一种用户特征的符号表示
标签体系: 把用户分到多少类别里面去, 这些类是什么, 彼此之间有什么关系, 就构成了标签体系
用户画像标签体系创建后一般要包含以下几个方面的内容:

1.2 标签类型分类
用户画像标签可以分为基础属性标签和行为属性标签:

1.3 标签管理层级
根据实际业务场景标签分级和命名方式是不同的。当前的项目是全行业的画像解决方案, 设计了5级的标签体系。如果公司业务规模不大, 至少需要三级的标签体系
一级标签: 行业
二级标签: 子行业
三级标签: 业务分类
四级标签: 场景(要开发的标签)
五级标签: 标签属性(用户贴上的标签)
示例如下:

1.4 标签计算方式
注意:最终给用户打上的5级标签,是标签的ID,而不是标签名称。为了解耦。例如:男,甲方后面可能要求你将标签名称改成男性。
用户标签定义:
| 标签ID | 标签名称 | 标签级别 | 父级标签 |
|---|---|---|---|
| 1 | 性别 | 4 | 0 |
| 2 | 男 | 5 | 1 |
| 3 | 女 | 5 | 1 |
| 4 | 学历 | 4 | 0 |
| 5 | 专科 | 5 | 4 |
| 6 | 本科 | 5 | 4 |
| 7 | 硕士 | 5 | 4 |
用户标签结果:每个用户的标签个数不相同,同个用户的多个标签之前使用逗号分隔
| 用户 ID | 用户标签 |
|---|---|
| 10001 | 2,5 |
| 10002 | 3,6 |
| 10003 | 2,6 |
| 10004 | 3,7 |
| 10005 | 2,7 |
| 10006 | 2,6 |
- 根据标签的计算方式不同,可以将标签分为三种:规则标签、统计标签、挖掘标签。
- 规则标签:每个标签有相应的规则说明,将数据和规则进行直接匹配即可。这类标签是用户画像基础。比如性别标签有5、6、7对应男性、女性和未知,将数据和标签规则对应起来打上标签ID即可。
简单来说:规则标签就像是“用户的分类标签”,通过预定义的规则对用户进行分类和标记,帮助企业快速识别用户特征和行为。
具体而言:
- 定义:规则标签是基于预定义的规则对用户进行分类和标记的标签,通常用于描述用户的特征、行为或状态。
- 特点:
- 预定义规则:标签的生成基于明确的规则,如“最近30天消费金额大于1000元的用户标记为高价值用户”。
- 静态性:规则标签通常是静态的,不会随用户行为的变化而自动更新。
- 易解释性:规则标签的生成逻辑清晰,易于理解和解释。
- 应用场景:
- 用户分群:根据规则标签将用户分为不同群体,制定差异化策略。
- 精准营销:根据规则标签推送个性化广告和促销活动。
- 风险控制:根据规则标签识别高风险用户,采取相应的风险控制措施。
实际生产场景:
- 在电商平台中,使用规则标签将用户分为高价值用户、潜在流失用户等群体,制定相应的营销策略。
- 在金融领域,使用规则标签识别高风险用户,降低欺诈风险。
总之:规则标签通过预定义的规则对用户进行分类和标记,帮助企业快速识别用户特征和行为,是用户画像和精准营销的重要工具。
- 统计标签:这类标签需要用户ID分组, 做不同的聚合计算, 分组聚合之后, 再结合标签的规则, 给用户打上标签。统计标签是主要开发的标签,也是更新最频繁的标签。比如消费活跃的标签,需要基于用户行为及确定的规则产生,计算的口径是近30天交易次数>=2。
简单来说:统计标签就像是“用户行为的数字总结”,通过对用户行为数据的统计分析,生成描述用户特征的标签,帮助企业更好地理解用户。
具体而言:
- 定义:统计标签是基于用户行为数据的统计分析生成的标签,通常用于描述用户的消费习惯、活跃度等特征。
- 特点:
- 数据驱动:标签的生成基于用户行为数据的统计分析,如“最近30天消费金额”、“平均每次访问时长”。
- 动态性:统计标签会随用户行为的变化而动态更新。
- 量化性:统计标签通常是量化的,能够精确描述用户特征。
- 应用场景:
- 用户分群:根据统计标签将用户分为不同群体,制定差异化策略。
- 精准营销:根据统计标签推送个性化广告和促销活动。
- 产品优化:根据统计标签分析用户需求,优化产品设计和功能。
实际生产场景:
- 在电商平台中,使用统计标签将用户分为高频消费者、低频消费者等群体,制定相应的营销策略。
- 在内容平台中,使用统计标签分析用户活跃度,优化内容推荐算法。
总之:统计标签通过对用户行为数据的统计分析,生成描述用户特征的标签,帮助企业更好地理解用户,是用户画像和精准营销的重要工具。
- 挖掘标签:使用机器学习算法,对数据进行分类或预测等。如,根据用户的行为对用户聚类,预测用户是否存在流失风险等。
1. 简单来说 挖掘标签就像是“从用户行为中提炼出的
隐藏特征”,通过数据挖掘技术,从用户的行为、兴趣、偏好等数据中提取出有价值的标签,帮助企业更深入地理解用户。2. 具体 挖掘标签是基于数据挖掘和机器学习技术生成的标签,通常用于描述用户的
潜在特征或行为模式。与规则标签和统计标签不同,挖掘标签更注重从海量数据中发现隐藏的规律和关联。例如,通过分析用户的浏览历史、购买记录等数据,挖掘出用户的兴趣偏好、消费习惯等标签。
挖掘标签的特点包括:
- 数据驱动:基于大量用户行为数据,通过算法模型生成。
- 动态性:随着用户行为的变化,标签会不断更新和优化。
- 预测性:能够预测用户的
未来行为或潜在需求。3. 实际生产场景
- 在电商平台中,通过挖掘用户的
浏览和购买行为,生成“潜在高价值用户”标签,用于精准营销。- 在内容推荐系统中,通过挖掘用户的
阅读和互动行为,生成“兴趣偏好”标签,用于个性化内容推荐。- 在金融领域,通过挖掘用户的
交易行为,生成“欺诈风险”标签,用于风险控制。4. 总之 挖掘标签通过数据挖掘技术,从用户行为中提炼出
隐藏的特征和规律,帮助企业更精准地理解用户需求,优化产品和服务,是用户画像和精准营销的重要工具。
- 根据标签的更新频率不同,可以将标签分为两种:离线标签和实时标签。顾名思义,离线标签是间隔固定的时间,批量来进行计算的;而实时标签则是实时计算并更新的。
2、用户画像基本步骤与验证
根据具体业务规则确定用户画像方向后,开展用户画像分析,总体来说,一个用户画像流程包括以下几步:
- 1-用户画像数据来源
- 2-用户画像的标签体系构建
- 3-用户画像的标签计算
- 4-用户画像的标签调度
- 5-用户画像标签的管理

细化说明:
-
用户画像数据来源:
- 静态数据: 画像的数据主要来自数仓

- 动态数据: 用户行为日志

-
用户画像的标签体系构建

-
用户画像的标签计算

-
用户画像的标签调度

-
用户画像标签的管理

用户画像何如验证?
- 可以通过上游推荐系统和标签本身逻辑可靠性和完整性衡量

3、通用型用户画像技术架构

4、用户画像主要模块
对应用户画像技术架构,主要有7大模块。
4.1 模块1:基础数据模块
通常来说,用户画像中使用的原始数据来于数据仓库,可以直接使用数据仓库中加工好的数据,从而降低整体开发成本。如果没有数据仓库,直接从数据库和日志中采集数据也是可以的。
-
用户静态数据:来源于业务系统,如MySQL或Oracle
-
用户动态数据:用户动态行为信息,多来源于日志
4.2 模块2:标签体系构建
构建标签体系:明确要做哪些标签,确定指标管理层级,确定标签命名方式等
4.3 模块3:标签数据存储
计算结果存储
-
Hive:适合存储大规模数据,且需要处理和分析数据的过程比较复杂,但写入和查询速度很慢。
-
Elasticsearch:适合处理大规模的文本数据和实时搜索。
元数据存储
- MySQL:元数据管理,标签层次构建及监控等。
4.4 模块4:标签数据开发及调优
-
开发主要工作如下:
规则类标签开发
数据调研
确定业务规则
统计类标签开发
挖掘类标签开发
实时类标签开发
-
调优主要工作如下(以Spark为例):
数据倾斜调优
Spark读取小文件调优
使用Spark缓存
减少shuffle类算子
开发中间表
4.5 模块5:作业调度流程
Crontab命令/DolphinScheduler等调度。跟用户行为密切相关的标签, 需要定期更新
4.6 模块6:标签管理模块
标签配置查询
有一些新的需求,需要开发,要上线新的标签
标签更新
标签效果不行, 需要下线
4.7 模块7:用户画像应用
-
精准营销——画像Web产品
单个用户分析
标签分析
圈人精准营销
-
个性化推荐——用户推荐系统
Push信息流
相关商品推荐
个性化营销活动
三、小兔智购用户画像及推荐系统介绍(掌握)
1、项目背景
1.1 公司介绍
小兔生鲜科技有限公司于2016年7月正式成立,为集团下的子品牌。以“甄选商品,服务到家”为宗旨,依托线上电商平台与线下社区门店,为用户提供日常所需的全球优质产品。
经过6年多的发展,小兔生鲜已经形成了集门店、B2C电商、批发、大客户团购、自营产品等业务于一体的综合性生鲜平台。业务遍及全国30多个城市,超过1300家门店。
其中,线下门店包括是新零售模式,既有线下实体店运营,又有线上业务,包括及时达、社区团购、三方合作等形式,充分的利用了互联网、5G、大数据和人工智能的优势,更好的满足了社区大妈、上班族、潮流派等各类人群的需求。
小兔鲜儿web平台:https://erabbit.itheima.net/#/
1.2 项目背景
小兔生鲜在完成第一阶段离线数据仓库搭建项目后,帮助企业实现了数据集中存储、统一管理和多维分析,为企业决策和精细化管理提供了有力支持。为了进一步理解用户、提升用户体验、优化产品和服务,从而实现营销精准化、业务增长和竞争优势,公司启动了小兔智购用户画像及推荐系统项目。
1- 项目类型
2- 甲方/行业信息
3- 为什么要做这个大数据项目/项目价值
2、项目解决方案
2.1 各模块设计

源数据来自于关系型数据库和日志,通过SeaTunnel和Flume进行采集,存储到HDFS中,然后使用Hive和Spark共同构建数据仓库。
基于数据仓库的数据,使用Spark进行计算,将标签结果保存在Elasticsearch中。
数据仓库和用户画像统一使用Hadoop社区版,使用Zookeeper进行程序协调,离线使用DolphinScheduler进行调度,元数据最终保存在MySQL中。
标签计算完成后,可以通过JDBC或RESTful API的方式进行访问,最终提供给标签管理系统用于精细化营销以及提供给推荐系统做个性化推荐。
2.2 标签计算架构图

主要组件如下:
- 数据源
MySQL业务数据库 和 日志数据
- 数据采集
使用SeaTunnel + Flume
- 数据存储
使用Kafka/Hive存储中间数据,使用Doris和Elasticsearch存储结果数据
- 数据计算
使用Spark SQL来完成数据加工和部分标签计算
使用Spark Core来完成部分标签计算
使用Structured Streaming来完成日志处理和实时标签计算
使用Spark MLlib完成挖掘类标签的构建
- 数据分析
使用Doris灵活用于存储结果表数据,用于报表展示、交互式查询和联邦查询
- 调度工具
使用Yarn做实时调度,使用DolphinScheduler做离线调度
- 元数据管理
使用MySQL来存储和管理元数据
数据流转过程如下:
1- 离线数仓(黑色箭头)
因为用户画像及推荐系统是基于Hive离线数仓开发的,所以架构中会有一个Hive离线数仓的部分。具体来说使用SeaTunnel将MySQL中的业务数据导入到Hive数仓的ODS层,然后使用HiveSQL进行数据的ETL和各层的指标计算,最后将ADS层的结果数据再使用SeaTunnel导出到Doris(StarRocks)中。
2- 离线标签计算(紫色箭头)
离线标签计算主要是使用Spark读取Hive数仓中的数据,开发对应的标签计算程序,给用户打上具体的标签,结果数据可以直接输出到ElasticSearch。
除了可以使用Spark进行打标签开发以外,甚至可以使用HiveSQL实现最后也是使用SeaTunnel将结果数据导出到ElasticSearch(ES),至少针对复杂标签开发起来比较难。
3- 实时数仓和实时标签计算(蓝色箭头)
实时标签处理的数据来源有两类,分别是MySQL中业务数据和存储在服务器磁盘上的日志数据。日志数据也可以继续分为更加详细的两类,分别是用户行为日志(埋点数据)和Nginx日志。
MySQL中业务数据通过SeaTunnel实时采集到Kafka的主题中;使用Spark的结构化流去消费Kafka中的数据,进行原始数据的ETL,ETL完以后将数据存储在Kafka的另外一个主题中;后面继续使用Spark结构化流消费ETL好的数据,进行指标计算和打标签的过程;指标计算结果存储在Doris,标签结果数据存储在ElasticSearch中
日志数据通过Flume实时采集到Kafka的主题中;使用Spark的结构化流去消费Kafka中的数据,进行原始数据的ETL,ETL完以后将数据存储在Kafka的另外一个主题中;后面继续使用Spark结构化流消费ETL好的数据,进行指标计算;指标计算结果存储在Doris。
4- 交互式查询(绿色虚线)
Doris(StarRocks)是一个OLAP的MPP实时数仓组件,既能够存储数据,同时能够进行快速的指标分析。而且Doris还能够与其他数据源进行集成,也就是在不移动其他数据源数据到Doris的情况下还能够使用Doris快速查询功能进行指标分析。
注意: 这套架构与甄选离线数仓的架构有异同点。具体来说有2点:
1- 将结果数据由PostgreSQL替换成了Doris
2- 数据采集和同步组件由之前的DataX替换成了SeaTunnel和Flume
面试题:为什么要选择ES作为项目架构一部分(ES在你们项目中主要有什么作用)? (概率较高)
原因一: 业务层面。打标签是要对每个用户进行分别计算,同时我们的标签有不同的更新频率,而且后期进行产品推荐的时候会实时去查询大量的标签结果数据,这样会导致每天会对结果数据进行大量的增删改查。MySQL虽然能够进行增删改查,但是在大数据的情况下效率不是特别好;Hive虽然能够处理海量数据,但是对数据的增删改支持情况不太好。ES不仅支持单条数据的增删改查,还支持海量数据的增删改查。
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
原因二: 模糊搜索。ES能支持对数据快速的模糊搜索,后续我们会进行可视乎大屏展示和推荐。
原因三: 技术壁垒。ES与大数据的其他技术进行集成比较方便
四、项目真实性问题(熟悉)
1、人员配置
开发人员:11个人
职责划分:
-
前端(JavaWeb和前端等工作)(3个人)
-
项目/产品经理(1个人)
-
大数据开发(3个人)
-
数据挖掘工程师(1个人)
-
运维(DBA/集群搭建与维护/安全等工作)(2个人)
-
测试(1个人)
结论: 一般一个大数据的项目人员在4-8人之间。人员数千万不要过少。不是所有的大数据项目都需要前后端人员,如果需要对结果数据进行大量的自定义展示那么就需要前后端。
12人: 可以增加测试人员;可以将项目经理和产品经理的角色分开。
项目经理: 负责对项目的整体节奏进行把控。类似包工头。
产品经理: 负责设计平台/产品,最终要输出原型
10人: 1个运维工程师
9人: 测试人员与其他项目组共用
8人: 运维工程师与其他项目组共用
7人: 前后端减少到2人
6人: 挖掘类标签由其他3个大数据开发工程师中的某一个人去负责
4人-5人: 前后端与其他项目组共用
2、开发周期
整个用户画像及推荐项目从立项到全部完工大约用了12个月。标签总共开发200个左右。
阶段划分:
-
需求调研、评审(12周)
-
设计架构(3周)
-
编码、集成(24周)
-
集成测试(3周)
-
上线部署,试运行,调优(6周)
一般一个大数据项目的开发周期在6个月-1年之间。项目的时间不要过短,小于5个月
3、数据量
业务情况(根据业务情况计算增量数据):
用户量:1000W
日活:线上80W + 线下45W(线下只统计购买人数)
门店数量:1300家
每家门店日均单量:线上100单 + 线下350单
每家门店日均营业额:线上5000元 + 线下10000元
业务数据:
平均每条订单及其相关表(订单、人员、支付、物流、库存等等)的存储量:20K
20K * 58W订单量(58W数据来源1300家*(100+350)) = 11g
日志数据:
每条数据0.5k-1.5k,平均1k,平均每人产生30条日志
1k * 80w * 30条 = 23g
总数据量:
- 每天新增数据量:11g + 23g左右。日志数据考虑压缩,实际的增量为 11g + 23g * 0.4 = 20g(0.4是压缩率)
- 历史数据量:
- 日志:(23g * 0.4 )* 365 * 1年 = 3T
- 业务:11g * 365 * 5年 * 0.5 = 10T(0.5是因为历史上没有这么多的用户和订单)
- 半年内不扩容服务器来算:20g * 180 = 3.6T
- 加上数仓各层中间结果数据:(3T+ 10T + 3.6T)* 1.5 + 3T * 4年 * 0.5 * 0.5 = 28T(3T * 4年 * 0.5 * 0.5 这个是删除掉原数据的日志数据的中间处理结果,第一个0.5是因为历史上没有这么多的用户,第二个0.5是数仓分层。1.5是考虑到后续Spark在计算过程中中间会产生临时数据的这么一个系数)
- 保存3副本:28T * 3 = 84T
- 预留20%-30%Buf = 84T / 0.75 = 112T
- 实际工作中一台服务器的存储容量一般是10T-20T之间
针对电商行业的数据量可以如下简单计算:
需要的基础数据: 日活(60万-200万)
剩下的计算,每日新增数据: 日活 * 1KB(每条数据大小)* 50条(平均每个用户每天产生的数据条数)
历史数据: 每日新增数据 * 3年 * 365天 * 系数(0-1之间的小数)
一般一个大数据项目的每日新增数据量在40GB - 500GB都是可以的。不要说的过少。
不要找: 虾皮、淘宝、京东、唯品会、拼多多、希音、朴朴超市、美团优选
4、集群规模
**离线数仓:**存储+计算服务器需要大概11台(晚上跑批任务,白天进行补数据以及查询、交互分析(Doris))
**Spark实时任务:**5台
**其他:**管理服务器3台,测试服务器3台
总计:22台
一般一个大数据的服务器台数在8-20台之间。不要说的过少。可以直接通过项目数据量/10TB得到服务器台数。
五、项目开发环境配置(操作)
1、虚拟机配置
-
1- 将提供的项目虚拟机解压到一个没有中文没有空格的目录下

-
2- 鼠标左键双击目录下的up01.vmx 文件, 将其挂载到VMware上


- 3- 点击启动up01:

用户名: root
密码: 123456
-
4- 正常启动虚拟机
-
5- 通过虚拟机的客户端连接工具, 连接服务器: CRT



修改字体和编码集:


测试网络:
ping www.baidu.com
- 6- 配置windows的 hosts文件。位置:C:\Windows\System32\drivers\etc
添加以下内容:
192.168.88.166 up01
2、启动服务
启动环境进行测试:
- 1- 启动Hadoop、Hive、Zookeeper 等服务
在up01的家目录下有一个 up01.sh 脚本. 执行:
cd /
./up01.sh start

- 2- 启动 es:
切换用户为es
su es
执行
cd /home/es/elasticsearch-7.10.2/bin
elasticsearch -d
退出es用户
exit


-
3- 浏览器访问各个服务
HDFS: up01:9870 Yarn: up01:8088 ES页面: up01:9200
3、PyCharm远程配置
强调:一台服务器目前最好只配置一个连接
-
创建项目
-
远程Python解释器
-
代码自动上传
4、连接MySQL和Hive
-
连接MySQL
-
连接Hive
1、完成项目环境搭建
2、项目背景、技术架构文字内容整理

更多推荐



所有评论(0)