00:00
好,那上一节呢,我们已经将2020年6月15号的数据准备好了啊,那现在我们就可以使用阿斯卡班进行全流程调度了啊,那使用阿兹卡班进行调度的第一步就是创建project对吧?啊,那现在我们打开它的工作界面,创建一个project,那此处呢,我们起名为j ma,那下面呢,写上一个描述信息,然后点击create project啊那接下来呢,我们要做的工作就是编写工作流配置文件对吧?那这个配置文件呢,一共有两个啊,那分别是project文件和flow文件啊那这个project文件的内容呢,是固定的啊,所以此处不再做过多的说明啊,那其实核心的配置文件呢,就是下面的这个flow文件。那为了节省时间啊,此处我们就不在逐行编写了啊,大家自己编写这个flow文件的时候呢,最好对照着工作流程图去写,那这样去做的话呢,诶不容易出错啊啊,那接下来呢,我们就把这个图给它截一下啊,然后呢,我们对照这个图一起去看一下我们这个工作流程的配置文件,我已经提前把flow文件的内容放到note byt加加当中了啊,那接下来我们一起对照着看一下啊,那整个文件的内容呢,仍然是一个notes数组啊,那数组当中的每个元素对应的就是工作流程当中的一个工作单元啊,那具体呢,就是我们数据仓库当中每层的一个数据装载脚本啊,那现在呢,我们挑一个来具体的看一下啊,我们就以第一个为例吧,那大家来看一下,那首先这个job它的名称叫做这个呢,其实跟我们脚本的名称是一致的啊好接着往下走,那它类型是什么呢?是的类型啊,然后大家注意观察一下啊,我们后续的每一个它的类型是不是都是的呀。
01:42
对吧?啊,那接下来呢,我们再来看一下这个具体的command是什么,来来看。啊,那实际上这个command的呢,就是我们之前所编写的数据状态脚本,没错吧?那第一个任务呢,那我们调用的就是my circlel to HD fs.sh这个脚本,然后呢,我们需要根据脚本的规则传入相样的参数啊,那比如说我们第一个jobva,那传入的参数呢,一共有两个对吧?那第一个是哦,第二一个呢,啊,应该是一个日期啊,但是这个日期呢,此以说我们并没有传入一个具体的值对吧?而是传入了一个ER表达式LT,那这显然是对一个变对不对?那我们什么时候这个呢?简就是在后续我们进行调度的时,在阿兹卡哎,再根据我们具体的要求或者具体的需求去传入具体的这个日期的值。
02:33
啊,是这样的啊OK,那这个值到底怎么传啊,后续呢,我们会做详细的说明的啊好啊,那我们后续每个job的写法呢,都是类似的啊,所以此处呢,我们就不再一一说明了,然后呢,大家千万不要忘了啊去指明诶我们这个job之间的依赖关系啊,那最后还有一个注意事项一定要说明一下啊,那由于我们现在的阿卡班的部署模式啊,是集群模式对吧?那而且呢,我们是有多个E的啊,而我们需要调度的这些脚本是不是现在只存在于HIDO102这一台节点呀?
03:06
那所以我们在进行全流程调度的时候呢,哎,要么指定HI102上的ex去执行所有的任务对不对?那要么呢,就需要将我们所有的脚本分发到每台节点啊OK,那接下来呢,我们去看一下具体的要求啊,那我们打开文档,那文档当中呢,其实有一小节的啊,就是这个阿斯卡班多模式下的注意事项啊,那当然我们在之前讲阿斯卡班的时候也提到这个问题了,对吧?啊好,那接下来我们看一下具体的要求啊,那首先我们先看第一种方案啊,第一个方案就是指定hi top102这一台节点去执行所有的任务,那如果采用这种方案呢?诶,我们一共需要去做两件事儿啊,第一件事儿,我们需要去阿兹卡班的啊表当中去查询102上的ex的ID,大家注意啊,这个ID1定要重新查看一下啊,为啥啊,因为在这张表当中啊,这个ID是一个自增主键啊,它是会发生变化的啊,我们每次重新启动阿斯卡文的ex,那这个ID都会发生变化。
04:07
这个一定要注意一下啊啊,那查询到它的ID之后呢?哎,我们需要在后续调度任务的时候加上一个参数,哪个参数呢?就是use ex这样一个参数啊,当然它的值就是ex的ID啊好,这是第一种方案啊,那第二种方案呢,就是分发我们所需要的所有的脚本,那当然呢,在这儿我们只翻翻脚本是不够的啊,为什么?因为在脚本当中呢,我们其实引用了一些应用,对吧?比如我们在脚本里边引用了谁,是不是引用了s school吧啊,也引用了have啊,那又由于我们的haveve是不是配置了Spark引擎啊,对吧?那所以呢,我们也会用到Spark啊,并且呢,我们的have one Spark引擎是需要一个Spark home的环境变量的,对吧?那所以说我们环境变量咱们也要考虑到啊,那所以说最终呢,我们如果采用方案二,那我们就需要去分别分发哎,我们的所有的脚本啊,分发have,分发scoop,分发s Spark以及环境变量的配置文件。
05:03
啊,那由于我们分发了环境变量的配置文件对吧?那所以说在分发之后呢,我们需要在hi豆103HIDO104去重新加载一下环境变量的配置文件,那也就是S一下对吧?那S完之后呢,一定要重新启动阿兹卡班啊,因为只有这样阿斯卡班的exor才能够获取到SPA home这个环境变量啊,那我们的脚本呢,才能够执行成功啊OK啊,这就是我们这两种方案的具体要求,那在这儿为了方便呢,我采用方案一啊好,那接下来我们去实际的操作一下啊,那首先我们需要先将这两个文件打到一个zip包当中,对吧?来我们右键。来给它添加到这波包。然后呢,我们给他改个名字啊。这个叫做J豹。好,那打完包之后呢,我们打开阿兹卡湾的工作界面啊,然后上传这个zip包。来找到我们的这个包,J冒点Z,然后呢,Upload。啊,那现在已经上传成功了对吧?那接下来呢,我们点击exte flow啊,让大家注意观察一下,那此处是不是就已经出现了我们的工作流程图啊,对吧?那大家最好把这个图呢,和之前自己画的图做一个对照,看看是否是一致的啊好,那完了之后呢,呃,我们就可以去调度这个工作流程了,对吧?啊,但是在调度之前我们别忘了传参对吧?那在哪传参这儿呢?是不是有一个flow parameters啊对吧?那点开点开之后呢,我们需要传入相应的参数,那首先呢,就是第一个参数啊,哪个参数呢,就是DT。
06:29
那我们为什么要在这传一个DT呢?很简单,因为在flow文件当中是不是引用了DT变量了,对吧?那既然它引用了,我们就必须得给他传值才行,要不然肯定汇报这个参数找不到的错误,对吧?好,那现在呢,我们把这个DT变量给它加上,加上之后呢,咱是不是需要传一个值啊,对吧?那现在我们应传哪个值?那天我们要计算的数据是不是6月15号了,所以说我们应该传2020杠零六杠幺五才对。没错吧,啊,那这时候有的可能会有疑问了啊,那我们如果说现在不是跑具体某一天的任务啊,而是进行每日定时调度啊,那我们这个日期应该怎么处理呢。
07:07
对吧?诶有同学可能说了,诶每日定时调度的时候呢,是不是不应该传日期啊,诶其实确实是这样的啊,诶因为什么?因为我们之前脚本当中的逻辑是这样的啊,如果我们不传第二一个参数日期啊,那它是不是会自动去计算前一天的日期啊,对吧?啊,那我们每日定时调度是不是就应该让他去计算前一天的日期。没错吧,诶,但是我这儿不传日期的话行不行呢?哎,不行,你不传日期的话,那这是不是会报找不到参数的错误,诶那所以说我们在进行每日定时调度的时候呢,就比较尴尬了,对吧,我传日期也不行,我不传它也不行,那这个到底应该如何处理呢?啊,其实很简单,如果我们现在要进行每日定时调度,那我们可以这样处理啊,DT变量,哎,咱有,但是值我不传啊,那大家来看一看,现在我是不是就解决了这样的两个问题了,那首先变量有没有,哎,有对吧?啊,所以说这就不会报错了啊那再一个呢,我我拿到变量的之后有有值吗?它没有值是空对不对,那我们脚本当中的判断逻辑是不是就是第二个参数是否为空啊对吧?那所以说呃,如果说我们现在要进行的是每日定时调度,那这个DT这样处理就可以了。
08:14
啊,那当然现在我们要要跑的是具体的某一天的数据对吧?那所以说这个日期的值我们还是要给它附上的啊,应该是零六杠幺五啊好,那这个完事之后呢,我们再传入第二一个参数,第二参数呢,就是use ex对吧,E SE to,那完之后呢,我们需要去查看一下这个ID是多少对不对,好,那现在我们打开啊这个这工具。然后稍微等一下啊。然后呢,找到我们所学的那张表,阿斯卡湾啊,然后呢是exs对吧?那大家来看一下HIDOOP102这台节点的ID现在是一对吧,那OK,那在这儿呢,我们就需要写入一个一啊好,那现在呢,我们该传的参数就传完了,那接下来我们就可以点击excute了,点然后continue啊OK,那现在这个工作流程呢,就已经开始执行了,那这个工作流程的时间呢,可能比较长啊,大概呢需要20多分钟啊那所以现在呢,我先把视频暂停一下啊,那等它执行完之后我们再去查看结果,好,各位同学,那接下来呢,我们继续进行啊,那这个工作流程图现在显示的是已经全部呃变绿了啊,也意味着执行完成了,对吧?那现在呢,我们去买serve当中去检查一下这个最终的结果,来我们打开jama report,找到这个,呃,我们jama report当中的12张表对不对,咱们逐个检查一下,比如说看第一个。
09:30
啊,大家看现在没有数据对吧?没数据一定要记得刷新一下啊,刷刷刷这儿对不对是吧?那你看这是不是已经有15号的数据了,对不对啊,已经有了啊,那或者说在这呢,我把它直接给它关闭数据库,然后再重新连一下,那这里边我们再逐个查啊,这里边四条啊,这个呢,是不是有14有15对不对,那这个呢,也是有15号的,往下走核对比一下是不是也有15对不对,那完了之后呢,其余的我就不再一个一个看了啊,因为应该是没有问题的,对吧?那也就是我现在这个全流程是不是从前到后就是通的了呀,对吧?啊,也是我这个全流程调调度呢,到此就结束了。
我来说两句