00:00
OK啊来,那同学们呢,跟我一起来看一看,咱们昨天同学遇到的一些问题啊,呃,就是我这儿可能没有截图,但是有些同学在使用这个麒麟,在使用麒麟啊,去进行这个cube的构建的时候呢。就这个位置就嗯某一步吧,这里边的某一步,诶报错了,报错之后呢,点开这个日志,他报的错误呢,就比较那个比较奇怪,报了一个什么错误呢,报了一个这个空指针pointer。然后呢,它下边那个控制针下边啊,他说是干什么去去找什么的时候出现控制帧了,是诶找这个一个MR任务的时候出现了这个控制帧,从哪去找呢?从历史服务器上面去找这个任务的时候出现了控制帧。也就咱们应该都知道我们这个麒麟他为什么要去查看这个历史服务器吧,这个前面给大家说过,是因为麒麟是不是也是一个工作流程啊,这个构建过程对吧,然后一个工作节点完成之后,要去那个历史服务器上面查看他是否这个完成,如果完成了才提交下一个任务,是这样的,也就是在他去检查这个历史服务器上上历史,历史服务器上边这个任务的状态的时候呢,找不到这个任务报错了。
01:11
这是由于什么这个原因导致的呢?这个呀,其实是由于。我们之前大家呃在启动就是这个历史服务器啊,就是大家可能之前历史服务器就已经启动过了,启动过了,然后然后怎么的呢?然后就是历史服务器其实一直在起着,然后我们后前边在做那个呃,日志采集的时候,咱们不是那个造了几天的数据吗?那可能会出现啊,你把这个时间往前修改的这种现象,对吧?比如说你启动启动谁,你启动这个呃历史复习时间可能是比如说是3月15号起的。OK,你要造十号的数据,你可能诶你把它那个时间改到3月10号了,那就是如果有类似这样的操作的话呢,就会导致咱们这个历史服务器这边呢,出现这样的问题。那这个问题,呃,基本上是怎么回事呢?呃,这个呀,得大家得去了解一下,咱们历史服务器它这个一些这个工作原理简单的说一下吧,给大家简单说一下历史服务器的原理啊,那我们看一下,首先你得明确我们历史服务器里边的历史这个任务的数据存在什么地方。
02:16
对不对,它存哪存在HTFS上了,那存在哪个路径下面了呢?默认呢,是在这个,嗯,我查一下啊。默认呢是在这个,呃,我这个102开的进程太多了,我在103上查吧,这样会快一些啊来复制。那默认是在tmp下边,那tmp下边呢,有一个这个海杜雅N,其实在这个里边啊,那我们来看一下海杜甫,然后杠Yan。这个数据呢,是存在这个里边的,然后里边呢,有一个sta sta j NG,诶丢了一个这样。诶诶,这个写错的地方,诶就在这啊来大家看一下,诶默认是在这里边啊,在这里边,那这里边有一个什么,有一个history,这里边存的呢,就是咱们的这个历史任务HS to历史任务的记录。
03:07
好,那大家看一下啊,那诶清下屏吧,清下屏,那这里边呢,你看它有两个路径,一个路径呢是诶但immediate一个是但。那这俩路径分别是干什么的呢?是这样的啊,就是有如果说我有一个任务,一个历史,一个一个正在运行的一个任务啊,诶完成了完成了,完成之后呢,它首先啊会把这个所有的任务呢,那个描述文件全部放到这个,但以me intermediate,诶放到这个路径下边,那这个路径呢,它相当于是一个什么,相当于是一个中间路径啊中间路径那这个放到这里边,那我们这边呃就是呃会有一个线程,一个线程,它是一个定时诶任务,一个定时任务。家务当中的一个定时任务,他会来干什么呢?它会周期性的去把这个,诶里边的这个,呃,任务的这个文件给它放到哪去呢?诶放到这个蛋里边,但就是真正完成的对不对?诶放到这里边,那那个我们的历史任务呢,放到这个里边之后呢,我们的历史服务器页面呢,才能显示你那个任务。
04:13
也就是说咱们历史服务器,你去查看那个任务的时候,实际上它是从这个路径里边去查找他所需要的这些数据的。是这样的啊,那也就是说大家想一想,我从这到这儿是不是一个周期性的一个定时任务啊,一个定时任务,那定时任务它基本的这个原理是什么样的呢?基本原理是这样的啊,就是说OK,假如说我它默认是这个,应该是默认三分钟,诶这个周期三分钟的周期,那它也是这样的,应该是OK,首先这是当前时间。那OK我会一直不断的进行这个检查检查检查什么呢?检查OK那个这个不是当前,比如说这个是我上一个节点的时间吧,比如说上一个节点,那OK我会这个时间不会不是往会往后走吗?他会不断的去检查OK,我当前时间是否是上一个时间的三分钟之后是否是,如果是那我就往那里边移,如果不是,那我就,诶不往里边移,能理解吧,那假如说呢,哎,我们那个历史服务器呢,OK这是咱们一个,比如说最开始的一个时间节点,那OK假如说我们时间正常的往后走。
05:17
正常的往后走,那你这边这个定时任务肯定是没问题的,但是呢,我们干什么呢?我们把时间改到前面去了。那就就会判断,诶,你这个时间是否是这个时间的三分钟之后,那肯定不是啊,对不对,那不是,那也就会导致我们的那个就是完成的任务啊,它那个文件它会只保留在这个地方,而不会去这个蛋里面,但是我们历史服务器查了,他只会查这个蛋,就是查就最终完成的这个。所以说呢,就会导致啊,咱们那个历史服务器上边出现那个任务呢,你找不到找不到啊,这其实就是咱们这个胡乱的去修改这个系统时间导致的这个定时定时出现了问题。是这样的,所以说呃,其实在生产环下呢,我们肯定是不会去,呃把这个系统时间往往前修改的,嗯,所以说人家这个开发的时候呢,其实也也没有考虑到你这个时间倒流的问题,所以是这样的啊,那这边呢,呃,咱们就知道怎么回事就行了,反正这个呃以后大家生产完理也不会遇到这样的问题,那遇到这个问题怎么解决,咱们现在怎么解决呢?哎,你就按照我那个说法。
06:19
你把这个进程停掉,然后把时间你给改回来,这个往哪改呢?你可能你忘了你那个之前那个时间节点是是什么时候了,那你什么时候也不用管了,你就往后改,往后改是肯定没有问题的,那改到什么呀,你就说改到咱们最新的时间,你之前肯定没有没有到过这个今天以后对不对啊,你改成今天,然后再重新启动这些进程,进进程,那这块就没有问题了。这是咱们这个历史服务器的问题啊好,那它完事之后呢,我们来看一下什么东西。来看一下咱们那个同学,呃,在使用这个麒麟进行查询的时候遇到的一个问题啊,就是在这,这是我们那个insight insight啊insight是查询的意思嘛,就是洞察查询的意思,在这写circle,那同学写circleq的时候呢,就是说你得首先你得明确啊,咱们我昨天没演示,没演示一会一会我再讲啊,就是有同学遇到了一些什么,我查的时候我查不出来结果,或者是这个报错这些问题,那这些问题咱们就不在这讲了吧,我再开一个这个新的视频,呃,就是说我们讲一讲这个在麒麟当中,我们查询的时候应该注意哪些事项。
07:21
咱们那个就不算作问题了啊,咱们算作今天的新内容,好把视频先录一下吧。
我来说两句