大数据实战之用户画像概念项目概述及环境搭建(代码片段)

黑马程序员官方 黑马程序员官方     2022-12-05     450

关键词:

下面跟着我一起来学习大数据获取用户画像:

项目Profile课程安排 

用户画像概念

1、用户画像概述

1.1、产生背景

早期的用户画像起源于交互设计之父Alan Cooper提出的”Personas are a concrete representation of target users.”。认为 用户画像(Personal)是角色是目标用户的具体表示,又 被称 为用户角色,是基于大量目标用户群的真实信息构建的用户标签(User Tags)体系,是对 产品或服务的目标人群做出 的特征刻画 。 通过收集用户的人口统计信息、偏好信息及行为信息等,构建出用户画像,可以让产品经 理更好地了解用户,设计出合适的产品原型, 因此, 用户画像是用户需求与产品设计的联系的桥梁

  • 阶段一:早期的用户数据来源渠道少,数据量级小,用户画像的研究主要基于统计分析层面,通过用户调研 来构建用户画像标签。
  • 阶段二:加利福尼亚大学的Syskill和Webert就是通过显式地收集网站用户对页面的满意度, 然后通过统计分析逐步学习构建出用户兴趣模型。
  • 阶段三:后来,随着互联网及信息采集技术的发展,CUM 大学开发的Web Watcher以及后来的Personal Web Watcher,可以通过数据采集器,记录互联网上用 户产生的各种浏览行为及用户的兴趣偏好,实现对用户兴趣模型的构建,并随着数据的不断累积扩大而 更新系统模型,用户画像标签也更加丰富。

在大数据时代下,人们产生、获取、处理和存储的数据量呈指数级增长,过去基于统计模型的决策 无法满足人们的个性化要求。逐步演变为 基于数据驱动的决策 ,即如何 使用算法模型实现用户画像中的 用户行为预测,已经成为产品经理及运营工作人员的关注重点。用户画像的含义也处于动态变化中,是 一个动态完善的过程,这种 基于数据建模的用户画像模型被称之为User Profile 。

其一、用户属性的研究侧重于显式地搜集用户特征信息,主要体现在社会化标注系统领域,通过社会化标注系统搜集比较全面的用户信息,用于多方位的了解用户。

其二、用户偏好研究侧重于制定兴趣度度量方法,评估用户的兴趣度,提高个性化推荐质量;

其三、用户行为的研究侧重于用户行为趋势的预测,如用户流失行为的 预测中,有利于提前发现问题,找出对应策略,防止客户流失;在用户的欠费预测问题中,有利于发现 电力客户欠费特征,为电力公司提供决策支持。

不同研究领域的用户画像研究方法也会有所差异,常用 的有决策树、逻辑回归、支持向量机及神经网络等模型。

1.2、用户标签

虽然名字简单,但它确是 用户画像、精准营销、个性推荐、智能投放 等等各种系统的砖石。

1.2.1、什么是用户标签

用来描述商品的,就是商品标签;用来描述业务的,就是业务标签;用来描述用户的,就是用户标签了。常说“小太阳家庭”、“中产阶层”、“爱好时尚”等都是用户标签。有意思的是,我们总是说:生活中不要给轻易给人贴标签。可为什么还要大张旗鼓做用户标签呢?

1.2.2、用户标签的作用

因为面对一个人,出于尊重他人、不带偏见的考虑,我们说不能乱贴标签。但企业经营面对数以千万的用户,就不能一个个去理解,时间和成本都烧不起。如果不加区分,把所有顾客一视同仁,就只能这么地毯式轰炸,如下图所示:

如果有用户标签,就能快速、方便地细分用户群体,锁定更有需求的人,实现更精准的营销/服务。

不打标签,每次都基于原始数据分析,运营会很纠结的:到底是选买过3次的还是4次的才加活动呢?消费分段选3000,3200,还是3300呢?理论上,每次都这么纠结也是可行的。但是这样做效率太低,并且能思考的维度太少,很有可能累秃了头也没啥进展。

因此可以基于过往分析成果,预先打上标签,能极大提升效率,实现更复杂、更精准的分析。并且,还能把最后效果记录进标签库,积累分析经验。如 果标签打的对,那我们按标签做的事就能起到效果,标签本身质量也被确认;如果标签打错了,那按标签做的事就会没有效果,后续就能修订标签,打新标签。

做用户分层和分群,做精准营销,所有结果也可以以标签形式保存。在后续多次验证,从而沉淀管用、区分度高的标签,提升用户画像的准确度与有用性。

想要达成这种好的区分效果,当然只靠“男女”这种简单的标签是不够的,于是就有了制作标签的过程(俗称:打标)。具体怎么做?一起来看个简单通俗的例子。

1.2.3、用户标签的制作流程

以通俗易懂男朋友见未来岳母为例,如下对话:

你看,问的全是用户标签,人家丝毫不在乎你有多痴情,你有多努力。甭整那虚了吧唧的玩意,Show me the 房产证!十八姑娘一枝花,追的人多了去了,就是要大量过滤那些馋身子的小垃圾……

然而如果只知道回答是“有房”,是不是就能区分好青年了呢?——当然不可以。因为单一维度的标签,信息量很有限。就像单纯说“有房”,那到底是上海的房子还是盐城的房子,是60平小两房还是120平大三房,是全款的还是欠了一屁股债的,通通不知道。因此,丈母娘才会问一大堆信,逐步规整判断:到底这个小伙靠不靠谱

这就是制作用户标签的直观步骤:

依据上图的流程,归纳总共7个步,具体如下:

做用户标签可以很简单,但想做有效的标签,就会很复杂。它是一个从单维度到多维度,从简单到复杂,不断迭代验证的过程。在这个过程中,经常出现问题。

1.2.4、用户标签的五大常见问题

在实际项目中构建用户标签时,如下5个问题至关重要,需要多多考虑。

  • 问题一:没有目标,盲目干活。

很多人被“比如性别:男女就是个标签”这句话误导,以为只要做了分类,就算是标签了。至于分出来的类别之间有什么差异,有多大差异,压根没检验过。甚至,你问他为啥这么打标签,他说不知道。领导让打,咱就打,管他呢。

实际上,即使是同一个原始数据,在不同目标下,打标方式会完全不同。拿用户年龄举例,可能有好几种分类贴标签的方式:

  • 问题二:不区分时间状态。

比如打一个“高价值用户”标签,这里“高价值”指的是历史消费水平高,还是未来消费的多?很多人傻傻不分,就统计下历史消费金额,然后消费多的就是价值高。但是谁保证用户过去买的多,未来一定买的多??完全不一定。

注意:如果我们要打的标签是个未来情况,比如未来消费多,意味着我们要做一个预测:用户未来会消费多少。这里就得基于测试或者建模预测才能得到结论,不能简单基于历史数据统计。
  • 问题三:行为动机乱归因。

比如用户买了产品A,于是就打个“A产品喜爱者”标签。然而用户真的喜欢A产品吗?我们只知道用户买了A的行为,并不能直接推导出动机。如果想推倒动机,需要基于一段时间数据分析,并且综合多个维度判断。

在推导动机的时候要特别谨慎,因为错误的、随意的归因会误导业务行动。明明用户喜欢的是打折,结果缺误判为产品粉丝,最后很有可能狂推一堆产品却没有响应。

  • 问题四:多目标混合不清。

比如评高价值用户,把活跃度和付费金额,付费金额和毛利几个指标混合在一起,美其名曰“综合评价”。结果搞出来一毛不花天天白嫖的用户也是高价值用户。要是都这么折腾公司就得破产了。

这类问题,主要是做数据的同学嫌一个维度一个维度切分不体现数据能力,非得整个模型,算个权重才显牛逼。降维可以做,但牢记整个原则:不同类目标不混合。特别是涉及钱的目标。到底公司赚没赚钱,是个很严肃的事。搞混了,是要喝西北风的。

  • 问题五:结果缺少检验。

打用户标签是希望区分用户,那么最后区分效果,在目标上的差异越大越好,如果差异不大,那打标意义就不大,可以取消标签,或者再做优化。

遗憾的是,很多公司都是为了打标签而打标签。至于打了标签干什么,用在哪里,效果如何,从来没考虑过。其实,想做出好的业务效果,远没大家想的复杂,关键在于做好:打标-验证-积累-二次打标的过程,持续的进行迭代

1.3、应用场景

用户画像应用领域较为广泛,适合于各个产品周期,从新用户的引流到潜在用户的挖掘、从老用户 的培养到流失用户的回流等。通过挖掘用户兴趣、偏好、人口统计特征,可以直接作用于提升营销精准 度、推荐匹配度,最终提升产品服务和企业利润。还包括广告投放、产品布局和行业报告等。

1.3.1、精准营销

常见的营销方式包括APP信息推送、短信营销和邮件营销等。随着运营方式从粗放式到精细化,用 户画像技术能更深入和直观的了解用户,而越了解用户就越能够做出正确的决策,通过产品或服务的潜 在用户进行分析,将用户划分成更细的粒度,针对特定群体进行营销,辅以短信、推送、邮件、活动等 手段,趋以关怀、挽回、激励等策略。既能减少全量推送造成的资源浪费,又能达到较好的营销转化效果。

思考如下两个问题:

1)、大家所有人都收到这个邮件和这个短信了吗? 
2)、那为什么这个短信和邮件发给了某一些人, 而另一些人没有收到呢?

短信和邮件的发送也是有成本的, 所以对于一些企业来讲, 不可能会在每一次营销中对所有人发送短信和邮件, 在不同的活动中, 可能会选取不同特征的一类用户, 对其进行短信或者邮件的营销, 那么这里就需要对用户进行分群。

1.3.2、数据化运营

如果大家是一个公司的运营经理, 现在需要对不够活跃的地区举办一些活动, 刺激用户的参与, 那么应该需要这样的一张图:

如果大家是产品经理, 现在需要对整个产品的风格进行改版, 那我们应该需要一张图, 来看到我们的产品在哪个年龄段最受欢迎, 要致敬这个年龄段的用户。类似的场景还有很多, 通过数据来说话, 来找到运营的策略, 正是一种非常有必要的事情, 也是发展趋势。

1.3.3、推荐系统

用户画像常用在电商、社交和新闻等应用的个性化推荐系统中。互联网时代下的信息是过载的,用 户量级巨大且用户之间千差万别。如果根据用户的行为习惯,购物或阅读记录来打造基于内容推荐系 统,实现的千人千面个性化推荐可以加深应用的用户粘性。 在电商行业中,推荐系统的价值在于挖掘用 户潜在购买需求,缩短用户到商品的距离,提升用户的购物体验。

说到推荐系统, 其实现在各种公司都在做, 我们判断未来的所有应用应该都是个性化的, 都是千人千面的, 例如如果在京东上购买了手机壳, 那么京东应该会推荐给我们其它样式的手机壳, 如果买了书, 应该推荐给我们更多同类型的书, 就例如如下

但是问题来了:

什么是推荐, 如果针对不同的人, 展示的结果会不同?

其实推荐就是系统通过数据, 找到用户和用户所感兴趣的物品之间的关系, 更抽象和更准确的说, 就是找到用户和商品之间可能的连接. 可以表示为类似如下样子。

可以通过大量的数据样本, 从而使用算法找到UserProduct之间的关系, 简单来讲, 这就是推荐系统的实现方式. 那么, 有一个问题.

表示一个用户的这些特征如何生成呢, 如何找到一个用户的向量表示呢? 1

1.3.4、广告投放

广告的本质是传播,是为了某种特定的需要通过一定形式的媒体,公开而广泛地向公众传递信息的 宣传手段。著名广告大师约翰•沃纳梅克提出“我知道我的广告费有一半浪费了,但遗憾的是,我不知道 是哪一半被浪费了”。通过用户画像的技术,从最早的广而告之逐渐转变为精准的定向投放,对用户数 据进行标签化,还原用户的信息全貌。广告主可以通过标签筛选要触达的用户,进而实现针对特定用户 群体进行广告投放,减少不必要的广告费用。

1.3.5、产品布局

一个产品设计之初,有一定的目标用户定位。随着产品的发展,想要得到更广泛的应用,还需结合 用户的特性来做出相应的调整和改变。用户画像技术可以恰到好处地理解用户使用产品的心理动机和行 为习惯,助力产品设计的持续的完善,提升服务质量。

1.3.6、行业报告

通过对用户画像技术可以了解行业动态,常见的有市场分析、品牌受众人群、不同地域品类消费差 异等。这些行业报告可以指导平台更好的运营、把握大方向,也能为相关的中小企业、店铺、媒体提供 细分领域的深入洞察。

1.3.7、 场景间的共性

前面提到了几个场景和几个问题,现在回顾一下这些场景和问题。

如果能有一个系统,把用户特征标注出来,如下

那么,对于上面的三个需求,,就可以以如下方式解决:

1、精准营销, 按照地域或者性别筛选客群 
2、数据化运营, 按照消费能力筛选客群 
3、推荐系统, 得到每一个用户的标签化表示

那什么是用户画像呢? 用户画像其实就是对用户使用标签来进行标注,例如: U_1001:(男, 北京, 宅男, 高消费能力)

1.4、用户标注

前面说了几个场景, 这些场景想要实现,都借助于对用户的理解, 直白点说,就标注出来每个用户的特征,, 但是如何标注呢?

探讨一下用户标注的体系建立

1.4.1、本体论

在开始之前, 先介绍一下本体论,在介绍本体论之前看如下图,羊这种可爱的动物大家一定是见过的。

问大家的问题是,什么是羊?我觉得大家可能给出的比较标准的答案也许是一种有四条腿四只蹄、白色覆毛、两只短耳朵、小眼睛、性格温顺 的动物。

现在把刚才这个结论拆开:四条腿, 四只蹄, 白色覆毛, 长耳朵, 小眼睛, 性格温顺, 动物,
这些词并不是羊, 只是羊的符号, 我们说羊有四条腿, 有白色覆毛, 是一种动物, 那这些形容词, 甚
至羊和动物这样的名词, 都是真实存在的这个本体的一种符号化表示, 而本体指的就是一个真实的存
在, 这种理论, 就是哲学中说的【本体论】, 是亚里士多德的形而上学的基本分支.

那么和用户画像有什么关系呢,大家仔细想一想, 其实本质上:用户画像就是对用户的符号化表示, 也就是说, 其实 标注用户就是把用户当做本体来进行标注 。

而本体论也逐渐的发展为描述知识的一个学科,如果大家以后要研究知识工程和知识图谱的话, 本体论是绕不过去的。

如何用本体论描述用户呢, 如何用本体来表示用户的画像呢? 如下所示, 这是一个非常复杂的表示法.

1.4.2、打标签

如果想要更近一步理解本体论如何描述用户,从而生成用户画像, 可以参照资料中提供的一篇论文。

Towards-an-Ontology-Based-Persona-Driven-Requirements-and-Knowledge
Engineering.pdf  

虽然是一个关于 Persona 的论文, 但是也有一定的参考价值。无论如何,大家可以看到,任何时候想要创建一套本体都是一件非常复杂的事情。

采用本体论的思路,给用户打上标签,并存储标签,如下的表示方式:

1)、存储用户标签至HBase表,如下所示:

2)、存储用户标签至Elasticsearch索引,如下所示:

存储Elasticsearch索引,依据检索条件进行查询,如下示意图:

给用户打标签后,构建用户画像,示意图如下:

2、项目功能及架构

企业级360°全方位用户画像是基于电商平台进行设计和开发,是面向注册会员的偏好、行为习惯和 人口属性的画像还原,同时也包括对商品信息的画像还原。提供用户喜好和商品特征帮助 营销平台提升营销的精准度 ,也方便个性化推荐系统 快速准确的为每个用户推荐相关的商品 。

2.1、功能模块

整个项目分为如下几个功能模块,具体描述:

1、标签体系

标签体系模块基于本体论建立,包括基础标签和组合标签两个子模块。基础标签维护了人口属性、 商业属性、行为属性和用户价值4个方面。组合标签是在基础标签的基础上按TGI创建的,用于反映目标 群体在特定研究范围的强势和弱势。

2、标签引擎

标签引擎模块是 用户画像运转的核心实现 ,维护标签的具体实现逻辑,包括标签依赖的数据源、规 则和模型的信息。同时提供每一个标签引擎运行状态的可视化监控。当Super User登录时会出现新增标 签及其引擎的审核。

3、画像模块

画像模块是对实体(用户/物品)信息全貌可视化的精准还原,包括对个体的全方位还原和群体的 全方位还原。

4、标签查询

标签查询模块是查看标签所覆盖的实体,用于查看标签体系中所有标签包含的商品详细信息和经过脱敏后的用户信息。

5、系统设置

系统设置模块主要包括用户管理、权限管理。

2.2、技术架构

项目的总体架构图:

软件版本:

项目功能架构图:

标签体系流程图:

2.3、标签梳理

整个用户画像平台主要针对用户标签进行操作的,包含给用户打标签及管理用户标签,标签的设计如下所述。

2.3.1、 标签定义依据

知识工程(本体论)的概念最早由美国斯坦福大学计算机科学家费根鲍姆提出。他认为“知识工程是人工智能的原理和方法,为那些需要专家知识才能解决的应用难题提供求解的手段, 恰当运用专家知识对获取、表达、和推理过程做出解释,是设计知识系统的关键问题”。

基于知识工程的用户定性画像中,核心思想是 利用本体对用户画像中的标签进行表示、验证、推理和解释 。本体论(Ontology)是哲学上的一个学科,是研究客观事物存在和组成的通用理论。

本体的结构包括 类、属性、实例、公理和推理规则 。

2.3.2、标签体系需求分析

标签体系是根据已注册用户的偏好、行为习惯和人口属性等不同的领域进行建立的, 按领域可以分为人口属性、商业属性、行为属性和用户价值四类。按具体的实现方式分为规则标签、统计标签和挖掘标签。 在本项目中标签体系 按照业务类型划分为基础标签和组合标签 。

  • 按领域划分

  • 按实现方式划分

  • 按照业务类型划分

2.4、项目工程演示

将项目工程【tags(演示版).zip】解压,为Maven Project,导入IDEA中,如下图所示:

选择解压的工程,如下图:

直点击下一步【Next】即可,最终导入工程:

由于项目使用SSM开发WEB工程,需要运行到Tomcat中,配置Tomcat,如下所示:

添加TomcatServer,使用Tomcat版本为【apache-tomcat-8.5.45】:

选择WEB项目,修改访问ROOT路径:

启动Tomcat即可。

3、标签系统概述

3.1、基础标签

用户画像系统中,给每个用户打上标签,称为基础标签,例如用户性别标签、年龄标签等等。

3.1.1、概览:基础标签

启动WEB 项目后,浏览器登录,默认账号与密码,点击【登录】即可,下图所示:

上述所表述的5个按钮,主要构建标签、查看标签和编辑标签,具体说明如下:

1、基础标签 Tag页
2、基础标签 分类
按照标签体系划分标签为4级、5级标签
- 4级标签:业务标签
- 5级标签:业务标签对应的值(属性标签)
3、新建主分类标签
1级、2级、3级分类标签
4、创建业务标签
具体业务标签,其中有很多相关设置,关于标签如何构建(读取数据源、运行Spark程序及调度
策略)
5、针对业务标签操作
- 启动:业务标签运行程序生成标签
- 编辑:修改业务标签属性
- 删除:将业务标签删除

各种类型业务标签,如下列举所示:

  • 业务标签一: 人口属性

  • 业务标签二: 商业属性

  • 业务标签三: 行为属性

  • 业务标签四: 用户价值

3.1.2、新建:主分类标签

用户画像构建时,标签按照 等级划分 ,大致如下所示:

在WEB界面上,点击左下角【新建主分类标签】按钮,即可新建1级、2级和3级标签:

但是如果要删除1级、2级和3级标签,必须到后台数据库删除。

3.1.3、新建:业务标签

新建某个业务标签(实际开发标签,编写Spark 应用程序),截图选项如下:

具体参数说明如下(以新建【年龄段】业务标签为例):

完整信息截图如下所示:

3.1.4、存储:标签数据

上述新建的标签数据存储MySQL数据库中,对应两张表存储数据,分别为 标签表:

tbl_basic_tag 和 模型表:tbl_model ,具体说明如下:

标签表: tbl_basic_tag ,存储标签的基本信息,属于基础标签

模型表: tbl_model ,存储每个4级标签具体Spark 应用程序相关信息,对应与基础标签

依据上述两张表可以通过关联查询可以获取WEB 页面上表的基本信息,SQL如下(传递标签ID):

3.1.5、新建:5级标签

每个业务标签( 4级标签 )对应值称之为 5级标签(属性标签) ,所以在新建业务标签(4级标签)以后,需要在其下面新建具体的值(5级标签),如下图所示:

字段具体说明:

以新建【年龄段】业务标签:4级标签后,新建值标签:5级标签为例,截图如下:

3.1.6、总述:新建标签

依据上述分析,如果要开发一个标签,业务需求整理完成以后,需在平台上新建标签,统一管理调度执行,以新建:【人口属性】-【性别标签】为例:

新建业务标签(4级标签)

新建业务标签值标签(5级标签、属性标签):性别标签有两个值-男和女

标签值:男

3.2、组合标签

基于已经存在的【基础标签】进行逻辑组合,形成特定业务标签,如下列举4个组合标签

WEB 系统展示如下:

选择【业务标签】,再选取对应的值,点击【添加】按钮,所有标签选择完成后,单击【下一步】。

组合标签名称、含义及用途等信息,最后保存并提交申请。

3.3、微观画像

依据用户:身份证号、手机号、QQ及Email,检索查询用户所有标签信息,构建展示用户画像信息。

使用官方提供的身份证号【110115199402265244】查询检索,展示结果如下:

3.4、标签查询

依据标签筛选(各种标签组合)查询对应用户信息,底层使用Solr完成。

4、项目环境搭建

依据项目需求,使用大数据相关技术框架,安装目录及软件版本具体如下图所示:

所有软件的安装以后,创建软连接,方便日后软件的升级。

4.1、大数据平台基础环境

安装开发语言软件 JDK1.8 和 Scala2.11 及 MySQL5.1 数据库

3)、安装MySQL数据库

按照MySQL数据库功能:

1)、Hive MetaStore存储
存储元数据
2)、标签系统WEB 平台数据存储
tbl_basic_tag
tbl_model
3)、Oozie 数据存储
Oozie调度Spark2应用程序
4)、Hue 数据存储
方便操作大数据平台组件
5)、业务数据: tags_dat
订单数据、订单商品表数据、会员信息数据、行为日志数据

截图如下所示:

在实际项目,MySQL数据库字符编码最好是UTF-8,避免乱码出现。

此处使用数据库版本:5.1.73,此版本较低,实际项目使用高版本(至少为 5.6.17 )版本以上。

设置字符集编码为utf-8,具体设置参考文档。

4.2、分布式协作服务Zookeeper

在大数据框架中为了高可用性,很多框架依赖于Zookeeper,所以先安装Zookeeper框架,单机版安装。

配置文件: $ZOOKEEPER_HOME/zoo.cfg

创建数据和日志目录:

mkdir -p /export/servers/zookeeper/datas/data
mkdir -p /export/servers/zookeeper/datas/log

4.3、大数据基础框架Hadoop

安装大数据Hadoop框架,包含三个组件: HDFS(分布式文件系统)、YARN(集群资源管

理和任务调度平台)及MapReduce(海量数据处理框架) 。

4.3.1、分布式文件系统HDFS

包含服务组件:NameNodeDataNodes,实际项目中按照HDFS HA(基于JN)。

在实际企业项目中,无论测试环境还是生成环境,HDFS分布式文件系统都是以HA高可用方式部署。

环境变量配置: $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/export/servers/jdk 1

common模块配置文件: $HADOOP_HOME/etc/hadoop/core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

配置文件: $HADOOP_HOME/etc/hadoop/slaves

bigdata-cdh01.itcast.cn 1

4.3.2、分布式资源管理框架YARN

对集群资源分布式管理和调度,包含ResourceManagerNodeManagers。

面试题:
目前来说,大数据框架Spark 主要还是运行在YANR上,所以必须掌握如下两个问题:
1)、YARN 如何资源管理和应用调度
2)、Spark on YARN:两个DeployMode提交流程与区别
必问,死背

配置文件 $HADOOP_HOME/etc/hadoop/yarn-env.sh 

# some Java parameters
export JAVA_HOME=/export/servers/jdk

配置文件 $HADOOP_HOME/etc/hadoop/yarn-site.xml 

4.3.3、计算处理框架MapReduce

对海量数据进行离线分析处理框架MapReduce,其中SqoopOozie底层运行都是MapReduce任务,仅仅执行MapTask。

面试题: 
MapReduce Shuffle过程,必须会背会写 

配置文件 $HADOOP_HOME/etc/hadoop/mapred-env.sh 

export JAVA_HOME=/export/servers/jdk 1

配置文件 $HADOOP_HOME/etc/hadoop/mapred-site.xml 

4.4、数据仓库框架Hive

基于HADOOP之上数据仓库框架Hive,在企业中使用非常广泛,底层MR计算分析数据。

针对Hive框架来说,底层计算引擎可以为三种:
1)、MapReduce(最原始)
2)、Tez
国外
3)、Spark
从Hive 2.0开始,官方建议使用Spark/Tez作为计算引擎,不推荐使用MR。 

面试题:
Hive 框架架构组成,核心Driver(具体功能)
将SQL转换为MapReduce程序,提交运行到YARN上, 处理存储在HDFS上数据。

安装Hive数据仓库依赖的MySQL数据库,存储元数据MetaData,官方要求的MySQL数据库版

本如下所示:

配置文件: $HIVE_HOME/conf/hive-env.sh

配置文件: $HIVE_HOME/conf/hive-site.xml

注意:Hive MetaStore数据库字符编码必须使用latin,不能是utf-8,建议先创建Hive元数据数据库。

将MySQL数据库驱动包放入$HIVE_HOME/lib目录下。

4.5、大数据NoSQL数据库HBase

基于HDFS之上,存储海量数据NoSQL数据库HBase,面向列存储,可以存储几十亿行和数百万列。

配置文件: $HBASE_HOME/conf/hbase-env.sh

配置文件: $HBASE_HOME/conf/hbase-site.xml

配置文件: $HBASE_HOME/conf/regionservers

bigdata-cdh01.itcast.cn 

4.6、大数据生态组件

生态组件中有SQOOP、FLUME、OOZIE和HUE,方便数据采集及任务调度查看。

4.6.1、数据转换工具SQOOP

SQOOP底层为MapReduce程序,仅仅运行MapTask,并行的将数据在RDBMs与HDFS/HIVE/HBase之间导入导出

4.6.2、数据实时抽取采集Flume

实时监控日志数据,将数据采集存储到HDFS上,架构图如下:

针对每个服务器产生的日志数据,启动一个Agent,实时监控数据,采集存储到HDFS上。
1)、Source
2)、Channel
3)、Sink

4.6.3、任务调度框架Oozie

使用Oozie调度执行任务(工作流WorkFlow和调度器Coordinator),架构如下:

4.6.4、大数据可视化工具Hue

Hue为大数据生态系统一体可视化工具,操作HDFs、查看任务执行及集成Hive编写SQL,尤其与Oozie集成,更加方便的调度执行任务工作流。

账号root,密码:123456

4.7、大数据分析框架Spark

大数据分析框架Spark,集成批处理、交互式分析和流式处理及高级数据分析(图计算和机器学习)为一体的框架,从Spark 2.0开始,所有应用入口为SparkSession,数据封装在DataFrame中。

配置文件: $SPARK_HOME/conf/spark-env.sh

配置文件: $SPARK_HOME/conf/spark-defaults.conf

运行Spark 圆周率PI程序,提交到YARN上执行:

4.8、全文搜索引擎Elasticsearch

Elasticsearch 是一个 分布式的开源搜索和分析引擎 ,适用于所有 类型的数据 ,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。

Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELKStack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。

5、项目工程搭建

使用IDEA开发项目,构建整个项目工程Project(Maven Project),大致结构如下,后续逐一创建Module。

5.1、创建 Project

首先创建整个项目Maven Project,Maven相关属性信息如下:

5.2、创建 Module

在Project下创建各个模块Module,Maven相关属性信息如下;

5.2.1、模块: tags-etl

依赖如下:

5.2.2、模块: tags-oozie

依赖如下:

5.2.3、模块: tags-up

依赖如下:

5.2.4、模块: tags-web

依赖如下:

5.2.5、模块: tags-model

依赖如下:

电商数仓——(师承尚硅谷)大数据实战项目(代码片段)

数仓实战1.概念技术选型:搭建环境三台ECS创建wts用户:useraddwtspasswdwts输入两边密码cd/home有无wts?让wts有sudoer权力:[root@hadoop100~]#vim/etc/sudoers修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示&# 查看详情

大数据项目之电商数仓数据仓库概念项目需求及架构设计(代码片段)

文章目录1.数据仓库概念2.项目需求及架构设计2.1项目需求分析2.1.1采集平台2.1.2离线需求2.1.3实时需求2.1.4思考题2.2项目框架2.2.1技术选型2.2.2系统数据流程设计2.2.3框架版本选型2.2.3.1Apache框架版本2.2.4服务器选型2.2.4.1物理机:... 查看详情

大数据用户画像实战之业务数据调研及etl(代码片段)

整个用户画像(UserProfile)项目中,数据、业务及技术流程图如下所示:其中数据源存储在业务系统数据库:MySQL数据库中,采用SQOOP全量/增量将数据抽取到HDFS(Hive表中),通过转换为HFile文件... 查看详情

大数据项目之电商数仓-用户行为数据采集(代码片段)

数据仓库简介数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合,通过数据仓库中的数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。项目需求实时采集买点的用户行为数... 查看详情

助力工业物联网,工业大数据项目介绍及环境构建(代码片段)

文章目录工业大数据项目介绍及环境构建01:专栏目标02:项目背景03:项目需求04:业务流程05:技术选型06:Docker的介绍07:Docker的网络08:Docker的使用09:Oracle的介绍10:集群软件规划11࿱... 查看详情

实时即未来,大数据项目车联网之重启机制及数据积压(代码片段)

文章目录1checkpoint配置2任务重启策略3分区发现4数据积压问题4.1什么是数据积压4.2数据积压的原因4.3数据积压的后果4.4积压解决方案4.5解决数据积压方法1checkpoint配置l选择合适的Checkpoint存储方式lCheckPoint存储方式存在三种官方文... 查看详情

大数据项目之电商数仓-用户行为数据采集(代码片段)

数据仓库简介数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合,通过数据仓库中的数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。项目需求实时采集买点的用户行为数... 查看详情

利用python搭建用户画像系统

...像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。1.什么是用户画像用户画像可以理解成是海量数... 查看详情

实时即未来,大数据项目车联网之重启机制及数据积压(代码片段)

文章目录1checkpoint配置2任务重启策略3分区发现4数据积压问题4.1什么是数据积压4.2数据积压的原因4.3数据积压的后果4.4积压解决方案4.5解决数据积压方法1checkpoint配置l选择合适的Checkpoint存储方式lCheckPoint存储方式存在三种官方文... 查看详情

助力工业物联网,工业大数据项目介绍及环境构建(代码片段)

文章目录工业大数据项目介绍及环境构建01:专栏目标02:项目背景03:项目需求04:业务流程05:技术选型06:Docker的介绍07:Docker的网络08:Docker的使用09:Oracle的介绍10:集群软件规划11࿱... 查看详情

大数据实战之spark安装部署

楔子我是在2013年底第一次听说Spark,当时我对Scala很感兴趣,而Spark就是使用Scala编写的。一段时间之后,我做了一个有趣的数据科学项目,它试着去预测在泰坦尼克号上幸存。对于进一步了解Spark内容和编程来说,这是一个很好... 查看详情

大数据项目之电商数仓-用户行为数据仓库(代码片段)

数据仓库分层把复杂问题简单化,把一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解清晰的数据结构,每一层都有它的作用域,这样我们在使用表的时候能更方便的定... 查看详情

湖仓一体电商项目:3万字带你从头开始搭建12个大数据项目基础组件(代码片段)

文章目录一、搭建Zookeeper1、上传zookeeper并解压,配置环境变量2、在node3节点配置zookeeper3、将配置好的zookeeper发送到node4,node5节点4、各个节点上创建数据目录,并配置zookeeper环境变量5、各个节点创建节点ID6、各个节点启动zookee... 查看详情

大数据项目2(数据挖掘之数据预处理相关概念)

数据预处理相关概念一、总述二、数据清洗2.1唯一值2.2重复值2.3格式清洗2.3.1数据类型2.3.2时间、日期、数值、全半角等显示格式不一致2.3.3字符问题2.3.4思维逻辑三、数据集成四、数据归约五、数据变换六、总结一、总述需要查... 查看详情

微服务课程之springcloud概述及微服务搭建(代码片段)

1,课程回顾2,本章重点微服务的概念,特点,优点,缺点分布式框架(微服务)的演变过程springcloud简介和特征springcloud组件和体系架构搭建父子项目,编写一个微服务3,具体内容3.1微服务的... 查看详情

实时即未来,大数据项目车联网之项目基石与前瞻(代码片段)

...:凡购买本专栏的读者,可加我好友获取车联网大数据资料文章 查看详情

kafka消息队列大数据实战教程-第二篇(kafka集群搭建)

文章目录前言一、准备工作二、安装Zookeeper集群2.1.下载2.2解压2.3配置环境变量2.4修改conf文件夹配置2.5创建data、log文件夹2.6启动三、安装Kafka集群3.1.下载3.2解压3.3创建存储kafka数据地址3.4修改配置文件3.5启动3.6测试四、启动脚本4... 查看详情

kafka消息队列大数据实战教程-第二篇(kafka集群搭建)

文章目录前言一、准备工作二、安装Zookeeper集群2.1.下载2.2解压2.3配置环境变量2.4修改conf文件夹配置2.5创建data、log文件夹2.6启动三、安装Kafka集群3.1.下载3.2解压3.3创建存储kafka数据地址3.4修改配置文件3.5启动3.6测试四、启动脚本4... 查看详情