00:00
当然了,可能有些同学会觉得,哎,在这个UI上去这样点点点,这种操作呢,看起来不够技术范,作为一个技术专家,我们就应该是直接打开一个命令行,然后噼里啪啦一敲键盘,敲一行命令,直接就可以把一个作业提交上去,这才符合我们的技术范儿嘛。所以我们接下来呢,还要简单的来介绍一下怎么样使用命令行去提交作业啊,当然了,使用命令行提交作业原理跟我们在web UI上是完全一样的。其实我们应该能够想到啊,直接在web UI上去提交的时候,底层执行的也是命令考的一些操作啊,所以接下来呢,我们就直接用最底层的方式再来实现一下,当然了,如果说我们还是在哈比102上要去提交的话,我们还需要注意,我们这里还应该把当前的NC。这个服务要先提起来,诶那这里边就有一个问题,那我们另外去提交的时候,这个命令行界面怎么办呢?啊,其实也很简单啊,我们可以直接再去打开一个terminal,一个终端控制台,然后接下来,首先我们当然是需要先启动集群,我们现在的集群就是一直在启动的状态,然后接下来呢,诶,那我们进入到当前的。
01:18
Flink目录下边来,接下来直接使用并目录下边的flink,我们要执行的命令是flink说这就是提交作业的命令,然后后边呢,直接就可以跟一个杠M参数啊,那后边指定的就是当前要提交到的flink集群中的赵manager到底是谁,我们这里当然就是。哈杜OP102,然后后面跟着的端口号是8081,也就是我们当前提供了web UI的那个对应的接口,然后接下来我们想到之前在web UI上提交的时候呢,有各种各样的参数,比如说诶,这里有入口类的指令,可以指定运行的并行度,另外呢,还可以把我们当前程序要运行所需要的参数传进去,另外还有保存点之类的参数啊,所以在这里命令行提交的时候,当然通通都可以以参数的形式进行传递,比如说这里我们直接给一个杠C,那后面跟着的当然就是入口类了啊,我们可以直接把当前入口类的对应的这个引用放在后边,然后接下来呢,如果我们还想指定当前运行的并行度的话,那可以跟一个杠P参数啊,如果我们不指定的话,当然默认还是配置文件里边的一嘛,那假如说现在我们指定当前的并行度是二,哎,那么就是杠P。
02:43
二。然后接下来我们就要指定程序运行的参数了啊,那在指定运行参数之前呢,我们先要指定当前的抓包,要指定抓包,首先我们得把它先传到哈杜102上啊,必须在本地我们才能找得到嘛,所以接下来呢,我们用一个小工具做一个远程的连接,连接到哈杜102上,然后把我们当前target目录下的。
03:07
Link TUT1.0shop点抓这个抓包上传到对应的。OPT module,我们直接为了方便调用啊,直接把它放在flink-01:13点零这个目录下边,直接把它放过去。好,这样的话,接下来我们就可以直接找到它后边跟上对应的执行参数。杠杠host哈102杠杠PORT7777。直接回车提交。接下来我们可以看到啊,当前会有一个提示说job has been submitted已经被提交了with job ID,哎,这里有一个job ID。这就是我们提交到集群上面的对应的这个作业的编号,它的ID啊,所以接下来呢,我们就应该可以在web UI上,诶想要去看的话,我们现在应该就可以看到了,现在我们看到诶,当前的这个tasklo已经被占用了,已经没有了,然后running drop呢,现在多了一个当前的这个running job的ID是什么呢?我们看到啊,E850结尾的这个ID果然就是我们刚刚提交的这个。
04:17
那刚刚提交的这个作业,它为什么会占据两个slot呢?哎,这里我们仔细来看一下的话,它跟前面我们提交的那个作业就有所不同了,当前他划分的这个框,我们所说的这个任务啊,这个步骤看起来。就多了一个,它当前呢划分了三个框,我们看到之前我们说一开始的source读取数据源和后边的flat map和map本身这三个是合在一起的,是一个框,现在呢变成两个框了啊,仔细我们一看的话就会发现啊,它其实为什么是两个框呢?因为他们的并行度不同。Parallelly,不一样,前面我们这个S这里它是一,后边是二,那我们自然就会想到了,我们明明当时指定了杠P参数是二,并行度是二,那为什么这个source这里又是一呢?诶这里要多解释一下,就是我们当前如果是一个socket文本流的话,这种数据源它就没有办法并行啊,这是它的底层结构所决定的,这种数据源并行度默认就只能是一,即使我们在外面配置了并行度是二,那也生效啊,就最后它的并行度还是一,所以他们的并行度不同,就导致了这几步操作没有办法合成一个任务。
05:39
那我们看到这里看起来是三步任务啊,最后占用的slot数量到底是几呢?下面我们看一看三步任务,第一个任务有一个并行任,后面两步任务呢,各有两个并行任务,所以总共我们看到在这里它是有五个任务,五个task,那它总共占用的task slots数量。
06:04
是这里的两个,把两个全部占用,所以我们这里可以大概的得到一个结论,就是看起来我们占用的lo的数量是跟当前我们指定的那个并行度有关的,而跟具体的task数量好像没有直接的关系啊啊,那当然了,关于这个问题我们会在后边第四章进行详细的展开讲解。呃,那同样我们就会想到这是提交了作业之后,还是到web UI这边来去查看了,那假如说我就不想到web UI来看,我就是想在当前的命令行里边把所有的操作全部做了,能不能做得到呢?当然也是可以的啊,这里边我们看到提交之后,这里就一直挂在这里啊,我们可以直接CTRLC,然后退掉这个页面,哎,那有同学可能想这个退掉之后,是不是相当于这个任务就取消了呢?并不是的啊,我们在这里重新刷新一下,会发现当前这个作业还是在运行的,我们当前只是提交的一个绘画而已,所以这个并不影响。那接下来假如说我们想要取消,诶,或者说想要在命令行里边去查看当前的作业,又应该做什么操作呢?其实也非常简单,直接用。
07:19
还是当前并目录下边的flink命令,然后只要去给一个list就可以了,Link list,然后加上对应的这个job ID。我们可以看到就可以直接查到运行状态,当然了,其实在这里我们查看的时候也根本不需要加上后边link作业的ID,我们直接写link list就可以看到当前正在运行着的对应的这些作业,那如果说我们想看到之前已经运行结束的,取消的或者已经失败的作业,那怎么办呢?诶,后面还可以加上一个杠A参数。就是表示把当前所有的作业都要列举出来啊,那这样的话,之前我们取消掉的那个作业也可以显示在这里,那如果说我们现在想要把正在运行的这个作业取消掉,又应该怎么做呢?啊,其实也非常的简单,我们只要把这个ID复制下来,接下来直接调用一个。
08:19
Link can。哎,就是我们指定的某一个具体的job ID,那接下来当前这个job就被取消掉了,如果现在我们再去做一个link list-A的话。来查看,我们看到这两个作业就全部都已经是取消掉的状态。这就是我们使用web UI和命令行两种方式向flink集群提交作业的过程。
我来说两句