00:00
好,接下来呢,我们看一下第二章项目需求及架构设计,那在这一章当中啊,哎,我们要了解一下我们整个项目当中有哪些需求,以及呢,为了完成这些需求,我们配套的架构是什么样的。对吧,哎,那首先来看第一个啊,项目需求。项目需求,项目需求啊,通常在企业里面是由这个产品经理来提出来,对应的我们这个项目要做哪些事。那有同学该思考了,说海哥,那产品经理他又是从哪得到的需求呢?啊,记住,产品经理得到的需求啊,通常来源于两部分,一部分呢,就是他的老大。也是老板。哎,老板让他做什么,那他就得做什么,因为你挣老板的钱嘛,对吧,哎,所以说这是第一个需求,由老板来提出。好,那第二个需求又有谁呢?诶,通常在一些企业当中,它是一些To B的企业。那他的客户。要求说我们这个项目当中要具备哪些功能,那么会让这个产品经理在这个产品当中进行一个增加。
01:06
啊,是这样一个过程啊,通常在企业里面都是老板和客户,还有一部分需求啊,其实是我们设计人员在开发的过程当中,哎,觉得这个对我们公司未来有用。哎,那会跟产品经理进行一个交流,说我们能不能增加这样类似的一个需求。哎,其实呢,产品经理呢,是非常喜欢这样的程序员的。在能够对这个产品的这个呃改善优化提出这种指导的建议。啊,非常喜欢啊好,那这么几块,那下面就看一下我们这个项目当中到底有哪些详细具体的需求呢。首先来看第一个就是用户行为数据采集平台的一个搭建。啊,这里面涉及到了一个用户行为数据。哎,在我们讲这个数仓概念的时候啊,提到了我们数据来源呢,有三块,用户行为数据,业务数据,还有爬虫的数据。那首先问题来了,这个用户行为数据怎么采,什么意思呢?你左侧这是用户行为数据。
02:07
我希望将它呀导入到书上当中。那同学说你在上节课不已经说了吗?我们用这个来踩好。那接下来问大家一个问题,那你既然选择用来处理这个用行为数据,那flu里面它有对应的south,有China和信。那我们到底用什么SS,什么样的拆什么样的信,以及这里的代码怎么设计?对吧,诶好,还有就是我们在这个过程当中,要不要再加一个卡夫卡做数据的一个相应的缓存。等等,这些内容需要我们进一步的一个呃去深入的去设计。哎,所以说这块呢,是需要啊,提出来这种详细的一个需求。好,那下面看下一块,那就是业务数据的一个采集平台处理,同样道理,哎,我们呢,这边有业务数据。对吧,业务数据在哪里呀,是在my circle里面。
03:00
好,你在买circleq里面,我们期望将它导入到害物出仓里面。OK,中间过程我们说用这个scoop框架。进行执行,完成对应的功能。那问题又来了,那你这个SCO框架怎么安装,怎么配置,配置成什么样,如何将这个数据导入到这里面去,也需要我们进一步深入的去研究。是这样吗?好,所以说这块哎,有详细的一个需求和设计。再往下,数据仓库的一个维度建模。这里面全标红了,什么意思呢?在整个收藏当中,最核心的就是这个维度建模。那你看我们在之前的课程当中说,哎,我们书上当中啊,分了五层啊,有这个保存数据源貌不变的ods层,还有呢,这个数据清洗的DWD,哎,以及呢,还有这个DWS。DWT。聚合的还有ADS啊,有这么多层。那好,那问题来了,那每一层做什么事,以及呢,哪些表需要进行招印在一起,哪些表需要进行一个清洗啊,以及相关的一些退化。
04:10
由谁来决定呢?就是由我们这个收藏建模,他来帮我们去,嗯,这个思想。去完成对应的需求功能。它也是我们整个数仓的一个核心。那在面试啊,还是开发属于非常非常重要的一个等级啊。那么什么叫建模,我们在后续会给大家花大量的时间啊去讲解啊,这块呢,要重点记忆一下啊,有这么一个事儿。下边呢,我们还有一个需求,就是分析设备、会员、商品、地区、活动等电商核心主题统计的报表。啊,什么意思呢?我们需要统计跟设备、会员、商品、地区、活动相关的近100个指标。就是老板关心,比如说哈,以这个会员为例,我们老板关心新增会员数。
05:02
对吧,每天新增会员数以及呢,哎,每天的活跃数,活跃的会员。还有这个会员每天的一个商品购买情况。哪一个地区商品的购买情况啊,等等这些信息都需要我们进行一个统计分析,那我们这些项目当中涉及到的报表100多个。诶,基本上呢,等同于一个中型公司对应的一个规模,就说这个项目如果你学会的话,那你在企业里面开发是游刃有余的。OK,那再往下下边呢,是这个采用机器查询工具,随时能够分析这个指标。这个又是什么含义呢?那像我们上面这个统计的这个100多个报表啊,都是我们凌晨开始执行,哎,到第二天八点的时候会把这个指标算完。那好,那咱们说啊,是凌晨到八点的时候是算这个指标,那么如果我正常上班,比如说今天是十点,哎,到这个12点这个期间,突然间这个产品经理走到你跟前,说我们想统计一下当前这一时刻。
06:04
爱某某数据。哎,一些临时的指标不在你固定的这个100个要跑的任务当中,那你又怎么办呢?那这里就涉及到一个积极查询,我希望快速的能查询到我想要的一些结果。对吧,哎,这种需求。那这种。说对集群的性能进行监控,比如说集群发生异常情况,我能够快速报警。举个例子。我这里面有嗨度集群对吧,啊嗨度啊有NN有DN。还有这个。等等啊,一些进程,那么任何一个组件如果挂掉。如果你不能第一时间发现。那这个集群还正常在运行。那后果会越积累越多,比如说他都已经挂了,你还认为他是好的。你还会往里面去写,但是数据已经越积越多,越来越多,整个集群可能有可能都会瘫痪。对吧,哎,故障坏的会越来越离谱。
07:01
那有没有一种机制说任何一个进程他挂掉了。我们都能够实时的监控到他,并产生报警,那报警的话包括电话报警啊,邮件报警,钉钉报警啊,还有一些其他的,像什么QQ群报警等等。能不能做到呢?哎,在我们这个项目当中提出这样的需求,后续呢,我们会有对应的设计来解决掉对应的这个问题。那再来还有原数据管理,那原数据。哪一个框架它有原数据呢?哎,这里面的原数据啊,指的是have的元数据。我们的还有原数据是存储在MYSQL当中。那这个原数据管理它有什么用呢?好,给大家举个场景啊,还是在我们这个书上当中啊,说涉及到了这个五层。对吧,每一层呢,都有对应的这个任务执行,而且任务与任务之间呢,还有相互的一个依赖关系。那好,那比如说在这个adi层,我们未未来要统计100多个指标,对吧,啊100多指标到这一分叉啊,分叉分叉100多个。
08:07
那么如果你在执行任务的过程当中,你这么多任务,它是有依赖关系的,我突然间中间一个任务挂掉。它下面有N多个指称。那我问你,他挂掉之后,它会影响哪些指标的一个输出。也就是说,它的影响范围是多大?如果你没有元数据管理的话。那其实你是不好观察的,你只能去看,在阿卡班呢,或者这些任务调度框架里面自己去查。手动去查。那如果反过来,你有了对应的这个元数据管理,他能帮你干什么事儿呢?他会把你所有的任务的执行过程以及依赖关系。哎,都跟你在图形化页面上展示出来,假如说这个任务挂了。好,他就知道啊,你这个指标,这个指标这个指标出不来了。那你评估一下啊,看哪一个更重要,那我先优先去抢救哪一个任务。
09:02
这样吗?哎,这就是原数据管理我们要做的事。好,那再来数据质量监控。什么叫数据数据质量监控呢?跟你上面这个集群性能的监控有什么区别呢?你上面这个是监控每一个框架的进程的一个好坏,是否挂掉。那质量监控它监控的是你的数据的异常变化,举个例子,咱们在ADS层还是要统计一些各种指标,比如说咱们贵最关心的就是这个,像交易额。大家想想啊,这个交易额。假如说。昨天这个公司的交易额啊,是1万元。对吧,那来到了今天,突然间变成了一个亿。大家说这个正不正常?是个好事还是个坏事?思考一下。肯定有些同学说海哥这是好事啊,这我们公司一下这个挣了这么多钱对不对?但是你有没有想过,万一他不是真实发生的,而是你自己自己计算错了呢?
10:07
那老板会不会因为这件事直接把你开除掉?对吧?啊,还有一种可能就是你原来是1亿的交易额,你告诉老板说今天是1万的交易,老板是不是直接跳楼了。然后你告诉老板说行行啊,老板我算错了。你觉得他还能行吗?是不是,哎,所以说这个数据质量监控,那他干什么事儿呢?他能够时刻的监控,比如说你ADS今天的指标和昨天的指标,它的一个差异。那比如说正常情况,在企业里面,我会设置一个30%。比如说快速的上升或者快速的下降,有没有超过我设置的阀值,比如说30%,如果超过的话,我要报警,那报警的话仍然是有钉钉,哎,电话,还有像这个啊,邮件啊等等一些手段,让这个呃监监控人员快速的来啊响应进行一个处理。OK,这是质量监控。
11:00
好,接下来我们看一下第九个权限管理,那么权限管理有什么意思呢?大家之前啊学过这个Linux,也学过这个HTS对吧?那么像Linux里面有对应的用户,有root用户,有艾特硅谷用户,那么root用户和艾特硅谷用户访问的路径的权限是不是不一样啊?对吧,哎,像as上也有对应的用户,他有对应的访问路径相关的权限,那同样道理,在我们那个数仓当中是不是有have。那have里面有多个表,比如说有用户表,有商品表,还有对应的像这个活动表等等很多。那么每一张表啊,我不希望让所有人都能够看到。诶有不同级别的,比如说这个高级程序员,我希望他都能看到,但是呢,诶刚来的程序员,我只希望让他看到他对应的这个工作范围内的一些表就可以。是这样吗?诶,那需要对他设置一个权限,那同时呢,在公司当中还有一些核心的敏感的数据,比如说公司的交易额。
12:03
对吧,这个我只希望让公司的领导看到,那这个可能就是一个字段。那也说在这个权限管理当中,我需要做到表里面每一个字段允许不同的用户访问。啊,这么两种级别,一个是表的级别,一个是字段的级别,那后续呢,我们会有对应的框架帮我们来个解决掉。OK,那再往下大家思考啊,开始思考了第一个问题,项目的技术如何选型?什么意思呢?你上面提出来了这么多需求。对吧,那针对每一个需求,我要用什么技术来帮我们解决掉呢?那这里涉及到一个技术选型的问题。那再往下走。说框架版本的一个选型,在我们大数据开发当中啊,比较主流常用的像阿卡奇这个生态,CDH生态以及HDP生态,当然CDH和ADP已经合成一家了。哎,这么两大生态。那我们到底选择阿帕奇系列呢,还是选择啊CDH系列呢?
13:04
对不对,哎这块呢,后期会大家去重点去讲解。那再往下来服务器,我们是使用物理机还是使用云主机?那你像物理机当中,哎,国内比较主流的有华为浪潮,戴尔惠普。对吧,那你到底选哪一个。那云主机里面有华为云、亚马逊云、阿里云、腾讯云。对吧?那这些我们又该如何的选择?大家再思考说,我们如何来确定我们集群的规模?什么意思呢?根据你要统计的指标,以及你公司的数据量,我是要算出来我大概要买多少服务器啊。我是买五台服务器还是买十台服务器,还是15台还是100台呢?那哪些因素会影响我们购买服务器的一个规模?对吧?哎,这些都是我们要思考的问题。
我来说两句