00:00
好,我们今天学习这个山硅谷大技术,大数据技术之这个阿兹卡班,呃,那阿兹卡班它是,呃,用来干什么的呢?我们以及它这个最基本的定义是什么呢?我们去官网上看一下啊,呃,官网我已经提前打开了,呃,这边呢,有一个一句话的定义,这个非常清楚的告诉我们了,阿兹卡班它是什么,以及它解决了什么问题,我们来看看啊,阿兹卡班是一个,你看这啊,Work flow job scheduler,这里边一共三个单词,这里边两个单词是我们的重点啊,一个是work flow,还有一个是schedule,呃,Work flow它是什么意思啊?工作流程嘛,对吧,那盖住这呢计划对叫做这个定时调度器,定时调度器,呃,那先来一个一个来啊,咱先说这个把work flow先搞定了啊,那什么叫做工作流程呢。什么叫工作流程啊?嗯,举一个这个生活中的例子啊,呃,咱们班同学应该有会自己做饭的吧,有肯定有啊,肯定有好的,即便是没有的话,那那假如说我会啊,假如说我会,那我们要想自己那个做做做饭的话,这个是不是得需要一个特定的流程啊,什么流程呢?你比如说我要想这个做一道菜,那对,那我首先第一步得先去超市买菜吧,诶菜买回来了,然后干什么?对,得洗一洗嘛,洗洗洗洗更健康是吧,洗完之后是不是切呀,切完再炒,那这个是不是就是一个非常典型的工作流程啊,那工作流程它有什么特点啊,就是一个工作流程呢?它一般都是由多个工作单元组成的,而且这多个工作单元之间是有这个先后执行顺序的要求的吧,先后的执行顺序,呃,你比如说这个洗菜,呃跟你。
02:00
切菜这个是不是得有这个先后的依赖关系啊,你必须不一定,那你比如说啊,你比如说那个就是对啊,你你是有一个先后顺序的嘛,你必须得把菜买回来,你你才能洗,洗完你才能切,切完才能炒,炒完炒完就可以扔了啊,这个就是一个典型的工作流程嘛,所以说咱应该知道工作流程的两个特点啊好,这是他我刚才举了一个生活当中的例子啊,呃,那我们再来想一想,呃,这个跟我们这个课程相关的这个工作流程,它指的是什么呢?跟咱大数据课程的相关的指的是什么呢?这个工作流程什么地方,什么场景下会有这种工作流程,什么时候。什么时候啊,这肯定不是炒菜了,这回想一想啊,什么场景下会有这种工作流程,哎,你想一想啊,我们前面是不是给大家讲过,这个就是数仓的一个基础的架构啊,这个数仓当中呢,就有一个非常典型的这个工作流程啊,你想一想这个地方这是一个什么,这是一个从数据源到我最终这个可视化的一个界面的一个一整套的这个流程吧,这个呢,它就是一个工作流程,为什么这么说呢?你想它是不是满足我刚才那个工作流程的两个条件啊,一是由多个工作单元组成,二一个呢,是不是它是有先后的执行顺序要求的呀,你比如说这边我数据是不是首先得干什么?诶往这个数据仓库导,导完之后是不是进行进一步的这个分析和计算啊,你看我这每一步是不是都是一个工作单元啊,每一步都是一个工作单元,然后。
03:47
这些工作单元是不是有是有这个先后的执行顺序要求啊,有吧,你的数据先能导到这儿来,我是不是才能进行下一步的这个数据清洗啊,包括这个分析计算等等这些呀,这都是有先后的这个要求的,呃,而且这个先后的执行顺序要求,呃,也就是他这儿呢,是有一个前后的依赖关系的,这个依赖关系具体它指的是什么呢?依赖关系具体指的是什么啊,指的就是说对我前一个这个任务单元的什么结果,应该是作为我下一个任务单元的这个输入吧,它是有一个这样的依赖关系的啊,所以说这块呢,它就是一个非常典型的这个工作流程,工作流程好,那我们现在知道这个工作流程了,那呃,我们知道这个它是一个工作流程之后,那我们为什么需要用这个阿兹卡班这样的工作流程时调度器呢?我们为什么要用它呀?来我们再来分析一下啊。
04:47
呃,前面我们刚才说了这一套流程呢,是由一个一个的工作单元组成的,呃,那我们来分析一下啊,这块是一个什么工作呀,是不是一个这个scope导入的一个这个工作单元啊,那这个后边呢,后边已经进入到这个have数据仓库里边了吧?那后边我是不是每一步都是一条circle啊,诶都是写circle,那也就是说这边是不是都是一个have的这个任务啊?诶再往后这边是什么?是不是一个库的导出啊?OK,那我们就单独说每一个工作单元啊,咱知道每一个工作单元应该怎么去提交不?
05:24
首先词库导入,这个咱刚学的应该会的吧,那后边我去跑一个have的SQL语句,这个大家肯定会吧,怎么办?是不是可以这个have-E啊,后边接一个circle,或者是have-F,后边接一个这个circle脚本是不是都行啊,这是它,呃,那后边导出咱也会OK,那现在把这个任务给大家,就说我这里边儿这一个工作流程当中啊,我一个一个的工作单元,我我让大家去提交,大家肯定都会。都没问题,那大家现在思考一个问题啊,我这一整套的流程,我应该怎么去提交啊。
06:02
一整套的流程,咱怎么去提交。对吧,你你怎么为什么他这个这边为什么会会有一个这个问题啊,因为什么我这一套工作流程是不是前后是有依赖关系的呀,我必须得等前一个完成,我下一个是不是才能提交,对吧?那假如说咱不借不借助任何的调度工具的话,全凭咱手工去这个提交的话,那你你你就需要怎么办了,你就需要等着第一个任务完成,你看它完成了,OK,那我再提交第二一个,第二个完成之后,那我再提交第三一个是不是就得需要咱人工的去那盯着了呀,但是你想啊,如果说任务非常大的话,有可能你这一个任务,你比如说你一个这个have circle,它就需要跑一个多小时,两个多小时。那咱去那儿等着嘛,那肯定不太现实啊,对吧,而且正常情况下,咱这个数仓的任务都是什么时候跑啊,一般都是凌晨跑,凌晨这个十二点一点都是这时候去跑,那大半夜的,让人让咱去守着肯定不太现实吧,对不对,所以说呢,这块我们应该怎么办呢?这块呢,我们就用到了这个阿兹卡班的这这种定时,呃,阿兹卡班这种工作流程调度框架啊,工作流程调度框架,呃,那这个首先阿兹卡班呢,它解决了这个什么啊,解决了两个问题啊,第一个就是我刚才说的这个问题,什么问题呢。
07:27
不是这个工作流程的提交,我们自己提交,我们是不是只能一个工作一就是一个任务单元,一个任务单元去提交啊,但是如果说我们使用阿兹卡班呢,他就会干什么啊,首先我们需要告诉阿兹卡班,你的工作流程是一个什么样的流程,就是说你哪个任务先执行,哪个任务后执行,咱得先告诉阿兹卡班,那你告诉他之后呢,阿兹卡班就会自动的帮我们依次去提交这些任务,也会干什么呢?第一个任务完成之后,它会监控到,呃,OK,这个完成了,完成之后它会自动帮我们提交下一个。
08:03
这样一来的话,这个工作流程的提交问题,是不是阿兹卡班就帮我们解决了呀,这是他解决另一个问题啊,那阿兹卡班呢,还解决了另一个问题,什么问题啊,大家来想一想,就说我刚才给大家写画的这一套的流程啊,这一套流程,你想一想这一套流程,呃,是不是应该是不是说跑一次就完事了吧。为什么我这个数据是不是每天都会生成新数据,所以说这应该什么我每天都需要对新产生的数据呢,执行这一套的流程,每天都需要跑一遍,所以说是不是咱这个地方还需要将这个工作流程去定时的提交啊,哎,定时的提交,所以说阿斯卡班呢,它也能够提供这个定时调度的功能,这个定时调度其实大家并不陌生,因为咱Linux下边这个口上type是不是就是一个简单的定时调度工具啊,跟那个是很类似的,跟那是很类似的啊呃,所以说呢,这个阿兹卡班呢,它就是一个什么,大家再来跟我看一看啊,在这地方什么地方是一个work flow job schedule,以及我们什么时候会用它,诶就是场景啊,更一个最多的应用场景呢,就是用在我们的数仓当中,数仓当中啊,OK,那这个定义说完了,说完之后我们回到咱的文档啊,呃,在文档里边呢,这个地方,这个是前面的定义,咱就不看了啊。
09:26
这地方呢,给咱列出来了一个这个,呃,具体的案例我们来看看这个案例啊,就是说呃,使用阿兹卡湾的一个场景,我们来看一看啊来。来,我把它打开啊。稍等一下,好,我们看看这个案例啊,来,首先看这个我们的数据啊,呃,某个业务系统,注意是每天它都会产生20星G的原始数据,每天注意是每天啊,每天好,那OK,我们接下来,呃,首先我们第一步要做的是什么呢?我是不是得先把这个原始数据给它导入到我们的HDFS上啊,如果说是这个关型数据库里边的数据怎么导,是不是用这个,呃,S scop导啊,如果是这个日志文件呢,咱就用flu,呃,用flu OK,这是它再往后呃,导入到HDFS上之后呢,我们首先需要对数据进行这个数据清洗,所谓的数据清洗咱现在就可以,因为咱还没有讲这个数仓啊,呃,数据清洗呢,咱就可以简单的先把它理解成就是说对数据做一些这个过滤啊,把这个非法数据给它过滤掉等等等等这样的啊,这是它那这个做完数据清洗,做数据清洗的这个工作呢。
10:42
我们可以使用诶,Map reduce,也可以自己写这个Python的脚本,诶也可以使用这个have,或者是我们后边学的Spark等等都可以啊,做数据清洗的这个途径还是非常的多的,这是它,那做完数据清洗之后,我们就可以将数据导入到我们的数仓的表中了,导入到数仓的数仓中的表,OK,你比如说这个地方它画了一个什么这个场景呢?就是说呃,数据清洗完之后,我需要将数据分开导入到我两个表当中,导入到两个表中,OK,那导入到have表当中,我们后续是不是就可以写circle进行分析计算了呀,OK,那我写circle后,写色后,然后把数据呢,放到我数仓的下一层的一个表当中,OK,这是放到这儿,放在这儿之后呢,最终把这个结果展示出来,这个就是呃,我一个简单的这个从数据的呃,导入到数据的展示的这样一个工作流程,你看这一个工作流程的。
11:42
当中是不是就是由多个工作单元组成,而且每个工作单元之间是有这个先后的这个依赖关系的吧,就是有先后的执行顺序要求的,这是它,所以说而且还有一个还有一个点啊,就是这个每天刚才我已强调过了,你每天都会产生,那这一套流程呢,我必须每天都要跑一下。
12:02
所以说呃,针对于这种复杂的工作流程呢,以及我们需要对他进行这个定时调度的这种需求呢,所以说这时候我们就会用到这种定时,诶这这个工作流程定时调度器就是这样的啊,我们今天学的阿兹卡班是一个,呃,我们以后要学的这个乌Z呢,也是一个相同的这个呃功能的一个框架啊OK,那这个玩意儿之后呢,我们呃就已经大致的了解了这个什么是阿兹卡班了,以及这个阿兹卡班它的应用场景是什么,好,我先录一段视频。
我来说两句