- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HBase分布式存储系统应用(第二版)课件
智慧交通概述HBase分布式存储系统第1章 HBase介绍第2章 HBase模型和系统架构第3章 HBase数据读写流程第4章 HBase环境搭建第5章 HBase Shell第6章HBase程序开发第7章HBase高级特性第8章 MapReduce On HBase目 录第2章 HBase模型和系统架构教学内容2.1 HBase的相关概念2.2 HBase的逻辑模型2.3 HBase的物理模型2.4 HBase的特点2.5 HBase的系统架构教学目标掌握HBase相关概念;掌握HBase工作特点;掌握HBase架构体系第2章 HBase模型和系统架构2007年2月HBase初始化原型在Hadoop项目中创建,2007年10月在Hadoop 0.15.0中发布了第一个“可用”版本的HBase;2008年1月HBase成为Hadoop的子项目;2014年2月HBase 0.98.0发布;2015年2月HBase 1.0.0发布;截止到2017年12月31日,Apache HBase的最新版本为1.4.0。本章将从HBase的相关概念、逻辑模型、物理模型、特点、系统架构等方面进行讲解。2.1 HBase的相关概念 HBase的数据模型也是由一张张的表组成,每一张表里也有数据行和列,但是在HBase数据库中的行和列又和关系型数据库的稍有不同。下面统一介绍HBase数据模型中一些名词的概念。1.Table(表)HBase会将数据组织进一张张的表里面,但需要注意的是表名必须是能用在文件路径里的合法名字,因为HBase的表是映射成HDFS上面的文件。一个HBase表由多行组成。2.1 HBase的相关概念 2.Row(行)在表里面,每一行代表着一个数据对象,每一行都是以一个行键(Row Key)来进行唯一标识的。HBase中的行里面包含一个Key和一个或者多个包含值的列。行键并没有什么特定的数据类型,以二进制的字节来存储。Row Key只能由一个字段组成而不能由多个字段组合组成,HBase对所有行按照Row Key升序排序,在设计Row Key时将经常一起读取的行放到一起。因为这个原因,Row Key的设计就显得非常重要。数据的存储目标是相近的数据存储到一起,一种常用的行的Key的格式是网站域名。如果行的Key是域名,应该将域名进行反转(org.apache.www、org.apache.mail、org.apache.jira)再存储。这样的话,所有apache域名将会存储在一起,好过基于子域名的首字母分散在各处。2.1 HBase的相关概念 与NoSQL数据库一样,Row Key是用来检索记录的主键。访问HBase表中的行只有三种方式:通过单个Row Key访问、通过Row Key的Range、全表扫描。Row Key可以是任意字符串(最大长度是64KB,实际应用中长度一般为10B~100B),在HBase内部,Row Key保存为字节数组。注意:HBase中对Row Key采用了MD5加密处理,而Row Key是唯一索引,对索引加密之后如何进行查询?实际使用中用作索引的数值可能是有规律递增的,直接用这个作Row Key会使得新插入的大量数据很有可能被插入到同一个Region上,而其他Region空闲,这样读和写都产生了热点,影响读写效率。对Row Key使用MD5或者其他Hash做散列之后再和原来的Row Key组合作为实际的Row Key,这样在持续产生数据的时候Row Key会被散列到不同的Region上,有效避免了热点问题,可见HBase使用MD5并不是为了加密。2.1 HBase的相关概念 3.Column(列)HBase中的列包含分隔开的列族和列的限定符。4.Column Family(列族)列族包含一个或者多个相关列,列族是表的Schema(表模式)的一部分,必须在使用表之前定义。HBase表中的每个列都归属于某个列族,列都以列族作为前缀,如anchor:name、anchor:tel都属于anchor这个列族。每一个列族都拥有一系列的存储属性,例如值是否缓存在内存中、数据是否要压缩或者它的行Key是否要加密等。表格中的每一行拥有相同的列族,尽管一个给定的行可能没有存储任何数据在一个给定的列族中。每个列族中可以存放很多列,每个列族中的列数量可以不同,每行都可以动态地增加和减少列。列是不需要静态定义的,HBase对列数没有限制,可以达到上百万个,但是列族的个数有限制,通常只有几个。在具体实现上,一张表的不同列族是分开独立存放的。HBase的访问控制、磁盘和内存的使用统计等都是在列族层面进行的。2.1 HBase的相关概念 3.Column(列)HBase中的列包含分隔开的列族和列的限定符。4.Col
文档评论(0)