二零二三年 优质公开课Hbase性能优化.pptx

二零二三年 优质公开课Hbase性能优化.pptx

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HBase 性能优化;;;行键设计 高表与宽表的选择 分页 高级模式 辅助索引 搜索继承 事务 布隆过滤器 版本管理;行键设计 按行键排序,按列族存储 空值不存储(稀疏表) ;高表与宽表的选择 宽表是指很多列较少行,即列多行少的表,一行中的数据量较大,行数少; 高表是指很多行较少列,即行多列少,一行中的数据量较少,行数大。 HBase的row key是分布式的索引,也是分片的依据。 row key + column family + column qualifier + timestamp + value 是HFile中数据排列依据。 HFile对数据的索引到data block级别,而不是行级别。 row key是HFile内部的粗粒度(data block粒度)本地索引的主键。 ;在HBase中使用宽表、高表的优劣如下: 查询性能:高表更好,查询条件都在row key中, 是全局分布式索引的一部分。 分片能力:高表分片粒度更细,各个分片的大小更均衡。 元数据开销:高表元数据开销更大。 事务能力:宽表事务性更好。 数据压缩比:对一行内的数据进行压缩,宽表能获得更高的压缩比。 ;分页 offset和limit结合 具体步骤: 在起始键的位置处打开一个扫描器。 跳过offset数目的行。 读取limit数目的行,并返回给上层应用。 关闭扫描 ;高级模式——跨语言的IDL(interface definition language) 为用户提供一种可以定义初始模式的语言,然后用户可以通过增加或者删除字段来更新这个模式。序列化API能够使用新模式来读取旧模式,缺失的字段被忽略或者用默认值来填充。 Avro:HAvroBase是一个使用Avro在每列中存储复杂记录的典型项目。它使用Avro的接口定义语言(IDL)来定义实际的模式。这个模式被用于在表的任意列中存储Avro形式序列化的记录。 Protocal buffers:用户可以用Protocol Buffers的IDL来定义一个外部模式,这个模式被用来序列化复杂的数据结构到HBase中。 ;辅助索引 尽管HBase没有为辅助索引提供原生支持,但是有些应用场景仍需要使用辅助索引。 辅助索引存储了一个新坐标和现有的坐标之间的映射关系。;辅助索引——方案1 把任务完全转移到应用层的典型做法是一个数据表和一个(或者多个)查找/映射表结合起来。每当程序写数据表时,它也同时更新映射表(也被成为辅助索引表)。读数据时可以直接在主表中进行查询,从辅助索引表中先查找原表的行键,再在原表中读取数据。 优点:整个逻辑代码都是由客户端处理,用户可以按照需求设计映射关系。 缺点:HBase不能保障跨行操作原子性;缺少事物支持可能导致数据被存储在数据表中,但是在辅助索引表中没有相应映射。;辅助索引——方案2 大多数客户端和服务端的类都被添加了索引支持功能的类替换掉了。客户端管理索引在单独表中存储主键和辅助键之间的映射关系,与之不同的是,这些操作在ITHBase中被处理,同时主表与辅助索引表之间的关系由相应的描述符(descriper)定义。结合事物支持的索引更新,这个方案提供了HBase辅助索引的完全实现。 缺点:不支持最新HBase版本;增加了同步开销,导致性能下滑;;搜索继承 使用任意关键字来搜索数据,需要集成一个完整的搜索引擎。 常见的做法是基于 Apache Lucene 的解决方案,例如 Lucene或者Solr或者ES等。 FackBook的解决方案是,收件箱搜索系统(Facebook inbox search) 每一行是一个单独的收件箱,即每个用户在搜索表中都有一个单独的行 列是消息中被索引的词语 版本是消息ID 值包括附加信息,例如,词组在文件中的位置 ;事务 事务型HBase 带索引的事务型HBase(Indexed Transactional HBase)项目有一些取代默认客户端类和服务端类的拓展类,它们增加了跨行甚至跨表的事务支持。在region服务中,更准确的说,每个region都保持了一个事务列表。该列表是由beginTransaction()调用初始化,并且由相应的commit()调用结束。每次读写操作都有一个事务ID,以保护调用不受其他调用的影响。 ;事务 Zookeeper HBase运行时需要一个Zookeeper集群,它在集群的启动中扮演着种子或引导启动的角色 Zookeeper提供了一个能够被用于实现两阶段提交协议的锁的方案。它使用一个特定的znode来代表事务,并且每个参与客户端对应一个孩子znode。客户端可以使用自己的znode标志自己在事务中的那部分是成功还是失败的。其他客户端可以监控同级的znode,并采适当的行动。 ;布隆过滤器 布隆过滤器通过一个很长的二进

您可能关注的文档

文档评论(0)

胡老师K12教育坊 + 关注
实名认证
内容提供者

从业20余年,中学高级教师,擅长公开课PPT制作等。

1亿VIP精品文档

相关文档