标签:ast 数据库 UNC can dml 意义 line 插入 命名
Hbase是一张大表(十亿行 * 百万列), 可以支持十亿级数据量的秒级查询.
Hbase依赖于hadoop
Hbase实现了更高的性能, 但在一定程度上牺牲了数据的一致性,(部分一致性).
Hbase数据就是有版本, 一条数据可以有多个版本.
HBase与hive: HBase相当于一个数据库, 往hdfs中写入数据; 而hive为一个数据仓库, 支持表的关联操作 , 可以用作数据分析.
随机读写
hbase依赖于hdfs!hdfs本身不支持随机写!只支持追加写!
随机写: 追加写+时间戳
在查询时,只返回时间戳最大的数据!
确定一个指所需概念
库:表名, 行键, 列族名:列名, 时间搓, 值
master负责表的管理 (DDL)
Table: create, delete, alter
Region server -> Region -> store(逻辑上的列族) -> StoreFile -> cell(数据的最小单元)
region :表的一个切片, 包含一整行所有字段
StoreFile由Mem Store刷写到磁盘, 保存为HFile格式的文件
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
bin/start-hbase.sh
bin/stop-hbase.sh
hbase shell
进入hbase的交互界面
表操作有mater负责
create‘表名‘,‘列族名 1‘ ,‘列族名 2‘,
创建列族, 而不是列.
alter 命令可以修改表的属性, 通常是修改某个列族的属性。
alter ‘表名’, ‘delete’ => ‘列族名
hbase(main):050:0> alter ‘myns:t1‘,{NAME => ‘info‘,VERSIONS => ‘5‘}
myns为表的命名空间
停用表后, 可以防止在对表做一些维护时, 客户端依然可以持续写入数据到表。
一般在删除表前, 必须停用表。
在对表中的列族进行修改时, 也需要停用表。
disable_all ‘正则表达式’ 可以使用正则来匹配表名。
is_disabled 可以用来判断表是否被停用。
和停用表类似。 enable ‘表名’用来启用表, is_enabled ‘表名’ 用来判断一个表是否被启用。
enable_all ‘正则表达式’可以通过正则来过滤表, 启用复合条件的表。
删除表前,需要先停用
获取表所对应的 Region 个数。 每个表在一开始只有一个 region, 之后记录增多后, region 会被自动拆分。
数据的读写操作有RegionServer负责
scan 相当与select, 可以按照 rowkey 的字典顺序来遍历指定的表的数据。
put 可以新增记录还可以为记录设置属性。
put 库:表名, 行键, 列族名:列名, 值, [时间搓]
put ‘表名‘, ‘行键‘, ‘列名‘, ‘值‘
put ‘表名‘, ‘行键‘, ‘列名‘, ‘值‘,时间戳
put ‘表名‘, ‘行键‘, ‘列名‘, ‘值‘, { ‘属性名‘ => ‘属性值‘}
put ‘表名‘, ‘行键‘, ‘列名‘, ‘值‘,时间戳, { ‘属性名‘ =>‘属性值‘}
HBase(main):012:0> put ‘student‘,‘1001‘,‘info:name‘,‘Nick‘
HBase(main):003:0> put ‘student‘,‘1001‘,‘info:sex‘,‘male‘
HBase(main):004:0> put ‘student‘,‘1001‘,‘info:age‘,‘18‘
get 支持 scan 所支持的大部分属性, 如 COLUMNS
, TIMERANGE
, VERSIONS
, FILTER
HBase(main):014:0> get ‘student‘,‘1001‘
HBase(main):015:0> get ‘student‘,‘1001‘,‘info:name‘
删除某 rowkey
的全部数据:
HBase(main):016:0> deleteall ‘student‘,‘1001‘
删除某 rowkey
的某一列数据:
HBase(main):017:0> delete ‘student‘,‘1002‘,‘info:sex‘
MemStore会根据一定时机向磁盘刷写, 生成StoreFile文件(即 HFile格式文件).
刷写的意义:
1.
2.
由于Memstore刷写会占用大量资源, 在生产环境中一般在空闲时手动刷写.
flush ‘表名’
flush ‘region名’
hbase.hregion.memstore.flush.size(默认值 128M)
, 其所在 region 的所有memstore 都会刷写默认128M
hbase.hregion.memstore.flush.size(默认值 128M)
× `hbase.hregion.memstore.block.multiplier(默认值 4)
时, **会阻止继续往该 memstore 写数据。**(同时flush)
> 128 * 4
3. 当 region server 中 memstore 的总大小达到
java_heapsize
× hbase.regionserver.global.memstore.size(默认值 0.4)
× `hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95)
region 会按照其所有 memstore 的大小顺序(由大到小) 依次进行刷写。 直到 region server 中所有 memstore的总大小减小到上述值以下。
> jvm堆内存 * 0.4 * 0.95
到 达 自 动 刷 写 的 时 间 , 也 会 触 发 memstore flush 。 自 动 刷 新 的 时 间 间 隔 由 该 属 性 进 行 配 置hbase.regionserver.optionalcacheflushinterval(默认 1 小时)
。
标签:ast 数据库 UNC can dml 意义 line 插入 命名
原文地址:https://www.cnblogs.com/bitbitbyte/p/12539087.html