- hbase基本介绍:基于hadoop的分布式可扩展的大数据存储的基于内存列存储nosql数据库,持久性存储,基于内存存储。设计思想:基于内存达到实时性效果;基于分布式磁盘直接使用HDFS;基于分布式内存+分布式磁盘;实时,数据一产生写入,就立即要读取计算主要用于离线场景,用于提升离线存储的性能使用的是jvm堆内存:内存操作日志Hbase与HDFS、Redis。kafka区别:
Hbase与Mysql的区别
Hbase与Hive的区别
- Hbase中的对象:namespace(命名空间)数据库,任何一张表都必须属于某个namespace;访问表必须是namespace:表名hbase的表分布式的,表的数分布存储在不同的机器上,表是一个分布式逻辑对象,不同的分区存储在不同的hbase节点如果表在默认的default下,可以不用加namespace
Hbase的核心
11.1 RowKey行键,所有的hbase表不用定义,所有Hbase的表自带行键这一列(行键的值用户自己设计)唯一标识一行,Hbase不能创建索引 (不按照rowkey查询,只能全表扫描)
11.2 列族设计columnfamily(读):对除了rowkey意外的列进行分组,将列划分不同的组中,(任何一张hbase表,都至少有一个列族,除了rowkey以外的任何一列,都必须属于某个列族)
分组:将拥有相似IO属性的列放入同一个列族(要读一起读,要写一起写)划分列族读取数据时可以加快读取的性能。
11.3 数据列设计Qualifier与mysql的列是一样(除了rowkey以外的任何一个列都属于某个列族,引用列的时候必须加上列族的名称)
11.4多版本设计version:某一行的任何一列存储时,只能存储一个,Hbase可以允许某一行的某一列存储多个版本的值
11.5整体概念对比
- 架构
1.1 HMaster:主节点管理节点,负责所有从节点的管理,负责元数据的管理
1.2 HregionServer:从节点存储节点:负责管理每张表的分区数据(region),对外提供region的读写请求,用于构建分布式内存搭建Hbase
2.1上传解压
2.2修改配置文件:
vim hbase-env.sh
是否使用hbase自带的zk
在hbase目录下创建mkdir datas
修改vim hbase-site.xml
vim regionservers
配置环境变量
拷贝:cp lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar lib/
分发:scp -r hbase-2.1.0 node3:$PWD
服务端启动:启动HDFS:start-dfs.sh;启动zk;启动hbase:start-hbase.sh(那台机器启动那台机器就是主节点)
关闭:先关hbase再关zk
界面:http://node1:16010/master-status
启动第二台备份主节点:hbase-daemon.sh start master
- Hbase命令:DDl命令:
1.1 list_namespace:列举当前hbase的数据库
1.2 list_namespace_tables ‘namespace’:列举当前namespace下的表
1.3 create_namespace:创建namespace;
1.4 drop_namespace:删除namespace建表
2.1 list:列举出表
2.2 create ‘namespace:表名’,{NAME=>‘f1’,VERSION=>5}//在namespace下创建表。有一个列族f1,这个列族的所有列可以存储5个版本的值
create ‘t1’,‘f1’,‘f2’,‘f3’//在default下创建t1有f1f2f3三个列族
2.3 desc:查看表状态
2.4 disable ‘test01:lhh’ :禁用表lhh(确认表不可用)
2.5 enable ‘test01:lhh’ :启用表
2.6 exists ‘表名’:判断表是否存在
2.7 drop ‘表名’:删除表PUT(更新)
3.1 put (插入或更新数据某一行的某一列)(存在修改,不存在插入)
put ‘itcast:t2’,‘202201_00’,‘cf1:age’,18
3.2 查看:scan ‘namespace:表名’GET(查询最快按照rowkey)
get ‘itcast:t2’,‘202201_00’(必须给rowkey)delete(删除)
delete ‘itcast:t2’ ,‘202201_x0A001’,‘cf1:name’
deleteall(删除rowkey)truncate ‘’清空



