00:00
好,那接下来我们开始去配置一下这个的,呃,这个配置文件,好,那现在我们打开一个空白的文档,那现在我们就开始写,那一般情况下咱们编写一个配置文件呢,我们需要做以下这样的几步工作啊,那第一步是什么?是先给这个每个组件命名。啊,对吧,先给每个哎组件啊命名啊,那咱们的所有组件都有什么呀,Source channel think呗,对吧,那接下来第二一步干啥呢?通常情况下,哎是比如说配置诶,Source,那下一个呢,配置channel,哎或者这个都行啊这个顺序无所谓ch an。那再一个,然后呢,咱们是来配置think,来配置think,那最后一步是干啥呀?对这个绑定或者叫做指明这个stop与channel或者think与channel之间的关系,对吧?那这个绑定啊,这个think呃与chael和呃这个还还有谁啊,还有这个so,呃,这个so south与Cha和channel的诶这个关系啊,就是这样的几个步骤啊好OK,那接下来呢,咱们呃现在给大家回顾一下吧,那咱们就呃手写一个这个配置文件啊,咱们就写一次啊来,咱们一点一点开始来那我们先来看看第一个就是每个呃组件名称啊,那咱们每个组件咱们应该有什么组件啊都S还能think呗,对吧,但是在以咱们现在这个为例,咱们是不是没有thinkk呀,那没有think咱们就可以先啊,这个不写think了啊,那所以咱们只需要命名两个组件。
01:38
那命名的规则是什么样的?应该是首先先起一个名字,这个名字是谁的名字,是agent的名字啊,一个agent的就是咱room相当是一个一个application进程对吧?啊,里边它就叫一个agent啊,那agent咱们就叫ae,那ae后边呢,我需要给south起名,那就SOCES,注意咱们一个agent里边呢,我的south China think都可以有多个对吧?那所以都是sources啊,那咱们加S后边呢,我比如说我只有一个,那就是re,有俩呢。
02:09
要俩怎么写,是逗号还是空格,空格R2就行了啊,那咱们当然只有一个,那接下来继续走A一点,呃,咱们Cha ls channels等于比如说CE啊,就这么写,那think没有就不用写了啊,下面配置think是不是也不用写了呀,就干掉就行啊,这是咱们命名,那接下来就是去配置咱们的south和China和S了,那咱们的规划south就是tell south对吧?那怎么去写呀,那首先A一点啊,SOC,因为你是不是可能有多个S啊对不对?那所以说这里SS点先R1指定我要配的是这个S对吧?那一个必要的参数就是啥type type必须得有啊,啊不管是s channel thing是不是都有一个type呀,必须得写,那这个type咱们写啥呢?写啥是不是?那你要不看文档就得看官网对吧?那打开辅助官网,我们找到这个document,或者找到这个release啊点。
03:04
Release就是他发布的这个稳定的版本对吧?啊,那当前的这个release就是啊,1.9.0啊,那你要看其他的,你就点这就行了,那咱们点这个啊,1.9.0,好,那现在我们相当于就来到这儿了,我们需要点谁啊,点那个user guide啊就盖好,那完了之后我们还需要去找我们所需的那个那个组件啊,咱们找的是谁,是tail DR source啊,SOC回车来到这个位置,好,那来了之后呢,那接下来我们就照这个写呗,那首先第一步type,那咱们就得按照他这个来啊,他说得写啥呀,那是不是得写这个,那咱们就得跟他一样,对吧,他让咱写啥就得写啥,再写啊,得听话才行啊,得往下走,那下边太完之后,那还需要去配哪些参数呢?来,我先把这个东西先粘一下啊。这个东西是不是后边都得照着这个格式去写呀,那CTRL呃V呃,然后CTRLV啊CTRLV啊照这个写,那就来往上走。
04:00
呃,这边呢,我们有这样的几个一个特点啊,就是这个黑体字都是必须得写的啊,必须得写的啊,咱们type已经写了,那China的是不是相当于是绑定south跟China的关系啊,这个放放在后边啊,那现在咱们就看这个是不是现在只剩一个fair group了呀,对不对?Field group在这指的是什么?Fo指的就是我们那个PAL d source,它所能够监控的文件组,相当于是啊,然后大家看啊,我们这个,呃,首先能配置,是不是能配置多个field group呀,对吧,因为这有S嘛,啊那要配多个应该是怎么分割。哎,是不是也是space separate的呀,啊也是空格分割,你这个一定得看一眼啊,有的时候他让你空格分割,它有的时候呢,就是逗号分割啊,得看清楚啊看清楚啊,也就是我能配多个fair groups,然后一个f group到底是什么呢?一个group到底是一个什么呀?在配置上来看。就是一个啥,这不告诉你了,就是一个regular expression,这就啥呀。
05:03
正则表达式啊,对不对,Regular inpiration是不是就是正则表达式,也就是说实际上一个组就是对应一个正则表达式,一个正则表达式是不是能够匹配多个文件呀,对不对,也就是一个组就能匹配多个文件,而且呢,我还能配置多个组,所以说是不是tell s能够同时监控多个文件呀?啊,这个功能还是比较强大的啊好,那接下来我们就来去配一下自己这个field groups来,首先我们就要把这个参数复制一下拿过来,拿来之后呢,放到我们的配置文件当中,放哪放在这啊,CTRL,那比如说我们这咱们要监控的路径是不是只有一个,那我们就来一个谁来一个F一起一个名字啊,就一个,那接下来呢,咱们需要去这个我怎么写这了,我应该写上面CTRLC,然后放到在这啊,那接下来呢,我们需要怎么做呀,我们需要CTRLX一下F,那CTRL位,那咱们需要怎么做,咱们需要给这个F1,是不是得声明一下呀,点F1就是这种格式,那然后呢,等于一个后边是不是就指向一个。
06:03
正则表达式啊,对不对,一个路径,然后后边对应一个正则啊,那咱们要监控的路径应该是哪呢。应该是哪,应该是CD OPT mole APP log,这是我们生成日志的那个路径吧,应该是哪还不是,这还得还得往里倒一个,对吧,应该是log对吧,我们要监控的是这样的这个文件啊,那我们要监控的是这个路径下边的诶这样的文件啊,那咱们其实如果说这个路径下没有其他文件,如果说全是咱们的日志文件的话,那我身上这怎么做就行啊,啊直接怎么做就行啊,直接写一个这个通配就行啊,写一个什么呀,写一个这个正则能够表示所有的这个都能匹配到,是不是就可以啊对吧,但是咱们这儿呢,可以怎么做,我们这儿可以,呃,比如说我们假如说我们这个日志路径下面呢,可能有不同的文件,比如说有什么app.log嗯,还有什么,比如说有什么error.log呃,还有什么其他点log对不对,呃,就是可能有其他的这个,呃干扰文件,那我们就全匹配是不是就不行了呀,那该怎么做呀?哎,咱比如说我就匹配一下以APP开头的啊,这样的文件我才要啊,就是跟其他区分就行,那当然在咱这。
07:12
其实没必要,我们所有的文件都是APP开头的啊好,那如果需要区分的话,你就通过正则去写就行,那咱们需要先怎么办呢?先把呃,这个路径先拿到,然后复制啊,然后CTRL,喂,那OK,后边呢,我想找一个以APP开头的这样的正则应该怎么写呀?那首先就先写一个APP呗,对吧,APP开头呢,相当于什么,相当于我后边的东西是不是就是随便哎都可以啊啊就是相当于是若干个随机字符就行,对不对,那怎么写呀。应该写啥点点完之后呢,星啊,或者是点什么呀,点加号是不是也行啊,对不对,那这个这俩东西怎么去理解啊,这个点首先是什么意思,在正则里边。还能想起来吗?
08:01
点是任意字符对吧?啊,那星是什么呢?星是前面一个字符,这个乘以若干倍。对不对啊,就是任意一个前边的这个字符,那这相当于点星,就是什么呀,就是任意一个任意字符呗,啊就这意思啊,这是星,那我要写一个加号呢,这指的是什么呀,要是什么呀,也是任意一个,但是不能是零个。啊对不对,这加号跟星号呢,就区别就是这个星号可以是零个,那加号呢,至少是一个啊是这个意思啊,那所以咱们这儿呢,其实写星写加号都可以啊,只要保证APP开头就行啊,APP开头就行好了,那这个相当于就能够监控到我们这个诶文件啊,完了之后咱们再往下走,还有一些其他需要去配的啊,来打开这个文档,这里面还有一个比较重要的就是它。叫做position file啊,这个position还记得是什么吗?还能不能想起来这个文件是不是就是我们t source实现断点续传它那个功能所需的一个文件呀,是这样的啊,就是咱们TS呢,我会采集一个文件,然后呢,我采集到什么地方了,那我会实时的把你这个文件采集到的位置记录到这个所谓的position file当中。
09:14
啊,会记在里边啊,因为它是一个文件对吧,所以说辅助挂掉之后,这个文件是不不会受影响啊,那我再启动起来,从文件里边再读取上次诶消费到那个位置再接着消费就行,对吧?这个其实有点类似于什么东西啊,有点类类似咱们卡夫卡当中那个保存,呃,奥赛的那个topic对吧?啊有点类似于那个东西啊好,那咱们这个能能搞清楚就行,那它是不是有默认值啊,它是有默认值的啊,然后呢,我们按照文档诶,把它放到一个固定的路径下吧,咱们文档放到哪了,我们文档把它放到了这个位置,那咱们也把它放到这个位置啊,CTRLFC。来我们来接着走,来它放到了这个,把它删一下啊,这应该是有一个CTRLV啊,这是咱们那个值啊,那这个值那个参数呢,参数叫做position file,咱们也复制啊,这个参数尽可能这个复制啊,要不然的话,你手写可能有笔误,行给它放在这儿就行了啊,那这个其实就是我们这个SS,咱们必备的一些参数了,必备的一些参数了,行,那这个玩意之后呢,那实际上我们还得配一个东西啊,咱是不是还得配一个拦截器啊,就是咱们前面虽然拦截器没写,但是我们大家得知道,我们配一个呃,用来校验接层格式的这样一个拦截器啊,那这个东西咱们给它配上吧啊,给它配上那怎么配呀。
10:29
那是不是得在官网上找一下,咱们搜一下这个flu,哎,Lce玩走诶找到它,那这个怎么配啊怎么配,其实很简单啊,我们只需要这样的。两个参数就行了啊,一个是声明你有多少个拦截器,然后呢,就声明每个拦截器的一些参数,对吧?那每个拦截器必备的一个参数就是它的全列名啊,全列名啊,那现在我们其实只需要这个就行了,来复制,那下边还有是不是还可以配一些其他的参数啊对吧?那咱们这个拦截器相对比较简单,不需要从这传参,那所以咱们就不配了啊,那我们打开这个诶文档CTRLV,哎,正好它的S和它这个A人的名字跟咱们也一样是吧?那我们现在只有一个拦截器,就只要IE就行了,然后这个类咱还没写呢,对吧,所以说咱就不用爬这个一会儿啊,咱自己写的给它替换过来就行啊,这是咱们这个south就完事了啊,那接下来咱们去配我们那个channel啊,那channel咱们同样是A一点Cha ls点应该是c1.type等于什么?那咱们要用卡夫卡channel,是不是得搜一下卡夫卡channel啊,Kaf KA or啊不是,应该是ch shaanel,走,拿到卡夫channel好那。
11:43
他拿这之后呢,我们先来简单看一下,呃,这个文档上对它的一个说明啊,看一下这个卡普卡塞呢,可以被用在以下的多个场景,下边这个单词是不是场景的意思啊,来看一下哪几个场景,三个场景第一个是有form,有flu的source和think,那它是不是相当于提供了一个reliable可可靠的,然后呢,高可用的这样的一个channel啊,对不对啊,就是相当于提就像一个普通的channel啊来那接下来看下一个。
12:16
第二一种啊是什么?有flu的south和拦截器,但是呢没有think啊,第三种场景呢,是有flu的S,但是没有south啊,没有south啊,那咱们现在使用的应该就是哪种场景啊,这种场景就是有S,有拦截器,没有think啊,没有think啊,那这个大家应该能够清楚,那接下来咱们往下走啊,呃,先不往下走了,咱们来分析一个问题啊。咱们都知道我的卡夫卡拆,呃,咱们可以怎么去理解它?可以把它当成一个topic对吧?啊,当成一个topic啊,但是实际上大家想一想啊,这个卡不卡插件到在代码上应该是怎么实现的,它底层代码应是怎么实现的。啊呃,代码应该是什么?我我这边是不是有south啊,South我要往China里边写啊,往China里写肯定会调用这个China的方法,对吧?啊,会调用它那个put方法啊,那我这边呢,我要从channel里读啊,那读的话是不是得需要调用China那个take方法呀,对不对啊,一个put一个take,那让家可以想一想,你说他这个put和take方法应该都是怎么实现的呀。
13:20
铺的,其实里边应该是啥逻辑啊。铺的就是生产者对不对,那要配一个呢,配个就是卡夫卡消费者对不对,也就从代码层面来看啊,这个卡不卡泰啊,其实应该是有两面性的啊,有时候我其实充当了一个生产者的角色,有时候呢,充充当了一个消费者的角色,对不对?那你得看哪种场景啊,那如果说是咱们第一种场景,既有south有think,那是不是就是有是生产者又是消费者,那下边这种呢,只有south没有think,那就是什么生产者,那下边这个呢?呃,那只有think没有造,那是消费者啊,所以说呃,咱们能把这一点搞明白,那你看它下边这个参数,那你就比较比较比较熟悉了啊,你看卡普卡China诺的所有的参数,那都是什么呀?
14:06
那是不是就是跟生产者或者是跟消费者相关的参数啊,对不对,你看第一个,比如说。Put the,那是不是生产者消费者咱们都要配这个对不对,那topic呢?生产者消费者是不是都要配套呀,对吧,生产者消费者都得都得面向一个topic嘛,啊那下边这个。哎,Consumer什么group.id这个是啥呀?消费者组ID,这应该是谁的参数,这个很显然应该是咱们那个消费者的参数吧,啊,应该是消费者的参数啊,消费者参数啊,这个大家应该都知道,好,那接下来看下一个,诶,这有一个,这有个什么default part ID。哎,这个是默认的分区ID对不对,这个应该指的是啥呀。应该是生产者的这个参数吧,啊,应该是生产参数,也就是说呃,我往咱们的这个呃,卡夫卡那个生产者往卡夫卡里写数据的时候,我可以指明分区嘛,啊这你可以指明啊,但是一般情况咱也不指明啊,也不指明啊,这是诶这几个参数啊,这几个参数啊,好,那这些东西我们大家呃得知道它是怎么回事就行了啊,就是生产者或者消费者一这么说大家其实就不陌生了啊好了,那咱们把现在我们要配的几个必须得配的参数给他配一下,这俩参数首先必须得配啊,那type是什么?Type是一个全利名,那咱们把这个全利名粘过来复制,呃,然后呢,放到哎咱们这个这个位置来啊好,那现在咱们接着往下走啊。
15:33
Type有了,那还得配谁,还得配谁,是不是还得有一个什么boot SCP source啊这得配这个注意啊,它这有前面是不是有一个卡不卡点啊对这个你别丢了,你最好是复制啊,该复制的复制,该自己写的自己写啊来我们等于呃,那后边就写咱们自己的卡不卡集群地址呗,1029092,咱们前面说了,这最最好写几个呀啊,最好写俩啊最好写俩,那咱们要写两个的话,应该是怎么写俩是空格还是呃什么呀,还是这告诉你了啊,The format is comma separated是不是就是common,就是逗号的意思啊,就是逗号分格的啊,逗号分格的,所以说这个还是得看一眼的啊,那这边就得是逗号,然后海度换幺零啊103啊,然后呢,909啊,就诶我这个是不是写的是中文的呀,我我这换成英文书法啊,9092好搞定,那这玩意之后,咱们再接着往下走,呃,还有一个topic这个用不用写这个实际上啊,就是你不写也行,它有个。
16:33
默认的对吧,但是咱们不能用它默认的啊,咱们用一个自己的啊,那这个卡不卡是topic的,咱们也得有啊来,那这个相当于是我先给它复制过来,然后呢,前面这个东西咱得复制一下放在前面CTRL还有V啊,那这边呢,我再CTRLV啊,在CTRLL后边还会有啊好,那topic嗯,咱们用啥。啊。
17:00
嗯,咱这找的不是组K。咱们找的是卡夫卡集群地址不是组K,组K牌不是2181吗。嗯。您注册在登众下面那个。那是卡不卡,那个broker会在组开上去注册,我发消息,咱们现在要干啥,我现在是生产者和消费者,是不是要发消息啊,要发消息发数据对不对,那生产者发发数据往哪发,是不是往那个卡夫卡里边发呀,往卡不卡,你你回忆一下,你写那个生产者API的时候,你指定组开班地址了吗?没指定的。生产者写生产者或者消费者的时候啊,有zoo开吗?没有啊,你再回忆一下,一会看看文档啊,咱们这儿不是指定的组开,我们指定是卡卡集群地址啊,所以不要写那个写杠卡不卡啊,这个得搞清楚啊,咱们接着往下走啊,那下边是这个topic,那topic呢,我们现在没有对吧?那一会儿我们可以自己去创建一个啊,那比如说我们一会创建的名字叫什么呢?比如就叫做toic topic log,那比如说就是那个,那一会咱们就去创建一个就行了啊,这个随便指定一个啊,大家再往下走,下边呢,就是咱们那个,诶剩下还有什么参数啊,再找一找比较重要的来往下走,那诶这个其实确实还有比较重要来这个参数,大家还记得是什么?Pass as flu,一问它对不对,那这个参数诶,它的作用是什么?后边有一大堆的解释啊,这个我直接给大家说就行了,这个参数这个作用就是这个,大家认真听啊。
18:31
啊,这个得咱们得去怎么去考虑它呢?咱们得从两个角度去考虑啊,两个角度去考虑啊,怎么从两个角度呢?因为咱们现在是配的是卡不卡channel对不对啊,那卡卡channel我有时候是什么是诶通过flu的S往卡夫卡里边写数据对不对,也有可能是通过诶这个HDFS,呃,通过咱们那个浮动的S从卡夫卡里边去读数据对不对,那咱们分开考虑啊,咱们先说前面那个。啊,对于前面那种场景啊,那这个参数它的意思,它的作用就是什么呀,就是我往卡布卡里边写数据的时候,是否保留咱们那个flu event的结构。
19:13
啊,其实正常来说,咱们的疑问的是什么样的,是不是两个结构,两个组件啊,一个是hier,一个是body,但其实咱们那个真正的数据就是啥,就是呃,就是body对吧,那这个默认什么,默认它是设成true了对吧?设成true的话,那他往咱们的卡夫卡里边写数据的时候呢,你的那一个record其实里边就包含了什么。啊,就包含了hier了啊,因为它默认是保留这个衣服的结构了,那如果设成false呢,那相当于是你写到卡夫卡里边,你那个record里边啊,只有谁只有保底啊,这就看你要不要保留了,要保留海ER这个就是数,不保留就false,哎,这是从这个角度去考虑,那从这边去考虑呢。从这边去考虑应该什么意思啊,就是你去哎读的时候啊,你是否哎把咱们这个event呢,给它进行啊,是否把咱们这一个record呢,按照什么呀,按照问的去解析。
20:08
啊是这样的,那假如说我这个摄政处,摄政处,那我这边是不是读到卡夫卡这个record的数据,我需要给它封装成一问呀,因为我到think里边了,对吧,那你解析的过程当中,你就得按照有hier去解析。啊,那如果说你这个设成false,那我就相当于什么呀,我就我就会会会怎么样啊,哎,会把卡夫卡一个record是不是封装到一个body里边啊啊对不对,是这样的啊,那所以这个呢,大家得搞清楚这个参数它的作用啊,它的作用,那咱们现在是是怎么样,咱们现在是不是要往卡夫卡里边写呀,写应该是这么理解,那也就咱们现在要考虑的问题,就是说我到底是不是要保留那个hier。啊,咱们需要保留hi吗?需要保留hi吗?呃,其实不需要啊啊,我们要传的东西就是啥,我们要传,我们要解析的就是一条日志对吧?啊那个hier其实对我们来说其实不重要啊,其实不重要,而且你你假如说你要是真有hier了啊,真有真有hier你后续解析的时候,你是不是还得考虑把那hier还底线去掉啊对不对,它就破坏了咱们那个阶层的结构了,那所以说咱们这诶不需要保留孩那不需要,那我们就把这个呢设成FOX,注意它前面是没有卡不卡的啊不要这个写错了啊来,那就CTRLV,咱们给这个呢,设成fal sc设成false就行了,好,那其他参数呢,咱们在这呢,其实就不需要再配什么了啊,不需要再配了啊,那OK,咱们把这个,呃下边这个干掉就行了,行,那咱们China呢,相当于也已经配完了,那最后剩下一个点就是需要绑定咱们之间的关系了啊,那反的关系咱们这怎么办?A一点啊,应该是什么呀啊soessos.R1.hanel。
21:48
S,对,哎,Channels等于什么?等于C,那有think吗?没有think,没有think就完事了啊,那假如有think应该怎么写,应该是A一点,THINK4点,哎,比如说K1.chshael这个就没有S了啊,就没有S了,哎,为什么?因大家得得记住啊,我们一个A认当中呢,我们有一个这样的原则啊,就是一个source可以对应多个channel啊,然后呢,一个channel我也能对应多个think,但是哎,多个S呢,不能对。
22:23
同一个China。能理解吧,这个画反了啊,画反了多个,相当于是不能不能这样啊,不能是一个S来自于这个两个山头,这样是不行的啊,那所以从它这个配置是不是也能看出来啊,就是一个K一个S,是不是只能有一个channel啊,是没有S的啊,是这样,大家怎么去记这个东西啊。哎,对,咱们从前往后只能怎么办,只能扩展,你不能收缩对吧?啊,也就是实际上咱们辅A阵的是一个什么结构啊,是一个扇形结构啊,扇形前边是S,后边是S,就是你越来只能越来越怎么样了,只能越来越多啊,是一个扇形的结构,把它记住就行了啊啊,那这个配置文件咱们到这儿呢,相当于就配完了,我们现在要做的事是什么?是去写一个拦截器,把那拦截器的全类名拿过来,那咱们就配完了啊好,那现在把视频录一下。
我来说两句