00:00
接下来看一下hodi的文件布局啊,什么意思呢?也就是说hodi它在存储系统上面,它是怎么一个表现形式啊,说白了,比如说咱们用HDFS作为它的数据存储的话啊,它以什么样的格式,什么样的目录来存储对应的数据,还有原数据啊,那其实这个这个地方我们可以类比为have表。Have的话,它一张表对应HDFS是不是一个目录啊,对吧?那目录名就是表明,那我们知道have是不是可以有分区,它在表明目录下面是不是还有分区目录,那在分区目录当中存放的是不是就是数据文件,这个是have对不对啊,那么who里也有点类似啊,有点类似,那蝴底一张表呢,它也是体现为文件系统的一个目录啊,也就是表的名字就是目录的名字,那么在之后呢,它同样有什么呢?也有分区这个概念,那这个分区跟hi有点类似啊,它也是一个分区,是一个目录,一个分区是一个目录。
01:05
那在分区当中呢,也包含了数据文件啊,那么区别在于哪呢?区别就在于来,我用红色的标出来,它在表的目录下面,除了数据的这些分区目录之外啊,它还有一个是原数据的目录,里面存放了忽底的一些原数据,这张表的原数据啊,表的原数据它是一个点忽底这么一个文件夹名称,它这个文件夹在这个文件夹当中呢,就有呃,Timeline instant相关的一些原数据信息啊,都在这里面。啊,所以大家可以看到,呃,如果是have的话,它的原数据是不是存放在数据库当中了,默认是德比,我们一般会改到像MYSQL这种数据库是不是啊,那么对于户底来讲呢,它用的就是直接在文件存储器啊,直接在文件系统上啊,以目录以文件的方式来存储原数据啊,这是一个。第一个要注意的地方,那第二个地方呢,就是它的分区路径,呃里面呢,呃,数据文件它跟海佛不一样了啊,它基本上只有两种啊,第一种是什么呢?列式存储的PA文件,第二种呢,是行式存储的log文件,他这个log文件就是阿芙罗编码的啊,前面我们也介绍了护底说他使用了开源的数据格式,那其实这两种格式就很常见的啊。
02:28
行,那可能简单这么一说大家应该都明白,接下来给大家看一个呃,实际的例子啊,那这边我已经启动了我的哈度的集群,那大家看看我之前跑过的一个护地表就可以了啊,现在大家应该还没跑啊,但是大家先搂一眼吧,这是我之前跑的,呃,随便找一张表,那么大家看一下这个是我的路径而已。那接下来这些是什么表明,这是忽底表的表明了,跟hi一样啊,那我随便点一张表啊,比如说ods log,好,这个就是忽底表的表明路径,在这个路径下面大家可以看到有什么一个点呼地,这个就是所谓的原数据,那后面这些呢,是有我这张表是按照天来做一个分区的啊,所以大家可以看到它的分区目录名啊,就是某年某月某日。
03:24
那我们呃,来点一下数据的分区,来点进来之后,大家可以看到目前我这张表啊,有一个文件是什么点log。当然也会有什么点PU啊,当然我现在这张表还没有让它生成这个啊,也就是其实没有执行一个compassion啊,这个后面再聊啊,反正我们是看到点log,嗯,那正常的话还有点pack的这么一个文件啊,那除此之外大家看看是不是还有一个东西啊,这个不是目录了,你看。它不是目录啊,它是个文件啊,每个分区它还有一个原数据文件来点一下啊,我们看一下它里面很简单,就是什么呢?有一个commit time,说白了就是这个分区路径创建的时间,时间戳啊,它是一串数字,是年月日十分秒啊,你看2022年9月20号18:46:40 692毫秒啊,这个是精确到毫秒是不是啊,然后还有一个什么分区的深度。
04:27
也就是说你分区路径下还可以有啊其他分区。就多级分区这种样子了,现在我是一级分区,所以它的深度只有什么一啊好,那这个点log其实是数据文件,你看我点一下你看。在这边就能看到一些数据了啊。这是数据啊,阿波罗格式的,行,这个简单搂眼啊,另外一个分区也一样啊。这是没刷新才会这样啊,你刷新一下,再点一下你看。
05:03
一样的啊好,这个数据文件也一样,好,那这个数据的路径我就不再看了,接下来我们搂眼这个原数据目录啊,点糊底。好点一下进来之后啊,我先刷新一下,那么大家在这里可以看到一些文件啊,首先是一个点开头的啊,它会自己会用的一些东西,对吧,像什么STEM,还有临时目录啊这些东西,还有归档啊,护体配置啊这些,除此之外还有另外一些重要的东西是这个。那前面是什么呢?时间戳年月日十分秒毫秒对吧,精确到毫秒的。大家说我再强调一遍他的时间戳,嗯,并不是说按照距离1970年1月1号啊,零点00:00:00,零毫秒距离多少个毫秒,不是这个啊,它直接就是年月日拼接在一起,十分秒拼接在一起,好另外呢,我们可以看到它后面都是什么,德尔塔commit,德尔塔commit,我我们前面聊了instant里边啊,其中的一种动作是不是叫增量提交对吧?啊,也就是说我其实使用的方式是增量提交de他commit,另外呢,还记得instant的组成吧,啊,我们看这个文,呃,这个文件名就好,前面这个是不是instant里面的一个什么呢派是不是。
06:25
它发生的时时间嘛,第二个什么什么commit,这个是不是它的action在后面,这个是什么呢?就是它的state,你看in fly request对吧,当然还有一个是complete对吧,那么有的人就有疑问了,那为什么你看同一个时间,同一个动作既有。这个有,这个又有没后缀的呢?那么大家注意看一下前面它们的大小分别是什么,008,也就是说,呃。调度中还未开始的,它是空的,那就是没有嘛,就不在这个状态嘛,啊,那正在执行中的in fly也是零不是嘛啊,那还有一个这个是完成的,那说明它的状态就是已经完成的,是这样啊,他每一个actionson,它就三种状态都对应一个文件啊,都对应一个文件,其他的也一样,你看。
07:21
然后。这个是不是有俩。对吧,那你再看这个,这个是不是有三个啊,这个是不是有三个,这个是不是有三个啊,就大概的去搂一眼就行,那其他路径基本都是你现在看到的大部分是空的啊。对吧。还有另外的这个OS里面有一个c kp Meta啊,一些具体的原数据啊,去了话的原数据。还还是一样啊,有什么啊。还有这个什么配置对吧。
08:02
这些,嗯,平时我们应该用不上,你看像这个这是。Rose DB pass啊,在哪里,然后超时时间什么什么,一堆东西,你看参数名就能读得懂。那临时路径呢,是空的啊,STEM也是空的,现在。Archive归档也是空的,就看你有没有用上啊,有没有用上。好。刷新一下,看一下的配置。对吧,这里就。有一些护底生效的配置是什么样?就这张表的一些配置啊,行呃,这个简单搂就可以了,这个是我们现在提到的文件布局,也就是说它在文件系统上是怎么存储的啊,要按照什么规则存储?好,那再往下看,我们你看啊,点弧底是元数据,包含了time,呃,这个表的版本管理,呃,归档目录,也就刚才那个arch。
09:12
啊,这这这这什么东西了,这个是归档目录嘛,对吧,现在是我没有做归档啊,过时的instant啊,那每个instant都有什么提交的行为,时间戳和状态。维护了所有原数据啊,这个看过了啊,那数据呢,是以分区的方式存储里面要么存储的点public,要么点漏行,那么相信了解到这呃。大家应该有所理解是不是?
我来说两句