粉丝3.2万获赞66.8万

那我们开始继续讲解这个下个技术,就是 hbase 啊,大数据当中的常用的一个啊,相关的分布式啊,数据存储。咱们学哈杜克的时候啊,啊,知道哈杜克是模拟谁啊?模拟谷歌,谷歌有三架马车什么了,一个是叫他们,咱们叫 hdrs, 他们在 啊,谷歌上面是不是叫什么呀? d f s 是吧?然后呢,谷歌还有一个什么 map reduce, 还有一个数据存储 big deck 啊, big deed。 那在这个开源的哈杜博上啊,它呢,对应参加马车是 h d f s 是不是?然后呢,也是 map m 二 m f reduce, 但是谁作为他的 big dick 的一个什么呢?这是谷歌的,是叫 big table 啊,然后呢,在哈杜甫上用 h base 来替代谷歌的啊, big table, 那所以说这个 h base 啊,其实是个 数据库,那这数据库呢,就是为了存储数据而用的。那我们先看一下今天讲解的第一张哎, hbs 一个简介。先说 hbs 是什么? hbs 啊,首先是个分布式,可扩展, 哎,这两句话比较重要,分布式的,咱们学的哈 top 这些所有的组件是不是都是支持分布式啊,而且可扩展,支持海量的数据存储的啊,也就是说他对数据存储存储量非常大,可以是 tb 或者是 gb, 哎呀,或者是更大的 pb 级别的数据。然后呢, 最主要后面有句话叫 no soco 数据库,什么意思呢? h 分布式可扩展,海量 no soco 数据库,这个 no soco 啊,有同学会理解成是不没有 soco 语句啊,不是 no soco 数据库称为叫,不仅仅是有 no 呢,是 note, olin 什么呢? soco 语句不仅仅包含 soco 语句,所以说它是一个什么呢? 分布式的数据库存储是这样的,它解决哪些问题呢?还记得咱们学 h d f s 的时候, h d f s 呀,它有有一些特点,它呢,可以进行大数据量的一个文件存储,是吧?然后呢,也支持分布式,也支持它的什么读和写, 但是有一点 h d f s 最主致命的缺点,啥?不支持,哎,常见的修作就什么呢?修改数据他怎么样?不是不支持,他对这些修改数据也好, 他怎么样呢?知识性比较差,因为啊, hdfs 是在大文件分布式存储,他主要是进行读和写的这么一个操作修改呢,他一般呢?哎,这个是他这个一个叫什么呢?弊端或者是劣势。那么我的 h bass 就是来解决你的什么呢?哎,修改实时性的,哎,修改和删除也对,数据的这些操作还有一个点, h bass 最终的数据要落在谁上面存储呢?哎,他是落在 hdfs 上, 他俩的关系啊,是这样的,我的数据存储在 hdm, 但是呢,我是以可以弥补你一些劣势上,我的,我的优势是什么呢?可以增,可以做实时的一些修改或者增长改查,是,这是他的优势。好,这是 hbs 的一个基本的一个概念。那好,第二个,哎,这辈子的数据模型是什么样的? 在逻辑上啊,他和关系型数据库很相似,咱们学关系型数据库的时候是不是一个二维表啊?也就说你存储数据的时候就是以一张二维表来存储的吧。在我的什么呢?哎,逻, 逻辑上,那 h 贝斯啊,逻辑上也是说我们。什么叫逻辑啊?逻辑的理解就是说我在哎长针理解,他是什么样的一个结构,也就是在我们那个什么呢?正常的理解,他也是一张二维表,有行哎也有列哎,有行也有列, 但是呢,它底层物理结构,它并不是这么存储的,物理结构实实在在存储在数据库当中啊,它是一个啥存储呢?是以 k v 来进行存储,这个 k 呢就相当于 k 值, v 呢是它的 y 流值,但是这个 k 啊,并不是一个哎简单的数据类型,它呢比较复杂, 后续呢咱们再去说,那在对于 hpc 来说呢,更像一个多维度的一个脉搏集合,咱们学扎瓦的时候,脉搏集合不就是个 k 和 v 吗?那他也是这样, k v 好,这是基本的一个简单理解。我们首先呢还是打开什么呢? 官网去看一下 hbase, 然后呢搜一下官网,打开官网之后啊, hbase, hbase 啊,这个一嗯哦,阿尔吉,阿帕吉,阿帕吉,哎什么呢?官网好,先打开官网,首先呢他也是阿帕吉的一个开源项目,这里边呢我们跟你简单翻译一下,在这块 这句话就是说明了他的一些作用和他的基本的一些哎理论。来大家翻一下 说说,当您需要大对大数据进行随机实时的读几个访问一般就可以,请使用谁了?哈杜 pah ba, 不是哈杜阿帕奇 h base, 因为咱们说 hdris 是不支持什么呢?实时的读写的,它解决的是哎 hdf 的一些缺点。好,然后说该项目的目标是在商用集群,然后呢托管数 一行的差啊什么呢?差数百万列,这句话比较重要,我们现在使用的关形数据库,咱们比如说拿 mysoco 来说, olco 来说,哎,或者是咱们常见的 soco, sorry 这几类数据库,你要是说如果存储了,哎,数百亿行的这些数据的时候, 哎,上一行的数据,你去操作数据库的时候,他肯定会非常慢的。那对于 hbase 来说呢,他怎么样非常轻松,这是一点,还有一点什么呢?最主要他说可以支持啊,多少列啊,数百万列的数据, 咱们现在建一个关形数据库时候,你见过有上百万列的数据的这么一个表吗?没有,他呢可以说是个开源的分布式啊,版本化的非关形数据库啊,模仿就是啊, big table, 我们说了, 它主要是解决啊,谷歌的三架马车对应的 big table 这么一个啊,等等等。好,那这样的话呢,我们就可以怎么样呢?把这个按它的作用,而且呢,它是什么?说 hbase 啊,在哈杜 h 之间提供了类似的 big table, 等等,它最终存储在谁呀? hdivis, 等会咱们再去说,嘿,还有一些其他的。 然后呢,这块呢,有个点击下载,我们到时候呢,哎,可点击此处进行一个相关的下载。现在他的版本号啊,有个三点零啊,这是测试版啊,这现在也没发明啊。然后呢,现在一般稳定版呢,都是二点四的这个版本, 那如果想下载一些老版本呢,在下边说了说,如果你寻找此处镜像不存在的旧版本查看啊,这个阿巴奇存款文档,那这里边都是他的相应的版本号,哎,这里边就有了,比如说现在二点四点九,二点四点八啊,二点四点什么什么什么其他 二点四点幺零等等等,哎,这里边都是发行的不同的时间啊。啊,行,我们先给他基本的啊理论先说到这,那好,我们先重点研究他的逻辑结构,为什么说逻辑结构是一个关系表物理结构存储的,哎,又像一个可以卖他,我们把这个好好理解一下, 然后呢再跟他对比一下 hdiys, 他到底跟 hf 怎么配合。首先呢,看一下这个表啊,给他怎么能放大一下呢?缩放,我给你稍微放大一点啊,一百五,这样的话能看清了。首先呢,我们从逻辑结构存储的手法跟普通的二维表格是一样,他也有什么呀?这么看 在这,这是不是一行一行的?所以说载逻辑结构也是按行来存储。然后呢,也有这么一列一列吧,哎,也有这一列一列啊,这是一列一列。好,那这是说载逻辑结构是这, 但是呢,他还有几个相关更细分的概念上,我们看上看上面这个表头,哎,这个类似是不是叫表头啊?我们看这个表头呢,发现他跟我们关系型二维表格还有点不太一样。关系数据库啊,就是下边这一段是 跟二维表格是一模一样的,有列列,哎,然后呢有行行是这样的,但是呢它上面又多了一个类似于表头像,我们做一个撒入式,上面有很多表头上,是吧,那这个相当于类似于这个表格啊,哎,比较复杂一点,那怎么去区分呢?是这样的, 他把呀,他最主要的,首先说这是列,比如说有个内蒙啊,这叫列名,然后呢再往上呢,这里边有多个列,你发现这三个组成一个列,那这三个列呢?哎,表示的姓名, 住址啊,叫城市,然后电话,然后他也许是属于个人信息,那上面这个叫什么呢?列足 给他分成叫列族,好,这叫列族,然后这边呢?还有哎,也有电话,也有住址,那这些呢?是办公用的,那起了个叫办公的一个列族,叫办公的 info, office, info 啊,这是个人信息,这是什么呢?办公信息。好,那这样的话,通过这个一区别,我们又发现他又像什么呀? 把这一段拿出来又像一个单独的表,把这个拿出来又像个单独的表,那我们在关行数据库设计的时候,是不是,哎,这个相当于是一个表里边存了三个字段,这个就是一个表存三个字段, 哎,存了两个字段,是不是又像一个单独的表?所以说呢,他整个是这样的一个区分,区分就是什么呢?先有列足,列足里边,哎,可以有多个列,哎,多个列, 这个列组里面哎,也有多个列,多个列。好,那我们创建一个 hbs 表的时候啊,最主要的第一步,先有列组,可以有列组,先没有列,然后这个列呢?还跟 关系数库不太一样。关系数库是创建一个表的时候,先定义表结构,比如说创建个哎 usb 表, uc 表包含成包含什么字段呢?比如说哎,包含一个主界 id, 又包含哎用户名啊,内幕啊,又包含密码, password, 又包含一些什么其他信息等等等。是先把结构定义好,我怎么办呢?再去创建表,那对于 hbs 不是这样,我创建的时候就先定义好列足,就可以里边的列,也许我开始没设计好,那我随着我的业务增多,或者是业务的需要,我可以动态的去增加他相关的列,哎,这一点是谁不具备的?关系是不不具备的, 那在 hbase 当中它具备什么呢?列的动态增加,然后你可以这么去看,把一个列族就可以看作是关形数据库的一个表,哎,一个列族是不就像一个关形数的表?好, 然后对于再往下行来说呢?一行,哎,这一行一行数据里边就存了这么多,哎,每一列的信息,每一列,每一列,但是也有一个主界,你发现有个叫 ok, 这是他的主界, 用主件来区分每一条数据,像我们做关系数一样,他有个主件,用主件能查,进行精确的一个查询。好,这也是一个主件,那咱们再看主件这一列, ok, 这里边还有一个稍微跟关系数会不一样。这个 rook 啊,是怎么样呢?是 h base 自动创建的,我们去 使用的时候,那必须给个 ok 值就可以了。 ok, 这个值呢,是唯一性的,你不能说,哎,在这里边多行有同一个 k 值,他是唯一性就可以,然后呢?他是主动创建,还有再往下,再往下什么呢?你看这是 ok, 他有点类似于什么,大家看看 是不是类似于有序啊?哎,是不是有序啊?那他对肉 k 其实是有序的,那这个顺,这个有序,他怎么按照什么去排序呢?但看这一块又像无序的,哎,这一部分是吧?他其实是有序的, 这个有序啊,排序的时候是以字典的顺序进行排序,我们看一下是不是以字典顺序排序了。 ok, 一幺幺,哎,同一个位置相同在一起,然后再看第二位,第二位不同的再怎么样,哎,那再往 下走,所以说呢,他是以字典顺序进行一个排序, ok, 而且这个 ok 呢,记住不用咱们自己创建,他给咱们已经创建了,但是我们一定要给 ok 给负值,负值的时候呢,一定是唯一就可以了。好,这是 ok 的一个解释。然后呢再啊,嗯,横着看, 横着看啊,再横着看啊,横着看呢,是这样的,还有一个概念,这块写了一个叫 region。 region 是啥意思啊?分区,哎,这叫分区,我们可以啊,有人给他叫称为分区,或者有人给他称为叫分块 啊,块信息,那它是干什么用的呢?是这样,咱们说了 h base 可以存储,叫什么呢?哎, g b t b 上 p b 级别的数据,你的数据量非常大了, 如果我只在一块地方去做存储的时候,那他能完成分布式吗?咱们说了他不支持分布式吗?那他怎么支持分布式呢?你的数据量假如说达定达到了一定的阀值,我怎么办呢?我给你拆分成 re 针呢? 那这样的话,是不是我在因为它底层最终存储到什么地方? hdrs, 是吧?那我就怎么样呢?可以把一个 a, 比如说你要是说存 et 的时候,你整个这个表 没做拆分就一 t, 那你操作是不是很麻烦呢?那如果我给你能拆分成如意针,拆成更小的一小部分,然后我是不是就可以怎么样了?分布的存储到 hdrs 上 是这样的一个功能,也就数据量达到一定的程,也就是行啊,这是二行在横向啊,横向是行,看行数达到一定量的值, 我就给你拆分成一个 region, 然后呢进行一个存储,这样的话是不对,它操作就更小一点, 什么意思?那比如说这个锐志呢?假如说就我我拆分大小假说,以一百行为例,那我在这一百行里做增长改查是不很快啊?那如果像关心数据库,你一张表不做拆分的时候,咱们一般在关心数一张表就是一张表,是吧?那这张表纯属到了一亿行数据的时候,你对他操作能快吗?肯定不快, 但是在管行之后也没有分区啊,也没有那个分的什么呢?也有这些功能,也有这些概念啊,大家可以去研究一下。 那好,这是横着看,说达到一定量的时候,我们记住它会分成个 region。 好,再竖着看,我再给大家竖着看一眼。竖着看呢,刚才咱们说了,一个列足相当于一个表,对不对?好,那多个 列足,他是不是会又给你分成,哎?多个部分呢?是这样,是这么一个意思吧?什么意思呢?咱们这么看一部分啊,这块是一个列足,这块是一个列足,那这个列足,哎, 这是一部分,这个列足,哎,又是一部分,对吧?那每个列足啊,他按照列足又可以分成一小部分。一小部分啊,这里现在分成三个锐针,是不是啊?你这一,你看一个空格,横向啊, 就是按行去看的时候,这是分成了三个小空格,这三个小空格就相当于分成了三个 re 针,然后呢在在列上呢,哎,每个 re 针又按照列足去分,那这个列足一分,这个叫什么呢?诶? story, 以这个 story 为单位去做存储,哎,它的存储又进行了个拆分,哎,拆分成一个 story, 那 story 是啥?就是以文件的形式遵存出它最终 中存储到什么地方呢?就是咱们 hdfs 上了,然后大家可以在这里思考一个问题,咱们说 hdfs 不支持随时实时的什么呢?修改啊,读写啊,啊,这叫什么?不是读写啊,修改这些操作, 那么 hbase 他是又依赖于谁呀? hdfs 最终因为他的数据还是在 hdfs 中存储,大家是不是有个疑问?什么疑问呢? 那他怎么就能支持这个叫实时的一个什么呢?修改啊,草,数据的操作呢?他呢,其实啊是给做了一些,哎,优化处理, 这个呢,咱们会,咱们后边讲原理的时候你就知道了,他呢,其实也不是说真正的实时的,完成了什么呢?哎,修改数据他只是跟我们做了一些优化啊,等会去研究,先把这问题留在这。好,那 这样的话,我们把逻辑结构简单分一下。逻辑结构就怎么分呢?首先它是创建个表,要有列足啊,多个列足,然后每个列足呢,又可以创建多个列,哎,多个列,然后在行上呢,一行的数据是有个周 k 作为它的建值,然后在你的行数多了,就分成什么 a region, 然后再往下就什么了,你看列的时候啊,一个锐针又分为什么呢?哎,多个 story 怎么分的呢?是按照列族,类似于,哎,一部分就是一个 story, 一部分就是个 story 啊,这是逻辑结构。

h base 的关键流程,首先我们介绍了用户读写数据的过程,当一个用户呢要向 hbase 中写数据的时候,用户呢是首先呢访问祝 cap 找到了他要写入的锐境, 然后呢查找到相应的服务器呢,去执行写用户数数据呢,首先会被写到 h 诺克中,写到诺 h 诺克中得到返得到一个呢返回值之后呢?然后呢再写不到 mate 十多种, 只有当写入到 hrog 之后了, come 调用了,才会返回给客户端,代表着了一个事物的完成。当用户呢读取数据时,瑞金服务器呢,会首先访问了 mate store 完成,如果 在模特的时代中呢,找不到,再去了磁盘上找相应的了 store five 我们看一看呢,时代是如何呢?刷新缓存的,那系统呢?会周记性的把 mace 托缓存,你的内容呢,写到词盘的时代 fi 中, 并且清空缓存呢,并在 h log 中写入一个了标记,那每次呢刷血都会生成一个十多发,因此呢, 对于我们每一个是舵中,他的是多发呢,会逐渐增多。那每个 h v 金社府呢,都有一个自己的 h log 文件,大家要注意, 那一个 h 瑞金生活中呢,他包含很多个瑞金,并且这些瑞金呢,他们都是共用一个 h 六个文件的,那每次启动之后呢,我们都要去检查一下该文件,那确认呢? 最近一次执行这个刷新缓存操作之后呢,是否有客户端在刷新的?刷新的时候呢,去往这个 h logo 里面呢,去写数据是吧?这个写数据呢,是我们的一个先写机制所决定的。 那如果说发现了这个 h lug 有写物更新,那么我们先把这个呢更新呢,先把它写到慢慢使妥中,再呢刷写到十多份,最后呢开始为用户呢提供服务,随着呢数据不断的增多, 那么呢在月经服务期中呢是多少呢?是多少呢?会不断的增加数量,太多呢会影响呢用户呢查找的速度,因此呢我们需要呢把十多快合并成了一个大的 多犯,合并操作了比较耗费资源,只有了当达到一个预值了,我们才能启动合并。 下面呢介绍十多工作原理。十多呢是瑞金服务器的核心,那多个十多块呢会合并成一个,当个十多块过大时候呢,又会了处分的分裂操作,一个负瑞金呢会分成两个瑞金, 如图所示,这里面呢有四个十多范,那通过和平呢可以得到一个两百五十六兆的十多范, 用两百五十六兆的十多法呢,进一步呢又可以去分裂成呢两个一百二十八兆的十多法,通过这个过程呢可以减少十多法的数量,来提高了用户的查询效率。下面 介绍 h 诺给的工作原理,在分布式的环境下呢,我们必须要考虑呢系统出错, h 贝斯呢采用 h 诺给了保证系统恢复,朱 k 婆呢会实时的监听瑞金社会了心跳,当一个瑞金社会呢发生故障之后呢,猪 k 婆就会通知了 h max, h max 的,这时候呢首先会处理问题,瑞金社会上引流的了 h 诺格文件, 他会来根据瑞金和瑞金书,瑞金中的记录和 h 洛克中的对应关系了,对 h 洛克文件呢进行拆分,并且呢把 h 洛格了 放到相应的了瑞金的目录下,瑞金服务期呢,领取到相应的瑞金以及 h 诺克之后呢,会把 h 诺克中的数据操作重新做一遍,然后呢写入到 moner 多缓存,最后呢刷新到十多范, 我们从这个过程中呢,可以看到采用这种公用的二字的好处是读写效率高,那他的缺点呢?是当。

