00:00
嗯,好,各位同学,那咱接下来呢,就正式进入到下一章了啊,所以这这一章开始咱们就得去动手实操了啊呃,这个下一章我们要讲的内容是什么呢?是数据仓库环境准备,呃,这里边呢,我们一共要做这样的三个准备工作,那第一个呢,就是数据仓库的运行环境,呃,第二一个呢,是数据仓库的开发环境,那还有一个呢,就是模拟数据准备,呃,我先简单的介绍一下这三个准备工作咱们要做的具体内容是什么啊?首先第一个就是数据仓库的运行环境,呃,什么叫做数据仓库的运行环境呢?就是将来咱这个所谓的数仓,其实说白了咱们主主要就是用谁呀,主要就是用have,对吧?我们需要在have当中去创建一系列的这个表,对不对?然后呢,我们需要去写一系列的circle,那将来呢,我们需要用一个调度工具去把咱们写的这些circle是不是全流程的给他调度起来啊,对吧,那这实际上就是咱们这个数据仓库运行的一个整体的环境,那当然这里边儿了最核心的一个组件,那就是谁呀,其实就是这个have,对吧。
01:00
呃,那在这儿呢,我们要准备的这个运行环境呢,其实主要就是指这个氦,那当然了,这个调度工具我们将来也会用,呃,当然我们暂时先用不到,等到时候呢,咱们再去装,那现在我们要做的工作就是把这个have给它准备一下,当然have呢,大家可能之前都已经装好了,对吧?呃,但是呢,我们这儿,呃,这个不是说简单装完就行,我们需要给have呢去替换一个计算引擎,大家都知道have是支持不同的计算引擎的,对吧?呃,都支持哪几种,大家还有印象吗?默认是MR对吧,还有Spark还有T对吧,这三种,那在这儿呢,我们会给它替换一个引擎,诶,这是我们要做的一个核心工作啊,现在往下走,那下面一个是啥呢?就是数据仓库的开发环境,那所谓书藏的开发环境呢,就是说说白了,那将来咱们是不是得有地方去写这个建表语句,写搜会语句啊,对吧?那这一段咱们在哪去写呢?总不能说每次都打开have的那个命令行客户端,在黑窗口里边取消,对吧?这个就不太合适了啊,所以在这儿呢,我们会准备一个数据仓库的一个可视化的开发工具啊,就有点类似于什么呢?类似于买circle的那个GUUI的客户端,也就是那个什么nay k呀,或者是那个四惠药小海豚啊,对吧,类似于那个东西啊,OK,那接来咱继续往下走,那下边一个我们要做的工作就是模拟数据准备,呃,这个模拟数据咱们这儿为什么要准备呢?其实很简单,大家想一想啊,那将来咱们去设计或者是开发这个数据仓库的时候,咱是得一层一层的去做呀,对吧?那假如说我把第一层的表我都设计好了,Circle考我也都写好了,那玩意儿我怎么去验证一下,就是我写的这。
02:30
这个circle它对不对,我建的表示它O不OK呢,对吧,那咱们说得有数据去验证才行,对吧?所以在这儿呢,我们需要去准备一些数据啊,然后用用作干啥呢?用作我们后续的这个开发工作的一个验证啊OK,那这就是咱们这儿呢,呃,这个环境准备要做的具体的工作来视频我先停一下啊。呃,好了各位同学,那咱接下来呢,就来正式进入到我们,呃6.1这一节,就是数据仓库运行环境的搭建,呃,那实际上呢,这个数据仓库的运行环境呢,我们大致呢,可以分为这样的呃两类啊,其实我们目前咱们提到的这个呃数仓的运营环境,对吧?咱们提到啥是不是就是以have为主啊对吧?以have为主体对吧?然后呢,我可以替换have的引擎,我可以替换成什么呢?比如说替换成Spark。
03:16
也可以替换成3HAS,对吧,但是你甭管替换成谁,那我们面向的仍然是have对吧,对吧,我们写circle,我们仍然是打开have的客户端去写circle,对吧?我们去提交任务,仍然是用have去提交任务,对不对?诶,那这是我们数据仓库的一种运行环境,那实际上呢,呃,除了用这种方式去运行的数仓里边的一些circle啊,或者是其他的内容等等,我们还有另外的一种方式,那是谁呢?另外一种方式呢,就是我们面向Spark,对吧?那大家都知道,就是在Spark当中呢,有一个模块是专门用来处理结构化数据的,对吧,那个模块叫做什么呀?Spark circle对吧?那玩Spark circle呢,它是支持各种各样的数据源的,对吧,其中就包括谁。其中就包括have对吧?那所以说呢,实际上我们也可以用Spark circle对吧?那让他去读取,去对接have的数据源,呃,完了之后呢,呃,我们在使用Spark circle去计算我们这个数据仓库里边的数据,那用这种方式也行啊,OK啊,那这实际上就是我们呃去运行这个数据仓库的时候呢,两种主要的这个选择,OK啊好,那完之后呢,这里边有两个名字,我们需要去重点的说一下,哪两个名字就是它一个叫做high one Spark,一个呢叫做Spark和onhave啊这两个呢,大家可能刚开始的时候容易容易搞混啊,那现在呢,咱们把这个东西给它来简单的说一下,那首先我们先说明一下这个high one Spark是什么意思啊,呃,所have on Spark,其实大家想应该也能想明白什么叫have onrk,那首先have on Spark是不是have在前面啊,对吧?那也就是我们的主体仍然是have,咱们面向的是have,那on Spark指的是什么呢?就是将have的计算引擎是不是给它设置成Spark呀,对吧?OK,那这就是所谓的have on Spark,那Spark on have又是什么意思呢?
04:58
哎,很简单,也就是我们现在面向的不再是have了,而是SPA了,对吧?但是我们现在对接的是谁的数据呢?是have的数据,其实说白了就是什么?就是SPA circle吧,对不对?Spark circle,你给它对接到have的数据源,那现在的这种环境呢,我们就称之为SPA on have啊,OK,这两点大家必须得搞清楚,实际上这是不是就正好对应我们两种常见的这个数据仓库的运行环境啊,对吧?诶是这样的啊,行,那完了之后呢,呃,既然我们去呃选择这个,这个还有的,呃,选择数仓的这个运行环境的时候呢,我们有这样的两种选择,对吧?那这时候咱是不是就得考虑一下,我们到底去用谁呀,对吧,那咱这个数仓到底用谁呢?我们用这个还是用这个,呃,其实呃,我们再去做选择的时候呢,咱们就得考虑一下,就是他俩的优缺点是什么对吧?对得对他俩做一个简单对比对吧,完了之后呢,才能根据实际情况选择咱们所需要的那个环境啊OK,那接下来呢,我就带着大家简单的去对比一下这两种运行环境,那首先呢,我们先从这个呃,计算性能这个角度去对比一下。
05:58
OK,那其实大家可以琢磨琢磨,你说海王Spark跟SPA have他俩谁的竞争性呢,会好一些的,呃,这个可能大家呃自己想也想不出来啊,我给大家直说一下啊,那首先咱们得先告先搞清楚,就是high one Spark,就是它底层它是怎么去做的,所谓high one Spark它就是这么做的啊,就首先我们会呃去编写一套这个have的这个S语句对吧?那写完之后呢,是不是把这个circle传给have的这个呃客户端呀,对吧?那have呢,它会怎么样?它会去解析我们这个circle对吧?最终去生成一个物理执行计划对吧?这个物理执行计划之前咱们大家学的可能是MA6,对吧,但实际上呢,现在会转成一个什么呢?Spark的计算任务,OK,那Spark计算任务它用的是Spark当中的哪套API呢?是RD那套API啊,是这样的啊,OK,那这就是还Spark的一个基本的计算原理,而Spark on have咱们刚才说了,其实说白了就是用Spark circle去对接have的数据源,对吧?OK,那Spark circle它底层使用的是哪一套API呢?是R的API。
06:58
PI吗?并不是,他用的是data set data frame那一套API,对吧,这样那大家都知道就是data set呢,相较于咱们这个RTD,它多了一些什么呀,不是多了一些这个数据的列相关的一些源数据信息啊对吧,没问题吧,OK,好,那既然那我们这个R,呃这S当中有了更多的关于这个数据的一信息,那实际上呢,这个s Spark呢,它就可以去根据这些呃多出来的这些列的原数据信息,对咱们的计算过程呢,去进行一些更细致的一些优化啊是这样的啊,那所以说呢,理论上这个data set和data frame它的计算性能呢,要高于呃咱们的这个RB啊,是这样的啊,那所以说那从这个角度去考虑的话,那Spark和它的这个计算速度是不是要比亥王Spark要更快一些,对吧,这是从计算性能这个角度去考虑的,诶那接下来呢,我们再从另外的一个角度去考虑,哪个角度呢?就是生态的丰富程度,生态的丰富程度,什么生态呢。
07:58
指的是数据仓库的生态啊,OK,那大家可能现在对数仓的生态还不是那么的了解啊,我们在最开始的时候只是了解了一下数据仓库的核心架构对吧?数仓的核心架构其实就是这么点啊,说实话不是特别多对吧?中间会有一个have,里边会有表,会有三个,然后呢,需要有一个调度工具去进行每日定时的调度,这实际上是数仓的核心架构,对吧?但其实啊,呃,一个完整的数据仓务除了有这个核心的这个架构去实现核心的功能之外,可能还会有一些周边的工作需要去做啊,那这些工作都有什么呢?我先简单给大家介绍一下啊,那比如说这里边我们可能需要去考虑一个数据安全的问题,来大家回忆一下,就是咱之前hi豆也学过,Hi也学过对不对,呃,HB咱们也学过,对吧,你学了这些框架,你你回忆一下,你再去访问这些框架当中的数据资源的时候,对吧?你比如说访问HD的文件,访问have里边的表,访问h base里边表,你之前做过认证吗?
08:57
对吧,就是你跟他证明过你自己的身份嘛,根本就没有对不对,就好比啥意思呢,比如举例子啊,你现在我现在只要怎么样呢,打开我的外B页面对吧,打开浏览器,我访问一下,嗨,61029870,我我只要能访问这个页面,我是不是就可以随意的这个对HDL的这个数据啊,进行什么删除啊修改的是是做为这个操作呀,对吧,也是我们这实际上根本就去没有去做认证,那你想一想这个东西它安全吗。
09:21
这显然是不安全的,对吧,也就是我们实际上咱们前面所学的这个环境,都是在这种所谓的就是非安全环境下去做的啊,是这样的啊,OK,好,那完了之后呢,我们,呃,正常情况下,你在企业当中,我们是必须得考虑一下那个就是数据安全的一个问题啊,对吧?OK,那这种情况下呢,我们就需要去做一些与数据安全相关的工作啊,来保证这个数据资产的安全,好那这个数据安全我们主要包含哪两方面的工作呢?第一个就是数据就是用户的认证啊,就是首先你在访问我的表之前,在访问HT文件之前,你得先证明自己的身份,所谓认证其实应该做的有一个什么操作呀,类似于就类似于一个登录的操作,应该就是对吧,输入用户名,输入密码对吧?诶通过之后你才能去继续访问啊,是这样的啊,这是第一部分工作,那实际上数据安全呢,还有另外一部分工作,那就是啥呢?就是授权,就是认证加授权管理啊,认证很好理解,那什么叫做授权的啊,其实授权也很简单啊,就是说我正常情况下呢,不是说你只要认证通过了你就能。
10:21
访问我这个have里边所有的表,你就能访问HD所有的文件,不是这样的,你得怎么样才行呢?你还得有权限才可以啊,就是说你证明你是张三了,对吧?完了之后呢,还得看一看张三有没有权限去访问这张表,有你才能访问,没有就访问不了,对吧?这叫做授权管理,OK啊,这其实就是数据安全的两项工作,OK,那我们要想去做这个数据安全的话,我们需要借助什么东西呢?诶你需要借助两个东西,第一个就是一个网络认证协议,叫做就就是用来做这个用户认证的,这个网络认证协议咱们用的是谁呢?是curs ks,哎,这个呢,是一个呃,Hi doop平台当中的所有的框架都支持的网络认证协议啊,叫做cur啊,OK啊,那你只要为hi doop启用curs认证为have启用认证,OK,那完之后你以后再去访问hiop里边的文件,再去访问HD,呃,再去访问have里边表,你就得先进行这个认证,先认证之后你才有。
11:21
资格去做进一步的访问,那是这样的啊,OK,那这个科S,呃,这个认证怎么去配置呢?呃,这个实际上呢,每一个框架的官网上其实都有相应的说明,在这儿呢,我可以带大家去简单的看一看啊,比如说我们以hi度op为例,那我嗨,Do要想启用这个科呢,我怎么去启用呢?那咱们打开这个阿帕奇嗨,Doop,然后点一下这个,我们点一下里边,比如说这个3.2.2吧,完了之后你往下走啊,左边是不是它里边的一些这个基本的介绍啊,对吧?然后咱们就是找一个谁呢?找一个安全的模式,大家注意观察这个,这一个什么叫做secure mode对吧?那注意啊,这个secure我们直译过来也叫安全模式,对吧?但是这个跟咱们之前学high度的时候,呃,就是讲的那个HDFS的安全模式是一回事吗?
12:06
不是一回事,那个安全模式叫什么模式,叫safe mode,对吧?Safe跟secure不是一回事啊,那咱这要讲的是这个secure mode,那现在我们点进去点之后你看它这里边它讲的是什么东西呢?呃,这个其实就讲的我们呃如何对hi to启用这个所谓的安全模式,其实说白了就是如何对它启用安全认证,来咱们往下走,这有一个这个introduction就是介绍对吧,那介绍在这呢,在这呢我们就不多说了,然后呢,我们重点看一看我到底用什么去做这个认证就完事了,大家看这。是不是就刚才我提到的那个curbo啊,对吧?啊是这样的啊,什么意思,也就是说我们hi do,那他要想启用安全认证,那他啊就只能使用curs这个所谓的认证协议啊,那怎么去启用呢?说白了就是在里边做各种各样的配置,大家可以看一下,就是这一整页都是在讲我们如何在hi当中开启科S认证,这个说实话还是比较复杂的,你需要配置大量的参数啊,这都是还没到头的啊,非常多啊,呃,是这样的,OK,那大家呢,以后要是需要去做这个科S认证的话呢,呃,到时候呢,呃,可以就是在那个B站上面找一下,就之前我录的一个数据仓库4.0的视频,然后里边呢,就包含了启用这个hi curs认证,还包括have,包括其他的等等等都有启用相关认证的这个视频啊,是这样的啊,呃,里边就有这个相关的操作,然后文档也有现成的啊,就是你可以照着这,如果你这个英文要是比较好的话,你照着官网配也行啊,要是差一点,你就照着我整理的那个文文档去做也可以。
13:37
啊行,这个咱们就暂时先不多说了,这个就是关于如何启用hi doop的这个,哎,呃,这个安全认证,你只要人启用认证之后,你就不能再像咱们现在这样,你想访问的一个文件,访问的个文件,你必须得先通过认证之后才有资格去访问,诶这是这样的啊,OK,那这是关于用户认证的一个基本说明,那除此之外呢,还有什么啊,呃,另外一个是不是授权管理啊,对吧?诶授权管理实际上呢,我们也得借助另外一个工具去做,另外一个工具叫什么?叫做阿帕奇ranger ran,诶JA啊叫做rangeer,它就是专门用来做授权管理的,OK,而且那它的这个授权管理还是比较强大的,它支持几乎hi生态当中的所有的这个组件的,呃,授权管理工作,比如说它支持HDL文件,有了它你就可以实现什么样效果呢?你就可以实现,比如说我只让张三访问某一个文件啊,对不对,其他的文件我不让他访问啊,是这样的,你可以实现这样一个效果,那你也可以用它去管理have当中的这个授权,对。
14:37
对,那怎么去管理呢?很简单,你可以控制,比如说张三能访问某张库下某个库下边的某张表,甚至呢,你可以精确到一个什么呢?一个字段,对吧,就是张三只能访问这个库下边这两边这一个字段,别的字段不能访问,诶你可以精确到这个力的这个这个这个字段力度啊,是这样的啊这一点大家稍微得理解一下,OK,那这就是另外的一个组件,叫做reer啊OK,好,那实际上呢,也就是说我们要想做数据安全的工作,两部分,一部分是用户的认证,一部分是用户的数据的这个,呃,这个授权啊,实际上两部分工作,两份工作呢,我们都需要借助一些其他的东西啊好,那完成之后呢,我们再往下走,那除了这个数据安全之外,那我们这个数仓还可能需要去做哪些工作呢?啊,比如说我还需要去做一些,呃,这个数据质量监控。
15:23
数据质量监控,那什么叫做数据质量监控呢?来大家思考一个问题啊,就是我们这个数据仓库是不是每天都要把这些计算流程跑一遍啊,对吧?诶,那我怎么能知道对吧?他跑了一遍之后有没有就是这个就是跑完之后啊,就是有没有成功,咱们肯定是能知道的,因为如果说这个不成功,这个流程是不是完不成啊,对吧?哎,就是跑完之后,那我怎么能知道我得到的这个计算结果是不是准确的呢?对不对,就是我们这儿这个这个调度工具,他只负责什么呀,只负责给你把这一个流程给你跑完就完事了,对吧?他会帮你去检查这个结果,对不对吗?他不会检查的,对吧,我怎么能保证,比如说我今天算出来的一个数对吧,这个数它到底对不对,这个我怎么保证呢?啊对吧?OK,那这其实就是所谓的数据质量啊,数据质量那我怎么能保证这个数据是对的啊,OK,那这时候呢,我们就需要去做一些工作了啊,这里边儿那常见的一个工作是怎么去做呢?你可以这样做啊,你可以把每天新得到的这个当天的计算结果,我跟什么呢?我跟前面一天,甚至是跟前边N天的数据去做一个什么呢?做一个比较。
16:33
对不对,因为正常情况下,我们每一个计算指标,我每天都会算对吧?OK,那一个同一个指标,我每天它这个计算出来的结果,它理论上应该是一个缓慢变化的一个趋势了,对吧?啊,如果他出现一个突然变得非常大,或者是突然变得非常小的这样的一个情况,那大概率是不是就可能是我们算错了呀,对吧?诶可能重复的算了,也可能是这个漏,呃漏漏算了对不对,是这样的,那所以一般情况下,你可以这样去做,把每天的结果跟我前一天或前几天的数据呢,做一个简单的比较,那比较完之后呢,那这时候呢,我们就能知道,OK,那我今天结果是不是准确的,诶这个工作呢,就叫做数据质量的一个监控,这是一个方法,当然可能还有其他的方法,当我这个比较的时候呢,这里边其实也有各种各样的比较方法,呃,最简单一种方式是怎么样呢?你可以跟前边几天的值做一个,呃,前面几天的值,它的一个平均值做一个比较,对吧,然后呢,你规定一个阈值超过30%,或者是呃,这个下跌30%,那就报警对不对等等,你可以这样去做,那或者说你要。
17:34
想再做的准确一点,可以怎么做呢?你可以针对就是我前边N天的数据呢,比如说我去做一个,呃,我我我用一些这个机器学习的算法呢,我去训练一个模型对不对,训练一个模型之后呢,我是不是可以用它去预测我将来的这个值是多少,对吧?哎,如果你今天得到的值,哎跟我预测出来这个结果,哎比较符合,那就说明OK,那不符合那就诶报警等等等等,诶这其实就是数据质量诶需要去做的一些工作啊,OK,那这些呢,诶也是需要去借助一些其他的框架的等等等等,OK啊那其实除此之外呢,可能还会有一些其他的工作需要去做啊,比如说这个集群的这个监控啊,就是集群监控,就是需要去监控我这一整套这个,呃,集群当中的各个组件是否运行正常等等等啊,就这些东西啊,OK,那这些东西呢,说实话,其实呃,并不会影响到我们这个数据仓库的核心计算啊,对吧,就也就啥意思呢,没有这些东西,我的数仓能不能跑起来呢?能跑我的数据能不能算出结果来呢?也能算出来,都没啥问题,哎,但是有。
18:34
了这些东西,我能够保证数仓更怎么样,我能够保证数仓它能够呃更加的安全,是不是更加的稳定,更加的呃准确的去运行啊,对吧,是这样的,那这其实就是那些工作他们的一个,呃相当是一个辅助的一个功能,诶这一点大家要理解一下啊,OK,好,那就是我刚刚提到的这一系列的工作,每个工作是不是都可能会用到一些其他的组件啊,对吧?OK,那这些组件,那他们对谁支持是比较好的呢?
19:01
他们对have支持是比较好的啊,OK,但是对于Spark circle而言呢,它的支持可能就不是那么的完善了,为什么会出现这样的一个情况啊,呃,是因为那have它本身就作为一个什么出现,是不是就作为一个数据仓库工具出现啊,对吧?啊,加上是它最开始出现就是作为一个数据仓库工具出现,所以说咱们刚刚提到的那些工具呢,他们其实都是围绕着have去开发的,对不对?那所以说他们对have的支持都是非常好的,但是对于SPA的支持就不是那么的完善了,有的工具它不支持Spark根本就不支持,有的呢,诶,可能只支持Spark当中的一些比较老的版本,新版本,比如说3.0它不支持等等等等,诶是这样的,也就是他们对Spark的支持是不是那么好的,也就是也就是说从生态的这个丰富程度上去考虑,那是不是亥光Spark它的生态要更好一些啊,对吧,哎,OK,那也就是说,呃,这两种环境high one Spark Spark,还有他们其实各有自己的这个优缺点的,OK啊,那这边咱综合考虑呢,最终我们选择。
20:02
的是谁?我们选择的是海王Spark这个运行环境啊,这一点大家要稍微的注意一下,也就是说我们面向的仍然是have,然后呢,咱们需要将其计算引擎切换到Spark上面啊,这个大家理解一下就行了,好了,这个完成之后视频我停一下啊。
我来说两句