收藏 分享(赏)

TDH大数据平台培训_第14讲_分布式NewSQL数据库Hyperbase.pdf

上传人:苏醒文档集 文档编号:13129441 上传时间:2022-06-29 格式:PDF 页数:48 大小:1.98MB
下载 相关 举报
TDH大数据平台培训_第14讲_分布式NewSQL数据库Hyperbase.pdf_第1页
第1页 / 共48页
TDH大数据平台培训_第14讲_分布式NewSQL数据库Hyperbase.pdf_第2页
第2页 / 共48页
TDH大数据平台培训_第14讲_分布式NewSQL数据库Hyperbase.pdf_第3页
第3页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、星 环 科 技星 环 科 技分布式NewSQL数据库Hyperbase星环科技www.transwarp.io2018年5月10日星 环 科 技星 环 科 技CONTENTS目 录 Hyperbase介绍1 HyperBase原理2 HyperBase安装与配置3 Hyperbase基本使用4 Hyperbase全局索引5 Hyperbase数据快速入库BulkLoad6星 环 科 技星 环 科 技1chapter Hyperbase介绍星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase介绍-适用场景 海量数据高并发固定条件检索查询并发检索查询 1 0 k-1 0

2、 M的半结构化/非结构化数据半结构化/非结构化数据存储Hyperbase星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase介绍使用方式Hyperbase 非标准SQL语法,有一定的学习成本运维难度高不能提供标准接口HBase Shell 以标准SQL的方式,易用性强运维难度低提供标准接口Inceptor SQL需要编写代码,有一定的代码能力运维难度高提供代码接口HBase API星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase介绍-概述 Hyperbase定义 Hadoop Database,是Google Bigtable的开源实

3、现是一个key/value系统分布式数据库,支持海量数据存储 Hyperbase设计目标海量数据量存储高并发操作数据随机读写操作数据强一致性星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase介绍表特点 Hyperbase表特点大:单个表可以有数十亿行,上百万列无模式:每行有任意多的列,列可以动态增加,不同行可以有不同的列,列的类型没有限制面向列族:面向列族的存储和权限控制,支持列族独立检索稀疏:空(null)列不占存储空间,表可以非常稀疏数据多版本:每个单元中的数据可以有多个版本数据类型单一:所有数据都是byte数组,没有类型星 环 科 技单击此处编辑母版标题样式

4、单击此处编辑母版标题样式Hyperbase介绍基本概念表Table Hyperbase以表为单位组织数据行Row表中数据以行为单位,byte存储 RowKey相当于额外的列,是每条记录的主键。各行数据按RowKey排序,用于快速查找列族Column Family各行数据列族相同,但不是每个列族中都需要有数据列限定符Column Qualifier一个列族拥有一或多列数据,各行数据列不需要相同星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase介绍-基本概念单元格Cell行、列族和列限定符的组合指定的单元格单元格存放的数据成为单元格的值,没有类型,byte存储时间戳T

5、imstamp单元格的值可以有多个版本,各个版本由版本号区分默认版本号的值为被写入的时间戳星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式举例星 环 科 技星 环 科 技2chapter Hyperbase原理星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase架构星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase架构-基本组件 HMaster管理用户对table的创建删除修改操作为Region server分配region负责Region server的负载均衡发现失效的Region server并重新分配其上的regi

6、on通过ZooKeeper实现不负责实际数据读写操作,只维护表的元信息 Region Server维护region,处理对这些region的IO请求,直接与client进行数据通信负责切分(split)在运行过程中变得过大的region对region进行compact操作在运行中可以动态添加、删除星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase架构-基本组件 Client包含访问Hyperbase的接口,并维护cache来加快对Hyperbase的访问,比如region的位置信息 ZooKeeper通过选举,保证任何时候,集群中只有一个HMaster,HMast

7、er与RegionServer启动时会向ZooKeeper注册存贮所有Region的寻址入口实时监控Region server的上线和下线信息。并实时通知给HMaster存储Hyperbase的schema和table元数据,如column family Zookeeper的引入使得Master不再是单点故障星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase数据存储 Table和Region table中所有行按RowKey排序单个table一开始只有一个region随着记录越来越多,单个region太大,达到阈值,分裂成2个region(region split

8、) region是Hyperbase中分布式存储和负载的最小单元不同region分布在不同的RegionServer上星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase数据存储星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase数据存储星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase数据存储星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase数据存储 Store Region虽然是分布式存储的最小单元,但不是存储的最小单元 Region由多个store组成,每个store保存一

9、个Column Family每个store由1个MemStore和0到多个StoreFile组成 MemStore存储在内存中 StoreFile存储在HDFS上,底层称为HFile星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase行数据-组织方式多级索引 RowKey升序 Timestamp降序星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase行数据-储存星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase写过程星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase写过程 Cli

10、ent先访问zookeeper,从meta表获取相应region信息,然后找到meta表的数据根据namespace、表名和rowkey在meta表中找到对应的region数据更新先写进MemStore和HLog中,保持有序 MemStore达到阈值,创建新的MemStore,并将老的添加进flush队列,有单独的线程flush到磁盘的StoreFile当StoreFile数量达到阈值进行合并compact,形成大的StoreFile当Region大小达到阈值进行分裂split,等分成两个region星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase写过程-Com

11、pact Compact把小的HFile合并成大的,减少HFile数量,提升读效率执行时严重影响Hyperbase性能触发后不能停止 Major Compact一个store下的所有文件合并删除过期版本数据删除delete marker数据指定间隔时间或手动执行星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Hyperbase写过程-Split当region中的数据过大时,触发split用middle key分割成两个相邻region可以手动触发真正split创建现有HFile的引用文件,未真正分开 Compaction时才重写数据星 环 科 技单击此处编辑母版标题样式单击此处编

12、辑母版标题样式Hyperbase写过程-数据恢复 HLog HLog是一个实现Write Ahead Log类,每次写MemStore前写入HLog每个RegionServer维护一个HLog HLog定期删除旧的文件(已经持久化到HFile的数据) RegionServer意外中止 HMaster通过ZooKeeper感知处理HLog,针对不同的Region拆分Log数据重新分配失效region通过HLog信息重新写进MemStore,然后flush到HFile星 环 科 技星 环 科 技3chapter Hyperbase安装与配置星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题

13、样式HyperBase安装与配置星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式HyperBase安装与配置星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式HyperBase安装与配置星 环 科 技星 环 科 技4chapter Hyperbase基本使用星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式HBase shell方式创建表格 create table_name, cf1 , cf2 写入数据 put table_name, row_key, cf:cq, value, timestamp删除数据 delete table_name, row

14、_key, cf: cq, timestamp deleteall table_name, row_key查看数据 scan table_name查看单行数据 get table_name, row_key星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Inceptor SQL方式1、创建hyperdriver表CREATE TABLE hyper_employee (key BIGINT, id STRING, name STRING, obd TIMESTAMP) STORED AS HYPERDRIVE;2、插入数据INSERT INTO hyper_employee(ke

15、y, id, name, obd) VALUES (1, 123, Alice,2015-01-04 00:09:00);INSERT INTO hyper_employee(key, id, name, obd) VALUES (2, 124, Bob,2015-01-05 00:09:00);星 环 科 技星 环 科 技5chapter Hyperbase全局索引星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式全局索引-目的 Rowkey作为索引,字典排序通过rowkey不再满足应用的需求如select * from table where col=val建立二级索引加速查找

16、星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式全局索引-原理 Rowkey f:cA0 0 1 BA0 0 2 AA0 0 3 DA0 0 4 CRowkey f:c f:vA A0 0 2 5 2B A0 0 1 2 3C A0 0 4 7 8D A0 0 3 1 3原始表索引表星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式全局索引-使用创建全局索引CREATE GLOBAL INDEX ON ( | , |,. );column1 :指根据哪个列建全局索引,可以有多个列,但不可包含首列(因该列映射为RowKey)SEGMENT LENGTH length1

17、:每个列在索引词条中所占字段的长度,可简写为 (length1 ) 。注意,当作为索引的字段为string类型时,必须指定长度,且简写必须有 ()索引创建后可通过 describe formatted hbase_inner_table; 查看表的索引信息,确认是否创建成功eg:CREATE GLOBAL INDEX ch_global ON hbase_inner_table(ch(1 0 ); 星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式全局索引-使用 build全局索引 rebuild_global_index t1, index_name 该语句为t1表build之前

18、定义的index_name索引,通过mapreduce程序建立索引表。此命令会为全表的数据建立索引列。 rebuild_global_index_with_range t1, index_name, start_key, end_key 该语句对t1表根据指定的rowkey范围建立索引,生产环境中的大表应采用此方法分批建立索引删除全局索引DROP INDEX IF EXISTS ON ; 星 环 科 技星 环 科 技6chapter Hyperbase数据快速入库BulkLoad星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Why Bulkload通常 写Hyperbase时使

19、用的是TableOutputFormat方式,put写入Hyperbase,该方式在大量数据写入时效率低下,因为Hyperbase会block写入,频繁进行flush、split、compact等大量IO操作,这样对Hyperbase节点的稳定性也会造成一定的影响,例如GC时间过长,响应变慢,导致节点超时退出,并引起一系列连锁反应: Memstore 在持续写的过程中会占用大量内存 WAL相关问题:被迫要么使用更大的WAL,要么完全停止使用WAL导致大量的 Compaction和Flush queue Your GC is out of control because your inserts

20、 range in the MBs Your latency goes out of your SLA(Service-Level Agreement) when you import data 星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Why Bulkload Hyperbase支持 bulk load 的入库方式,它是利用Hyperbase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载,在大数据

21、量写入时能极大的提高写入效率,并降低对Hyperbase节点的写入压力。通过使用先生成HFile,然后再BulkLoad到Hyperbase的方式来替代之前直接调用HTableOutputFormat的方法有如下的好处:(1)消除了对Hyperbase集群的插入压力(2)提高了job运行速度,降低了Job的执行时间星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式How to Bulkload对 Hyperbase 使用 BulkLoad 操作,工作流将是类似以下内容:1.从其现有源提取数据。例如,如果您的数据位于 MySQL 数据库中,则可以运行 mysqldump 命令。使用的

22、进程取决于数据。如果数据已经是 TSV 或 CSV 格式,请跳过此步骤,并使用随附的 ImportTsv 实用程序将您的数据处理到 HFile 中。参见ImportTsv 文档了解详细信息。2.将您的数据处理成 HFile 格式。参见http:/Hyperbase.apache.org/book/hfile_format.html 了解有关 HFile 格式的详细信息。3.每个输出文件夹中的每个区域都会创建一个 HFile 。I输入数据几乎全部被重写,因此需要的可用磁盘空间应至少为原始数据集大小的两倍。例如,对于 100GB 的 mysqldump 输出,应在 HDFS 中至少具有不低于 20

23、0GB 的可用磁盘空间。可以在此进程结束时删除原始输入文件。4.将文件加载到 Hyperbase。使用 LoadIncrementalHFiles 命令(通常称作 completebulkload 工具),并向其传递一个用于在 HDFS 中查找文件的 URL。 星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式TDH Bulkload流程 TDH Bulk 抽象流程1. 对数据预先分region 2.根据预分region建表,MapReduce生成Hfile 3.把Hfile数据load到Hyperbase指定目录(只是文件的移动)4.对 Index数据预分Region & reb

24、uild_index星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式对数据预先分region Region1Region2我们需要根据Hyperbase的rowkey对数据进行预分,使各个预分Region中的数据大小分布均匀,行数接近。星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Region分配原则每个region的大小为1 3 GB每个resionserver管理1 0 1 0 0 0个region通过sql得到预分region的splitkey select count(*) from hyperbase_text_table; create table t

25、emp(id int, name string); insert into table temp select sample(x, key1 , value1 ) from hyperbase_text_table; / x = count(*) / 9 7 / region数 sample函数接受至少两个参数,第一个参数指定采样率,后面第二个到第N个参数指定需要选出的列名。星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式Region分配原则生成splitkey rowkey是用id 和 name两个字段 concat起来。 ntile函数中的参数为要分的region数量,ord

26、er by rowkey最后limit的值为(region-1 ),得到用于建表的splitkeyselect mid from (select max(c) as mid from (select concat(id,name) c, ntile(10) over (order by concat(id,name) nt from temp)group by nt)order by midlimit 9;星 环 科 技单击此处编辑母版标题样式单击此处编辑母版标题样式创建预分Region的表create table holo_hyperdrive (rowkey string,num int,country string,rd string)stored as hyperdrivetblproperties(hyperdrive.table.splitkey=110000000,120000000,130000000,140000000,150000000,160000000,170000000,180000000,190000000);Q&A星 环 科 技

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报