1、第第9 9讲讲 分布式开源数据库分布式开源数据库HBASEHBASE Hadoop家族家族 Pig Zookeeper Hbase Hive Sqoop Avro Chukwa Cassandra pig Hadoop客客户户端端 使用使用类类似于似于SQL的面向的面向数据流的数据流的语语言言Pig Latin Pig Latin可以完成排序,可以完成排序,过滤过滤,求和,聚,求和,聚组组,关,关联联等操作,可以支持自定等操作,可以支持自定义义函数函数 Pig自自动动把把Pig Latin映射映射为为Map-Reduce作作业业上上传传到集群运行,减少用到集群运行,减少用户编户编写写Java程
2、序的苦程序的苦恼恼 三种运行方式:三种运行方式:Grunt shell,脚本方式,嵌入式,脚本方式,嵌入式 Hive数据数据仓库仓库工具。可以工具。可以把把Hadoop下的原始下的原始结结构化数据构化数据变变成成Hive中的中的表表 支持一种与支持一种与SQL几乎几乎完全相同的完全相同的语语言言HiveQL。除了不支持。除了不支持更新、索引和事更新、索引和事务务,几,几乎乎SQL的其它特征都能的其它特征都能支持支持 可以看成是从可以看成是从SQL到到Map-Reduce的映射器的映射器 提供提供shell、JDBC/ODBC、Thrift、Web等接口等接口 Hbase Google Bigt
3、able的开源实的开源实现现 列式数据库列式数据库 可集群化可集群化 可以使用可以使用shell、web、api等多种方式访问等多种方式访问 适合高读写(适合高读写(insert)的场)的场景景 HQL查询语言查询语言 NoSQL的典型代表产品的典型代表产品 Hbase简简介介 HBaseHBase是一个分布式的、面向列的开源数据库,该技术来是一个分布式的、面向列的开源数据库,该技术来源于源于Chang et alChang et al所撰写的所撰写的GoogleGoogle论文论文“BigtableBigtable:一个结:一个结构化数据的分布式存储系统构化数据的分布式存储系统”。就像就像B
4、igtableBigtable利用了利用了GoogleGoogle文件系统(文件系统(File SystemFile System)所)所提供的分布式数据存储一样,提供的分布式数据存储一样,HBaseHBase在在HadoopHadoop之上提供了类之上提供了类似于似于BigtableBigtable的能力。的能力。HBaseHBase是是ApacheApache的的Hadoop Hadoop 项目的子项目。项目的子项目。HBaseHBase不同于一般的关系数据库不同于一般的关系数据库,它是一个适合于非结构它是一个适合于非结构化数据存储的数据库化数据存储的数据库.另一个不同的是另一个不同的是H
5、BaseHBase基于列的而不基于列的而不是基于行的模式是基于行的模式 Hbase的数据管理HbaseHbase是一个分布式的、面向列的开源数据库。不是一个分布式的、面向列的开源数据库。不同于一般的关系数据库,是一个适合于非结构化数同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。据存储的数据库。HbaseHbase是基于列的而不是基于行的模式。是基于列的而不是基于行的模式。HbaseHbase是一个稀疏的、长期存储的、多维度的排序是一个稀疏的、长期存储的、多维度的排序映射表,在这张表中包括了映射表,在这张表中包括了行关键字、列关键字和行关键字、列关键字和时间戳。每个值是一个字符数组
6、,数据都是字符串,时间戳。每个值是一个字符数组,数据都是字符串,没有类型。没有类型。HbaseHbase中表的特点:中表的特点:大:一个表可以有上亿行、上百万列大:一个表可以有上亿行、上百万列面向列:面向列(族)的存储和权限控制,列(族)面向列:面向列(族)的存储和权限控制,列(族)独立检索。独立检索。稀疏:对于为空的列,并不占用存储空间。稀疏:对于为空的列,并不占用存储空间。Big Table的想法的想法 学生表的例子学生表的例子S(s#,sn,sd,sa)存放为关系的学生表存放为关系的学生表 以以bigtable方式存放学生表方式存放学生表 Bigtable:无所不包的大表无所不包的大表
7、Hbase逻辑逻辑模型模型 以表的形式存放数据以表的形式存放数据 表由行与列组成,每个列属于某个列族,由行和列确定的存储表由行与列组成,每个列属于某个列族,由行和列确定的存储单元称为元素单元称为元素 每个元素保存了同一份数据的多个版本,由时间戳来标识区分每个元素保存了同一份数据的多个版本,由时间戳来标识区分 行行键键 行键是数据行在表里的唯一标识,并作为检索记录的主键行键是数据行在表里的唯一标识,并作为检索记录的主键 访问表里的行只有三种方式访问表里的行只有三种方式 1 通过单个行键访问通过单个行键访问 2 给定行键的范围访问给定行键的范围访问 3 全表扫描全表扫描 行键可以是最大长度不超过行
8、键可以是最大长度不超过64KB的任意字符串,并按照字典序的任意字符串,并按照字典序存储存储 对于经常要一起读取的行,要对行键值精心设计,以便它们能放对于经常要一起读取的行,要对行键值精心设计,以便它们能放在一起存储在一起存储 列族与列列族与列 列表示列表示为为:Hbase在磁在磁盘盘上按照列族存上按照列族存储储数据,数据,这这种列式数据种列式数据库库的的设设计计非常适合于数据分析的情形非常适合于数据分析的情形 列族里的元素最好具有相同的列族里的元素最好具有相同的读读写方式(例如等写方式(例如等长长的字符的字符串),以提高性能串),以提高性能 时间时间戳戳 对应对应每次数据操作的每次数据操作的时
9、间时间,可由系,可由系统统自自动动生成,也可以由生成,也可以由用用户显户显式的式的赋值赋值 Hbase支持两种数据版本回收方式:支持两种数据版本回收方式:1 每个数据每个数据单单元,只存元,只存储储指定个数的最新版本指定个数的最新版本 2 保存指定保存指定时间长时间长度的版本(例如度的版本(例如7天)天)常常见见的客的客户户端端时间查询时间查询:“某个某个时时刻起的最新数据刻起的最新数据”或或“给给我我全部版本的数据全部版本的数据”元素由元素由 行行键键,列族,列族:限定符,限定符,时间时间戳唯一决定戳唯一决定 元素以字元素以字节码节码形式存放,没有形式存放,没有类类型之分型之分 Hbase物
10、理模型物理模型 Hmaster主服务器HBase每时每刻只有一个每时每刻只有一个Hmaster主服务器程序在运行,只主服务器程序在运行,只维护表和维护表和region的元数据。作用:的元数据。作用:为为Region server分配分配 Region负责负责Region server的负载均衡的负载均衡发现失效的发现失效的Region server并重新分配其上的并重新分配其上的Region GFS上的垃圾文件回收上的垃圾文件回收处理处理schema更新请求更新请求Region和和Region服务器服务器 表在行方向上,按照行键范围划分成若干的表在行方向上,按照行键范围划分成若干的Region
11、 每个表最初只有一个每个表最初只有一个region,当记录数增加到超过某个阈值时,当记录数增加到超过某个阈值时,开始分裂成两个开始分裂成两个regio Region是是HBase中分布式存储和负载均衡的最小单元。中分布式存储和负载均衡的最小单元。物理上所有数据存放在物理上所有数据存放在HDFS,由,由Region服务器提供服务器提供region的管理的管理 一台物理节点只能跑一个一台物理节点只能跑一个HRegionServer 一个一个Hregionserver可以管理多个可以管理多个Region实例实例 一个一个Region实例包括实例包括Hlog日志和存放数据的日志和存放数据的Store
12、Hmaster作为总控节点作为总控节点 Zookeeper负责调度负责调度 HLog 用于灾用于灾难难恢复恢复 预预写式日志,写式日志,记录记录所有更新操作,操作先所有更新操作,操作先记录进记录进日志,数日志,数据才会写入据才会写入-ROOT-和和.META.表表 HBase中有两张特殊的中有两张特殊的Table,-ROOT-和和.META.META.:记录了用户表的:记录了用户表的Region信息,信息,.META.可以有可以有多个多个regoin -ROOT-:记录了:记录了.META.表的表的Region信息,信息,-ROOT-只只有一个有一个region Zookeeper中记录了中记
13、录了-ROOT-表的表的location Memstore与与storefile 一个一个region由多个由多个store组成,每个组成,每个store包含一个列族的所包含一个列族的所有数据有数据 Store包括位于把内存的包括位于把内存的memstore和位于硬盘的和位于硬盘的storefile 写操作先写入写操作先写入memstore,当,当memstore中的数据量达到某中的数据量达到某个阈值,个阈值,Hregionserver会启动会启动flashcache进程写入进程写入storefile,每次写入形成单独一个,每次写入形成单独一个storefile 当当storefile文件的数
14、量增长到一定阈值后,系统会进行合并,文件的数量增长到一定阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的在合并过程中会进行版本合并和删除工作,形成更大的storefile 当当storefile大小超过一定阈值后,会把当前的大小超过一定阈值后,会把当前的region分割为分割为两个,并由两个,并由Hmaster分配到相应的分配到相应的region服务器,实现负服务器,实现负载均衡载均衡 客户端检索数据时,先在客户端检索数据时,先在memstore找,找不到再找找,找不到再找storefile 图解图解 Hbase vs Oracle 索引不同造成行为的差异索引不同造成行
15、为的差异 Hbase适合大量插入同时又有读的情况适合大量插入同时又有读的情况 Hbase的瓶颈是硬盘传输速度,的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道的瓶颈是硬盘寻道时间时间 Hbase很适合寻找按照时间排序很适合寻找按照时间排序top n的场景的场景 传统数据库的行式存储传统数据库的行式存储 数据存放在数据文件内数据存放在数据文件内 数据文件的基本组成单位:块数据文件的基本组成单位:块/页页 块内结构:块头、数据区块内结构:块头、数据区 行式存储的问题行式存储的问题 读某个列必须读入整行读某个列必须读入整行 行不等长,修改数据可能导致行迁移行不等长,修改数据可能导致行迁移 行数据较
16、多时可能导致行链行数据较多时可能导致行链 Oracle行式存储的访问路径行式存储的访问路径 全表扫描全表扫描 行标识访问行标识访问 行标识访问:行标识访问:B树索引树索引 B树索引原理:结点树索引原理:结点 B树索引原理:树形树索引原理:树形 利用利用B树进行查询树进行查询access path B树插入树插入分裂结点分裂结点 B树删除树删除合并结点合并结点 B树索引的弱点树索引的弱点 空间代价,创建时间代价,维护代价空间代价,创建时间代价,维护代价 重复值多时影响效率重复值多时影响效率 BigTable的的LSM索引索引 网络参考资源网络参考资源 http:/ http:/zookeeper.apache.org/doc/r3.3.2/zookeeperOver.html Hbase和和Hadoop的版本对应的版本对应 Hbase和和Hadoop的版本对应的版本对应 Hbase安装:单机模式安装:单机模式 下载及解压下载及解压hbase安装包安装包 修改修改conf/hbase-env.sh脚本,设置环境变量脚本,设置环境变量 编辑编辑hbase-site.xml进行配置进行配置 启
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1