00:00
那接下来我们来聊一聊更深入的一些东西,首先呢,是它的一个架构设计,其实这个之前呢,咱们也都啊简单聊过了。它也它的原理呢,也是相对比较简单的啊来我们看看这个PPT啊,那首先呢,Data塔他在中间起到一个什么呢。传输通道,一个媒介的作用,对吧?那么它将数据库分为两端,一端呢是读取,一端呢叫写入。那么比如说my circle,它是通过一个my reader的模块。一个插件对吧,我们说它是插件式的,那它支持MYSQL的读,那你就读好了,那经过data插。之后它再结合一个其他的,写出一个writer,比如说写到HDFS,它用一个hdfs writer的插件就可以写到HDFS。
01:00
它大概的一个抽象就是这样啊,这个比较简单啊。那这个其实也有点大家不知道还了不了解对吧,内部是不是也可以翻呃,分成三个组成啊。大概分为三块,是不是一个S。那里面它是不是有个channel。后面是不是有一个S对吧,其实数据采集的一些框架,它的设计整体的模型是差不多的,肯定是有一个读入啊,中间的框架的一个缓冲通道,再到后面的写出对吧。基本都是这么一种模式,这个比较简单,那我们看一下它的一个基本原理,有几个概念大家要了解的啊。首先就。淘就是单个作业的管理节点,也就说白你启动了一个同步任务,那它就是一个job呗,对吧,这也没什么好解释的啊,那么它会将整体的一个同步任务,比如说你从my circlel同步到HDFS,那么这是一个同步作业对吧?好,那它将这一个job,它会切分成很多很多个的task,有这就有点像咱们,呃,MR里边的是不是先读的时候map task是不是也是切分成多个呀?
02:32
对吧,根据我们,呃,那个切片。然后呢?有多个麦法task,它一样的,它会并行的。那每一个task就负责一部分了,比如说我整个作业同步从my circlel同步到HDFS,比如说有100万条,那它我切分成四个任务,那可能呃理想啊,假设啊,这边是25万,25万,25万,25万就大家一起分担一点工作嘛,对吧,一个人忙不过来,那就大家一起干啊这样子同时呢,也主要是为了提高效率,好,那这些他是个贴完直接就跑嘛,没有他还要做一个什么呢。
03:16
这个叫什么调度啊,其实调度调的是什么呢?他要组队,它要组成一个东西叫task group,那这个东西叫任务组对吧,那他组队呢,他并不是所有人一组。啊,那比如说把集中,比如说分成四个,这两个是一个组,这两个呢是一个组啊这样子,那这个任务组里面呢,它默认并发数是五啊这个数字我希望大家记住,这个值当然是可以改的,什么叫并发呀?它是动态的概念啊,不是说我这两个呃,分到同一个任务组,它的并发是二,那比如说我这边有20个呢。
04:03
有20个task分到了一个任务组,难道它的并发就是20吗?不是啊,不是,这个呢,其实并发是一个动态的概念,也就是说我同时有几个在运行。比如说你这个组里边有20个任务,但是你的并发是五,那说明什么?说明你只能有五个一起跑。对吧,那五个跑完了,在后面再接五个继续跑呗,就像你们上厕所蹲坑,呃,那比如说有十个人着急上厕所,快拉裤裆了,但你的厕所位置只有三个,那你是不是只能同时只有三个被使用了。对吧,那三个上完了后面接着上呗,就这么一个概念啊,任务组还有一个关键词啊,默认务啊。那任务组呢,他就负责里面的一个任务执行呗,那还有一个细节就是任务里面的执行,就跟我们刚才了解到的运行的一个呃模型一样,它有一个什么reader模块,中间有一个channel缓冲,后面呢有一个writer,这就是一个task,那整体而言呢,它的架构还是比较清晰的,比较清晰的。
05:20
那这边呢,我想,呃,提一个思考啊,就关于。这个并发的概念,因为它呢,也涉及到咱们data叉,究竟能不能把它的性能发挥到极致啊,咱们在后面也会聊聊优化也主要是这一块啊啊举个例子啊,我有100个,我设的100个并发,大家注意这是我设置的。那么请问需要呃,有几个task group?100个并发。需要几个task group?
06:00
或者我换一个吧,啊,这个不好算啊,我一共有100个task吧,那我的并发设为20,那请问需要几个task group?啊,大家把这个搞清楚,就理解会透彻一点,你想想,我一共切了100个task,那我的并发要求是20。有没有人X得是五个呀?你就说100除以20,那不就是五个组嘛,那你就搞错了,呃,还是回归到这一点啊,注意看这一句话。一个任务组的并发数量为五,那我现在要求并发是达到多少?达到20,那你单个是五,那你是不是应该20除以五等于四个组啊,对吧,四个group。应该是这样子,那每一个还有一个问题,每个task group有几个,分几个任务啊。
07:07
这个大家一算就知道了呗,你不是一共四个组吗?你不过一共100个task吗?那你就100除以四呗,等于25个。对吧,所以基于这个场景,就是说我需要四个任务组能达到并发20,另外呢,每个组负责处理25个task。那所以大家可想而知,我优化的话是不是听见了这个。任务并发的数量去控制啊,对吧,它其实也可以控制一个速率,那么理想状态咱们贝塔差是能将带宽打满的啊,也就是说很强呗,很快呗啊那啊下面就是咱们刚才那个例子啊。20个并发,然后有100个黑了100个task。这是咱们的一个,呃,基本的原理啊,基本的原理相对比较简单啊。
我来说两句