00:01
好,接下来我们往下呢介绍呃,读相关的一个流程,那在了解读流程之前呢,咱们先要知道啊,我们最终要读取的数据是长什么样子的啊,那我们的这个最终读取数据呢,我们给它起名字叫h fair啊,就是h base文件的意思啊,也可以叫它store fair啊,因为它在store文件夹下面的啊,那每一个存储在store文件夹下面呢,都会保存成一个一个文件的一个形式,这个文件就是前面我们刚才讲的写流程里面刷写最终产生的文件,那这个文件里面呢,所保存的内容啊,是非常多种多样的啊,它里面的数据呢,全部都是经过序列化的BA数组。直接读是读不懂的,但我们可以知道里面保存哪些东西,首先数据本身就是存储到本体啊,KV键值对,除了数据本身之外呢,还包含有原数据记录啊,包含有当前这个文件的信息,还包含有索引文件,这个索引文件指的是我们前面这个地方的。
01:00
数据的所有文件跟这个原数据是有区别的,原数据是什么?是记录当前存储的这些KV数据是哪个表哪个region里边的,这叫原数据信息对不对?这个文件信息呢,是存我当前这个h fair是在HDMS哪个路径的,它都不一样,对不对?然后数据索引指的是我想要找这个数据里面哪一条KV的建筑,对它的索引位置在哪啊,这是数据索引,后面呢,还有一个原数据索引哈,指的是这个原数据的再进行一个记录啊,它还是一环套一环的啊,查找的时候呢,分多级目录,你会更方便点,最终呢,还有一个固定长度的尾部信息,尾部信息呢,一般是记录version版本啊,我们写代码也会记录一个version版本,对不对?哎,一样的啊,一样写框架写版本,它它同样会记录一个当前文件的一个版本,这个版本是非常有意义的,如果你这个版本呢,这次读跟下次读它号是一样的,哎,他就知道了,你这个版本的你这个数据啊,文件数据。
02:00
没有发生过变化,哎,那上次读过的结论呢,就可以直接拿来用了啊,是来记录相关这些信息的,好再往下呢,我们着重关心的是这个数据本身KV建对这个KV建筑对呢,会按照块大小,这个块指的是我们h fair的块,这个块的数据呢叫block size在哪呢?在region的信,呃,Region就那个呃里面那个列足的对应的信息里面是有的啊,你DEC一个表格的时候呢,能够看到啊,对应的这个块大小,它默认的是64K啊,一块一块一块是64K,存储在文件当中,那同时这个数据的,所以就是它。是按照这一块一块64K的文件进行创建的啊,它只记录当前这64K一块文件,它的索引是什么样的啊,那这个索引呢,就包含有开始的K,结束的K之类的,就这一块数据嘛,64K开始的K,结束的K里面大致是什么内容会记录一下啊,那相对应呢,你的块越多,所以呢,也就越大啊,也就越大,好每一个h fair呢,就每一个文件还会维护一个布隆过滤器啊,什么叫布隆过滤器呢?可以把它当做一个很大的地图啊,那以前呢,大家喜欢出去旅游对吧?哎,出去旅游的时候呢,你到了哪个地方会标记一下啊,我到此一游对吧?那这个是一样的,它这个h fairr也维持这么一个地图,哪一个ROK,它是以K来进行记录的,哪一个ROK来到这个文件里面了,写入到这个文件里面了,就在那个对应的位置上打一个勾表示呢,当前文件有这么一个K啊,就是这个意思啊,就这个意思啊,它只能判断大致的一个位置啊,只能判断大致的位置,为什么呢?因为他要走哈西。
03:41
它要经过哈希算法,那哈希算法呢,就会存在哈希碰撞啊,可能呢,你记住的这个K啊,是1001的啊,但是1001呢跟8008。它们的哈希值是一样的,那如果它俩哈希值一样的话,那记录在布隆过滤器里面的那个位置啊,画勾的地方那就是一样的啊,会出现碰撞的一种情况,所以呢,它是一个大致判断啊,对应读取的时候大致判断啊。
04:09
这道它对应的一个布隆过滤器,那存储的内容呢,大概就这么多,咱们一点点来看,首先呢,我们来看KV的一个内容啊,那存储里面KV的内容呢,包含有K的长度,K的值,列足的长度,列足的名称,列名,时间戳以及类型啊,那个file对应的一个类型,对吧?Port delete啊,当然没有get get不是一个cell对吧?有port有delete啊好,存储KV的一个内容啊呃,然后底层呢,这个h fair是经过序列化的,没有办法直接查看,哎,但是呢,H base提供了命令,能够让我们查看这个h fair的原数据内容,哎,其实啊,我们查看数据内容足够了啊,足够了,一般一个HC有多大呢?保底也是128兆啊,你在一个高效率使用的时候,对吧?刚学完刷写流程,后面呢,这个文件还会合并,这文件合并起来啊,保底呢,最大能达到十个G啊,能达到十个G,它这个数据量是非常大的,你不可能把整个十个G的数据全看完,我们只看它的。
05:09
原数据内容,这个原数据内容的命令呢,叫h base h fair,二杠F-F啊,你给它输全了就可以了,那这个文件在哪儿呢?文件在我们的HD上面。好,我们回退到HDS根目录,首先你选择的是h base,这个h base呢是你写在配置文件里面,H base的根目录,在h base里面选择date date里面是对应的列,呃,这个是命名空间的名称啊,我们选择big data对吧?在下面的是表明student,在下面这个地方是region的ID啊,Region ID呢比较奇怪对吧?是程序啊,这个框架自己使用的,我们很少直接去用,所以它名字比较奇怪,你点进去之后,这是列族的名称,列族名称再点进去,这就是一个store了,这里面所有的文件都是store fair也可以叫h fair,一个意思啊,那我们需要的命令呢,就是对应的。
06:01
Fair-M-F,我们给它复制一下,在这边粘贴对吧,后面拼接整个文件的一个名称,看到没有路径都给你写上了,咱们对应的来拼接一下,来看一下。好,这边CTRLC给它粘过来,这是我们的路径名称,在下面再拼接文件的名称,CTRLC在这边呢杠,然后粘贴,然后执行。好登经过它的加载呢,它就给我们打印出了所有的原数据信息啊,你只要能看懂这个,那基本上h base的文件存储啊,就被你看透了啊,咱们往上来一点一点看啊,首先呢,最上面他会给你介绍这个文件有没有压缩啊,没有啊,这文件缓存的情况咋样啊,还没有进行缓存的,咱们没读过对吧,他不会有对那个缓存,然后呢,比较主要的信息啊,叫first k last k记录了这个文件RK的一个范围,它在记录入K范围的时候呢,是以一个一个cell来进行记录的,最开始的cell,结束的时候cell,它的cell里面有1001~1004,说明这个文件啊,它的OK范围就是1001~1004,对吧?好,底下呢,还会有啊,每一个平均K的长度,平均value的长度大致的一个范围都会有,对吧,最上面呢,还会有一个信息叫block index,这叫块索引,就是我们说的那个索引信息,索引信息的大小呢,如果放到堆里面,大概是320啊320,这是320个字节,好,它非常的小。
07:26
对不对,咱们的数据啊,实在是太少了啊,它所以呢非常的少啊好底下呢,还会有一些别的信息啊呃,这个呢是什么伪信息对吧?啊再往下呢,有这个啊伪信息里面有这个版本对吧?啊咱们对应说的在下面呢,有过滤信息,这就是我们说的那个布隆过滤器,看到了吧?啊布隆过滤器啊,它会在里面有一个记录,这个布隆过滤器呢,会大概记录一下啊哪些这个K呢,在这个文件里面啊,100110021003对吧?好,这还有什么中间的K啊,记录一个中位数对吧?啊最后呢,有一个布隆过滤器啊大致的一个内容啊,这是它所有的一个原数据啊,所有的一个原数据,那基本上你把这个给看完了啊,那整个的我们这个h fair2的一个结构啊,哎,也就被你了解了,当我们了解完h fair2的结构之后呢,接下来我们就可以去看完整的读流程了。
我来说两句