c语言sscanf函数的用法是什么
271
2022-11-20
大数据组件-Hbase学习
????????????博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家????
????擅长领域:Java、大数据、运维、电子
????????如果本文章各位小伙伴们有帮助的话,????关注+????????点赞+????评论+????收藏,相应的有空了我也会回访,互助!!!
????另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
目录
概念
特点
分布式
hbase原理
hbase架构
Hbase Shell操作
基本操作
表的操作
hbase数据结构
HBase原理
数据flush过程
数据合并过程
概念
HBase是一个基于HDFS口的非关系型面向列的分布式数据库。这是一个NoSQL开源数据库,其中的数据存储在行和列中。单元格是行和列的交集。每个单元格值都包含一个"版本”属性,该属性仅是唯一标识该 单元格的时间戳。映射中的每个值都是不间断的字节数组
特点
海量存储
Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利
列存储
这里的列式存储其实说的是列族(ColumnFamily)存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定
极易扩展
Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
高并发
由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
稀疏
稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
分布式
分布式用户
为了解决分布式用户下集群上session类的用户数据进行更好的进程之间通信,减少程序进程之间的通信消耗演变而来的——Spring
并发:指的是线程的并发,抢占资源s并行:指的是进程的并行,多核cpu,同时进行
hbase原理
去中心化,无需负载均衡的引导,都会知道数据的流向,这就是Redies无需负载均衡器中心,结点互相保留了信息
hbase架构
Region:分区HLog:预写日志Stor:列族ZK:zookeeper高可用,检测节点心跳HMaster:Hbase的集群masterMen Store:Cache缓存
Hbase Shell操作
基本操作
1.进入HBase客户端命令行
hbase shell
查看帮助命令
hbase(main):001:0> help
查看当前数据库中有哪些表
hbase(main):002:0> list
表的操作
1.创建表
hbase(main):002:0> create 'student','info'
2.插入数据到表
hbase(main):003:0> put 'student','1001','info:sex','male'hbase(main):004:0> put 'student','1001','info:age','18'hbase(main):005:0> put 'student','1002','info:name','Janna'hbase(main):006:0> put 'student','1002','info:sex','female'hbase(main):007:0> put 'student','1002','info:age','20'
3.扫描查看表数据
hbase(main):008:0> scan 'student'hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => '1001'}hbase(main):010:0> scan 'student',{STARTROW => '1001'}
{STARTROW => '1001', STOPROW => '1001'}:查看的是startrow(开始行)从1001(包含边界值),到stoprow(不包含边界值),比较的方式一类似ASCII码的逐位比较大小,若没有一位大于stoprow值则视为比其小。
4.查看表结构
hbase(main):011:0> describe 'student'
5.更新指定字段的数据
hbase(main):012:0> put 'student','1001','info:name','Nick'hbase(main):013:0> put 'student','1001','info:age','100'
覆盖原有的达到更新
6.查看“指定行”或“指定列族:列”的数据
hbase(main):014:0> get 'student','1001'hbase(main):015:0> get 'student','1001','info:name'
7.统计表数据行数
hbase(main):021:0> count 'student'
8.删除数据
删除某rowkey的全部数据:
hbase(main):016:0> deleteall 'student','1001'
删除某rowkey的某一列数据:
hbase(main):017:0> delete 'student','1002','info:sex'
9.清空表数据
hbase(main):018:0> truncate 'student'
提示:清空表的操作顺序为先disable,然后再truncate。
10.删除表
首先需要先让该表为disable状态:
hbase(main):019:0> disable 'student'
然后才能drop这个表:
hbase(main):020:0> drop 'student'
提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.
11.变更表信息
将info列族中的数据存放3个版本:
hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
VERSIONS:可以指定保存版本数量,put真正表示的新增,只不过展示数据的只展示最新的那条,想看之前的数据可以通过保存版本数据量之内的数据,结合TimeStamp时间戳进行判断。scan 't1',{RAW ⇒true,VERSION ⇒ 10}可以查看已经删除,但还没有被被真正的删除的隐藏起来找时机删除的信息
12.查看命名空间列表
hbase(main):007:0> list_namespace
13.创建命名空间
hbase(main):008:0> create_namespace 'infomation'
14.删除命名空间
hbase(main):009:0> drop_namespace 'infomation'
15.往创建的命名空间里添加表
hbase(main):010:0> create 'infomation:emp','info'
hbase数据结构
RowKeyRowKey用于检索记录的主键,访问HBase table中的行有三种方式:RowKey行键可以是任意字符串(最大长度64KB,实际长度为10~100byte)RowKey保存为字节数组(字节压缩的能力更大,更好利用空间),存储时按照RowKey(byte order)的字典顺序存储。设计Rowkey时,要充分利用排序存储这个特性,将经常一起读取的行存储到一起(位置相关性)。
通过单个RowKey访问(get)通过RowKey的range(正则)(like)全表扫描(scan)
HBase原理
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~