栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBase学习笔记

HBase学习笔记

概念:基于内存和磁盘的分布式大数据NoSQL数据库
用途定位: 常用于大数据实时存储,提供高性能实时读写服务。数据可以永久存储(redis基于内存和磁盘,但是磁盘是本地磁盘,存储量有限)
数据存储格式

NS(namespace):T(table)        CF(columnFamily):C(column)value  TS(可选)  
namespace :ns类似于MySQL中的数据库
table  :t类似于数据库的表,只不过这个表是面向列的
rowkey(row):行的唯一标识,类似于主键,但比主键功能强大,唯一索引列,需要合理设计
columnfamily(cf) :列族 查询优化手段,可以根据列族进行过滤,但是会降低一些写的性能
column (c):列名
ts 时间戳,可选
value 值


常用命令行命令
create_namespace 'namespace_name'        建库
create 'NS:T' 'CF'         建表;无需指定列名,只需指定库表和列族
put 'NS:T' 'ROW' 'CF:C' ['ts'] '值'
get  'NS:TAB' 'ROW' 'CF:C'
scan 'NS:T',{Filter} 查看表格,按条件过滤
incr          'NS:T','rowkey','CF:C'
get_counter    NS:'T','rowkey','CF:C'
count          'NS:T'
delete        'NS:T','rowkey','CF:C'
...

Hbase热点问题

现象:在一段时间内,大量的访问同一个Region,其它的Region很少被访问.
产生的问题:

    故障率高 压力集中于一台,这台的故障率高性能低 只访问一台,整体性能不好

原因:

    表RowKey是连续的        表插入的数据是连续的,计算出的regionServer可能会都在同一个区分区范围不合理           表分区设计不合理,比如全设置数字型分区,但是数据都是字母开头的

解决(预防):

    构建多个分区,分区范围要合理 (表设计阶段)构建不连续的RowKey (表设计阶段)
表的预分区设计

概念:建表的时候,指定表的分区段

规则:根据RowKey或者Rowkey的前缀划分

划分的目标:尽量均衡的划分数据

表的RowKey设计 功能

1.一行数据的唯一标记

2.Hbase的唯一索引

3.Region划分依据

设计原则

1.业务原则        按照最常用于查询的一个或多个列作为前缀,比如时间,订单号等
2.唯一原则        数据的rowkey必须是数据的唯一标识。如果设计不合理,会造成数据丢失
3.组合原则        可以将多个常用查询的的列组合作为前缀 比如时间+用户id
4.散列原则        rowkey不能是连续的 如果必须是连续,可以考虑使用倒序(时间)或者加盐等方式
5.长度原则        总体rowkey长度不要超过100个字节,如果超过,考虑进行编码

BulkLoad

功能:将没有经过内存需求的大文件存入Hbase,文件传输失败可以重传,但是不希望它经过内存

步骤:

1. 将文件转换为HFILE

2.加载数据到Hbase表

Hive On Hbase

产生原因:Hbase不支持SQL,hbase编写程序分析处理数据学习成本高

原理:将Hive与Hbase集成,使用sql语法,通过底层分布式程序来对数据映射的HIVE表进行处理,底层操作的是Hbase数据

优点:支持完善的SQL语句,可以实现可靠的各种复杂的SQL和高级函数的处理计算

缺点:1.不支持Hbase二级索引,2.底层基于MR程序,处理性能查,速度慢,不适合做实时查询

定位:大数据离线场景的分析计算

Hbase二级索引

产生原因:根据rowkey规则,将常用的列作为前缀拼接,但仍有部分column无法直接作为查询条件,比如以时间作为前缀拼接,但是按直接按用户名查询也有需求,按这些列的查询不走索引,效率低下。

一.全局索引

原理:将除携带左前缀的不能满足索引查询的常用作查询的列作为前缀,拼接到Rowkey前面,作为新的 rowkey建立索引表,值为x仅做占位使用,查询时可先查询该表,按照前缀column获取rowkey后缀的得到rowkey1后,用rowkey1到原表查询,实现两次索引代替全表查询效果。
 

二.覆盖索引

原理:全局索引的基础上。将常用的查询字段放入,需要查询的时候,直接查这个表拿结果,不查原表。

三.本地索引

原理:将在全局索引基础上,新建的二级索引不新建表,直接放入原表的一个region,减少网络IO,降低对写的影响。注:本地索引会对原表数据进行修改,索引不能和加盐一起用

维护方式:

1.手动维护        性能查,不能保证原子性,原表和索引表更新,二级索引表可能没更新

2.开发协处理器         可以处理更新同步问题和原子性,但是工程量大,成本太高

3.使用第三方工具        使用Phoenix等 实现自动索引文件同步,保证原子性

优点:可以将原本不满足索引查询实现索引效果。提升查询效率

缺点:索引是一个数据结构,会随着原表的增删改而实时变化,手动维护困难

Phoenix

Safeforce公司的开源项目,后捐献给apache

优点:

1.提供完善二级索引功能,解决二级索引的各种问题。比如数据一致性和原子性。

2.提供SQL查询功能,实现SQL处理Hbase问题,使用Hbase的API,查询性能好

缺点:由于没有计算引擎,只有原生API,功能由协处理器实现,没有复杂的SQL语法和丰富的函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710612.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号