《分布式数据库技术与应用》 课件 项目三:HBase数据库基础应用_第1页
《分布式数据库技术与应用》 课件 项目三:HBase数据库基础应用_第2页
《分布式数据库技术与应用》 课件 项目三:HBase数据库基础应用_第3页
《分布式数据库技术与应用》 课件 项目三:HBase数据库基础应用_第4页
《分布式数据库技术与应用》 课件 项目三:HBase数据库基础应用_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲人:XXXHBase数据基础应用分布式数据库技术与应用01项目背景03项目设计项目实施04认知基础0205综合实践项目背景以电商为例:每天处理数百万计的用户浏览、搜索、购买记录,通过列式存储按列族组织优化查询HBase凭借分布式架构和高扩展性,成为处理海量非结构化数据的核心工具时代痛点大数据时代需要存储和处理海量数据,传统方法面临性能瓶颈与扩展性不足核心定位HBase是高性能分布式列存储系统,基于HadoopHDFS构建,提供实时读写能力和灵活数据模型应用领域金融交易日志物联网设备数据社交媒体动态流电商用户行为项目背景:HBase为何而生认知基础关系模型,二维表格结构支持事务操作和标准SQL查询海量数据读写性能受限代表:MySQL、Oracle、PostgreSQL、SQLServer非关系型数据库(NoSQL)分布式、非关系型存储不支持SQL查询和事务操作水平扩展能力强代表:Redis、MongoDB、ClickHouse、HBase、ElasticSearch分布式水平扩展类型核心特点代表产品图形数据库面向数据关系图谱,以图结构存储Neo4j搜索数据库海量数据近实时搜索ElasticSearch、Solr内存数据库高并发读写、键值对缓存Redis文档数据库海量数据、JSON结构存储MongoDB、CouchDB列式数据库面向可扩展性,列簇式存储HBase、Cassandra数据结构决定应用边界,选型是架构的第一要义关系型数据库与非关系型数据库HBase的列族设计使得同一张表可以容纳不同结构的数据行,极大提升了灵活性数据模型与存储方式对比Hbase面向列的数据模型传统关系数据库

面向行的关系模型列族(ColumnFamily)组织每个列族可包含多个列稀疏、不同属性数据适合存储结构灵活的数据未经解释的字符串需自行编写程序解析不支持多表连接无法执行复杂连接查询表格行和列存储基于关系模型组织数据丰富数据类型与存储方式数据结构化,易于管理支持复杂多表连接通过主外键关联实现关联查询架构与扩展性对比HBase——分布式架构传统关系数据库——集中式架构Master-Slave架构Master统筹集群状态、负载均衡与元数据,RegionServer承载数据存储横向线性扩展集群中添加新节点即可扩展存储容量与吞吐量弹性伸缩通过增减硬件数量灵活实现性能伸缩扩展性受限横向扩展困难,纵向扩展依赖昂贵高端硬件架构固化不支持弹性扩展,升级成本高昂HBase的Master-Slave架构使其具备线性扩展能力,数据量增长只需增加节点一致性与查询方式对比HBase传统数据库最终一致性写入后需一定时间在所有节点达到一致状态事务支持有限仅支持单Row级别ACID无SQL使用HBaseAPI执行查询(范围、前缀、多条件)适用场景大规模数据、日志、社交媒体、传感器数据,高吞吐量强一致性写入后可立即读取最新数据完整ACID事务原子性、一致性、隔离性、持久性标准SQL功能丰富,语法灵活,复杂查询支持完善适用场景结构化数据、强一致性需求,如银行交易、订单管理特性HBase传统关系数据库硬件架构分布式集群,硬件成本低廉传统多核系统,硬件成本昂贵容错性软件架构实现,多节点不怕宕机需额外硬件实现HA机制数据库大小PB级GB、TB级数据排布方式稀疏、分布、多维的Map以行和列组织数据类型Bytes丰富的数据类型事务支持ACID仅支持单个Row级别全面的ACID支持,对Row和表查询语言只支持JavaAPISQL吞吐量百万查询/秒数千查询/秒核心差异总结与对比表HBase以有限API换取极致扩展性,传统数据库以丰富SQL换取强一致性与易用性选择数据库取决于具体应用需求与数据特点——海量数据高并发场景选HBase,复杂事务分析场景选传统数据库DDL管结构,DML管数据,DQL管查询——三者共同构成数据库操作的基础DDL、DML与DQL概念基础DDL(数据定义语言)DQL(数据查询语言)DML(数据操纵语言)定义和管理数据库对象数据库、表、视图、索引等核心命令CREATE(创建)、ALTER(修改)、DROP(删除);管理对象结构和属性,不直接操作数据内容专门用于查询数据核心命令是SELECT查询特性WHERE子句过滤、聚合统计(COUNT/SUM/AVG)、JOIN多表连接对数据进行增删改查操作核心命令SELECT(查询)、INSERT(插入)、UPDATE(修改)、DELETE(删除)事务控制支持手动控制事务的开启、提交和回滚操作特点直接处理数据内容,不管理对象结构以用户表为例(user_id、name、email、address),行存储将一条记录的所有字段连续存放面向行存储:特点与应用数据按行存储,每一行的所有字段连续存储在一起读取性能适合同时读取一行多字段,物理连续→读取速度快写入性能适合频繁插入和更新,每次只修改一行数据事务支持支持复杂事务处理,适合强一致性应用适用场景OLTP(在线事务处理)——银行交易系统、订单管理系统典型数据库MySQL、PostgreSQL、Oracle以用户表为例(user_id、name、email、address),行存储将一条记录的所有字段连续存放列存储是OLAP场景的最佳选择存储方式数据按列存储,同一列的数据连续存储在一起读取性能适合对某一列或多列进行聚合查询,同列数据物理连续,读取快写入性能不适合频繁插入和更新,每次需修改多个地方压缩效率同列数据类型相同,容易进行高效压缩,节省存储空间分析性能适合大规模数据分析和报表生成,高效进行聚合和统计适用场景OLAP(在线分析处理)——数据仓库、报表系统典型数据库典型数据库代表产品分布式列存储HBase、Cassandra列式文件格式ApacheParquet存储示例字段存储值user_id[1,2]name[Jack,Tom]email[jack@,tom@]面向列存储:特点与应用行存储与列存储全面对比特性面向行存储(Row-Oriented)面向列存储(Column-Oriented)数据存储按行存储按列存储读取性能适合读取整行数据适合读取单列或多列数据写入性能适合频繁插入和更新不适合频繁插入和更新事务支持支持复杂的事务处理通常不支持复杂的事务处理压缩效率较低较高适用场景OLTP、关系型数据库OLAP、数据仓库、NoSQL数据库高频读写整行数据面向行存储(MySQL、PostgreSQL)海量分析聚合查询面向列存储(HBase、Cassandra)理解存储方式的本质差异,才能做出正确的技术选型行存储与列存储全面对比项目设计与准备HBase数据CRUD操作:Create与Read创建数据—Put命令读取数据—Get命令行键列族列数据值创建Put对象,指定行键使用add方法添加列族、列和数据值发送到Master节点,分发给对应RegionServerRegionServer写入MemStore,同时更新HDFS数据块行键列键组合创建Get对象,指定行键使用addColumn方法指定要读取的列族和列发送到Master节点,分发给对应RegionServerRegionServer从MemStore和HDFS中读取数据并返回行键和列族是HBase数据操作的两大核心要素HBase的Update本质是覆盖,Delete是标记删除,理解这一点对数据操作至关重要Update操作—仍使用Put命令行键已存在时,Put命令会覆盖该行键下的数据;需递增某列值时使用Increment命令(原子操作),保证并发正确性Delete操作—使用Delete命令指定行键(必须)和列键(可选);未指定列键则删除该行下所有数据事务性HBase部分支持ACID,并非所有操作都保证事务性性能优化数据先写入MemStore,达到条件后刷新到HDFS;大量写入时可能遇到MemStore溢出,自动合并拆分数据一致性通过ZooKeeper等组件保证,HBase数据CRUD操作:Update与DeleteScan是HBase处理大数据集的核心工具高效复用批量检索迭代遍历010203创建Scan对象代表扫描操作的配置实例设置扫描范围setStartRow

指定起始行键;setStopRow

指定结束行键(开区间,不包含该行键本身)执行扫描通过

Table.getScanner

获取

ResultScanner

对象(迭代器),逐条遍历扫描结果HBase数据扫描操作过滤器是实现精准数据检索的关键手段基于行键PrefixFilter按行键前缀匹配RowFilter行键比较,配合比较运算符基于列ColumnPrefixFilter按列名前缀匹配FamilyFilter按列族筛选QualifierFilter按列名比较筛选基于单元值SingleColumnValueFilter指定列值满足条件则保留整行SingleColumnValueExcludeFilter列值满足条件则排除该行ValueFilter对列值直接比较其他FirstKeyOnlyFilter只返回每行首个单元格KeyOnlyFilter只返回元数据,不含值TimeStampFilter按时间戳版本过滤PageFilter限制返回行数,实现分页HBase数据过滤机制FilterList可组合多个过滤器,支持AND、OR、NOT逻辑运算项目实施行键设计是HBase建模的灵魂,一个好的行键能让查询事半功倍稀疏宽表结构,减少表数量增加列族与列,提升查询效率行键是性能关键,避免热点集中支持前缀扫描,优化查询路径相关性强的数据聚合同一列族减少无关数据读取开销多版本存储机制适配时间序列与历史追溯HBase数据模型设计原则行键设计是HBase建模的灵魂,一个好的行键能让查询事半功倍宽表设计行键设计—核心列族设计版本控制设计方法八条,核心是

行键设计+列族规划+分区策略

三位一体行键与列族:查询效率的根基有序唯一的行键设计支持高效范围查询与前缀匹配同族聚合的列族规划常查列同族存放,减少磁盘I/O架构与冗余:可靠性的保障稀疏矩阵规范建模灵活适应半结构化数据特征多节点复制数据冗余分散至多个RegionServer,规避单点故障压缩与分区:性能优化双引擎按需选算法压缩存储平衡空间节省与读写开销合理划分数据分区分散负载至不同RegionServer热点与查询:运维调优要点负载均衡规避热点行键与分区策略协同,确保各节点压力均衡查询模式前置优化设计范围查询、前缀查询等需求驱动表结构HBase数据模型设计方法设计方法八条,核心是行键设计+列族规划+分区策略三位一体行键设计必须唯一,长度10~100字节,前缀散列避免热点列族设计每表3~5个,单族不超过10GB数据模型扁平化结构,利用稀疏性节省存储运维要点快照备份,灾难恢复,Region负载均衡社交网络建模实例表名行键设计列族结构usersuser_idpersonal(用户名、邮箱)/meta(注册时间、最后登录)friendsuser_idfriends(好友user_id)postsuser_id+post_idcontent(文本内容)/meta(发布时间、点赞数)commentspost_id+comment_idcontent(评论内容)/meta(发布时间、点赞数)HBase最佳实践与建模实例需求分析用户基本信息静态人口属性浏览记录行为轨迹数据购买记录交易转化数据搜索记录意图表达数据四张核心表设计user_info表行键:user_iduser_browse表行键:user_id:timestampuser_purchase表行键:user_id:timestampuser_search表行键:user_id:timestamp关键设计要点组合行键使用user_id:timestamp确保唯一性并避免热点扫描示例scan'user_browse'可通过STARTROW/STOPROW获取用户全部浏览记录电商用户行为建模实例HBase内置操作:Get与ScanScan操作——批量数据检索Get操作——单条精确查询通过行键精确定位获取该行全部或指定列数据基本语法get'table_name','row_key'指定列族/列get'users','1',{COLUMN=>'personal:name'}SQL类比SELECT*FROMtableWHEREid=1遍历多行数据支持过滤器限制返回结果集基本语法scan'table_name'完整示例scan'users',{COLUMNS=>['personal'],LIMIT=>10}COLUMNS指定列族和列LIMIT限制返回行数FILTER过滤结果HBase内置操作:Put与DeletePut既是INSERT也是UPDATE,这是HBase操作设计的简洁之处Put操作—插入或更新行键已存在则更新,不存在则插入新行四要素语法put'table_name','row_key','column_family:column_qualifier','value'示例put'users','1','personal:name','Alice'双重语义:INSERT+UPDATE一体Delete操作—三级粒度删除可删除单元格、整列或整行数据删除单元格语法delete'table_name','row_key','column_family:column_qualifier'示例delete'users','1','personal:name'删除整行deleteall'users','1'FilterList

是应对复杂查询的利器:FilterList(AND,RowFilter(...),QualifierFilter(...))HBase内置过滤器详解六大过滤器覆盖HBase查询全场景,从单条件精确匹配到多条件逻辑组合基础过滤器扩展过滤器组合过滤器RowFilter(=,'binaryprefix:1')RowFilter

行键过滤—FamilyFilter

列族过滤—FamilyFilter(=,'binary:personal')QualifierFilter

列名过滤—QualifierFilter(=,'binary:name')TimestampsFilter

时间戳过滤—TimestampsFilter(1234567890,1234567891)PrefixFilter

前缀过滤—PrefixFilter('1')FilterList

组合过滤—支持

AND、OR

运算FilterList(AND,RowFilter(...),QualifierFilter(...))HBaseShell表基本操作数据查询操作表生命周期操作创建表create'users','personal','contact'指定表名和列族查看所有表list查看表属性describe'users'查看列族、版本数等详细信息插入数据put'users','1','personal:name','Alice'扫描全表scan'users'带条件扫描scan'users',{COLUMNS=>['personal'],LIMIT=>10}获取单行get'users','1'获取指定列get'users','1',{COLUMN=>'personal:name'}这十个Shell命令,就是HBase日常操作的核心HBaseShell数据删除与表管理最佳实践与流程核心操作命令数据操作(增/查/扫)删除操作put插入或更新数据scan扫描表数据(支持起止行/列族/列限定符/时间范围/版本数/分页过滤)get单行查询(可指定列族/列限定符/时间范围/版本数)delete删除指定列(行键+列族+列名)deleteall删除整行数据表管理安全机制停用表需先执行disable,再drop删除,防止数据冲突或丢失学习路径掌握左侧十个Shell命令即掌握HBase日常操作

80%

场景HBase数据DDL操作DDL操作:表的创建与修改create创建表01alter修改表02alter_async异步修改03列族必须显式定义每个列族可包含多个列列族决定物理存储与性能策略提供压缩和缓存控制,建表时需慎重规划语法create'table_name','column_family1','column_family2',...示例create'users','personal','contact'语法alter'table_name',{NAME=>'cf',METHOD=>'add|delete',VERSIONS=>n,TTL=>n,COMPRESSION=>'alg'}添加列族alter'users',NAME=>'address'修改版本数alter'users',NAME=>'personal',VERSIONS=>5删除列族alter'users',NAME=>'contact',METHOD=>'delete'适用场景需立即返回结果的高并发场景语法alter_async'users',NAME=>'address'说明异步不阻塞客户端,适用于在线业务DDL操作:表的创建与修改create创建表01alter修改表02alter_async异步修改03列族必须显式定义每个列族可包含多个列列族决定物理存储与性能策略提供压缩和缓存控制,建表时需慎重规划语法create'table_name','column_family1','column_family2',...示例create'users','personal','contact'语法alter'table_name',{NAME=>'cf',METHOD=>'add|delete',VERSIONS=>n,TTL=>n,COMPRESSION=>'alg'}添加列族alter'users',NAME=>'address'修改版本数alter'users',NAME=>'personal',VERSIONS=>5删除列族alter'users',NAME=>'contact',METHOD=>'delete'适用场景需立即返回结果的高并发场景语法alter_async'users',NAME=>'address'说明异步不阻塞客户端,适用于在线业务为何HBase必须显式定义列族而MySQL不需要?——列族是物理存储与性能策略的根基DDL操作:表状态管理enable/disable是HBase表操作的安全开关信息查询状态管理删除操作其他命令查看表详情

describe'users'列出所有表

list判断表是否存在

exists'users'获取表对象

table=get_table'users'启用表

enable'users'批量启用

enable_all'user_*'判断是否启用

is_enabled'users'禁用表

disable'users'批量禁用

disable_all'user_*'判断是否禁用

is_disabled'users'删除表

disable'users'→drop'users'批量删除

drop_all'user_*'定位行键所在Regionlocate_region'users','1'显示支持的过滤器

show_filters命名空间(Namespace)类似于关系型数据库中的数据库,用于对表进行逻辑分组管理创建与配置create_namespace'my_namespace'—创建命名空间带属性配置创建修改与查看alter_namespace—修改命名空间属性describe_namespace—查看命名空间详情列出与删除列出所有命名空间、查看命名空间下所有表、删除命名空间前须确保无表1创建命名空间create_namespace'user_data'2创建表create'user_data:users','personal','contact'3列出表list_namespace_tables'user_data'4禁用表disable'user_data:users'5删除表drop'user_data:users'6删除命名空间drop_namespace'user_data'命名空间操作HBase数据DML操作scan

配合过滤器是HBase数据检索的

标准模式DML操作:数据插入与查询put—新增或修改数据put'table_name','row_key','column_family:column_qualifier','value'行键存在则更新,不存在则插入新行scan—全表扫描scan'table_name',{OPTIONS}COLUMNS

指定列、LIMIT

限制行数、FILTER

过滤、STARTROW/STOPROW

定义范围示例:scan'users',{COLUMNS=>['personal'],LIMIT=>10}范围扫描:scan'users',{STARTROW=>'1',STOPROW=>'2'}count+get—统计与查询count'table_name',{INTERVAL=>n,CACHE=>m}INTERVAL

控制计数间隔,CACHE

优化性能可指定列:get'users','1',{COLUMN=>'personal:name'}可指定时间戳,获取

特定版本

数据get'table_name','row_key',{OPTIONS}DML操作:数据删除与高级操作incr的原子性是并发场景下数据准确性的保障删除操作delete

删除指定列,deleteall

整行删除列值自增incr原子操作,可指定增量值,保障并发准确获取自增后值get_counter获取incr后的最新值表数据清空truncate

不保留分区,truncate_preserve

保留分区Region管理get_splits

获取Region数量HBase数据DQL复杂操作单过滤器解决简单筛选,FilterList组合解决复杂业务查询需求RowFilter——基于行键过滤RowFilter语法示例RowFilter(=,'binary:1')QualifierFilter——基于列修饰符过滤QualifierFilter语法示例QualifierFilter(=,'binary:name')ValueFilter——基于列值过滤ValueFilter语法示例ValueFilter(=,'binary:Alice')TimestampsFilter——基于时间戳过滤TimestampsFilter语法示例TimestampsFilter(1234567890,1234567891)FilterList——组合过滤器实现复杂查询FilterList语法示例FilterList(AND,RowFilter,ValueFilter)支持AND和OR逻辑组合多个过滤器DQL操作:过滤器实战MapReduce批处理流程01TableMapper读取继承TableMapper从HBase表批量读取数据02Reducer汇总接收Mapper输出,执行聚合计算03TableInputFormat配置Job输入格式指定为HBase表04hadoopjar运行提交作业至集群执行批处理协处理器(Coprocessor)机制核心定位在Region服务器端执行自定义逻辑,降低延迟、提升吞吐量Observer触发器MasterObserver(表级操作)、RegionObserver(Put/Get/Scan/Delete)Endpoint分布式调用客户端直接调用Region服务器服务,高效分布式计算风险提示增加系统复杂性,代码错误可能导致

RegionServer崩溃MapReduce负责批处理离线计算,协处理器负责实时计算——二者互补构成HBase完整计算能力DQL扩展:MapReduce与协处理器其他查询方式:HBaseShell高级功能/灵活选型按需组合ApachePhoenix—HBase的SQL层CREATETABLE创建表UPSERT插入更新COUNT/GROUPBY聚合查询QueryServerHTTP访问DQL扩展:Phoenix及其他方式综合实战实训六大目的掌握基本概念和数据模型表结构、行键、列族、单元格熟悉HBase基本操作启动/停止集群、连接Shell掌握DDL操作创建表、修改结构、删除表掌握DML操作插入、更新、删除数据掌握DQL复杂操作查询单行、扫描表、过滤数据010203040506培养实际操作能力和问题解决能力实训环境配置项要求物理机Windows10/11,可访问外网虚拟机VirtualBox搭建

3台操作系统CentOS7核心组件Hadoop3.3.6+HBase2.4.18(分布式集群)项目实训:目的与环境搭建基本操作实训集群启停start-hbase.sh/stop-hbase.sh连接Shellhbaseshell表操作create/list/disable→dropDDL操作实训创建多列族表create'my_table','cf1','cf2'修改表结构alteradd/delete列族删除表先disable,再drop记住:任何结构变更前先想清楚,DDL操作直接影响数据组织方式实训内容:基本操作与DDLHBaseShellDML与DQL操作实训DML操作实训01插入数据put'my_table','row1','cf1:qualifier1','value1'指定表、行键、列族:列限定符、值02更新数据put'my_table','row1','cf1:qualifier1','new_value1'同键覆盖,写入新值03删除数据delete'my_table','row1','cf1:qualifier1'删除指定行键的指定列DQL复杂查询实训查询单行

get'my_table','row1'获取指定行键全部数据扫描表数据

scan'my_table'遍历全表所有行数据行键过滤

RowFilter按行键值精确匹配过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论