Hbase概述及基本命令

本文深入介绍了HBase,一个基于HDFS的分布式NoSQL数据库,适用于高容量、高速读写的场景。文章涵盖了HBase的概述、应用场景、生态圈、物理和逻辑架构,以及HBase的主要特点。此外,还详细讲解了HMaster和RegionServer的角色,行键排序,数据管理,以及如何通过Shell执行基本命令和批量导入文件。
摘要由CSDN通过智能技术生成

一、HBase概述

HBase是一个领先的NoSQL数据库
a)是一个面向列存储的数据库
b)是一个分布式hash map
c)基于Google Big Table论文
d)使用HDFS作为存储并利用其可靠性
HBase特点
a)数据访问速度快,响应时间约2-20毫秒
b)支持随机读写,每个节点20k~100k+ ops/s
c)可扩展性,可扩展到20,000+节点

二、应用场景

增量数据-时间序列数据
 高容量,高速写入
信息交换-消息传递
 高容量,高速读写
内容服务-Web后端应用程序
 高容量,高速读写

三、Apache HBase生态圈

HBase生态圈技术
Lily – 基于HBase的CRM
penTSDB – HBase面向时间序列数据管理
Kylin – HBase上的OLAP
Phoenix – SQL操作HBase工具
Splice Machine – 基于HBase的OLTP
Apache Tephra – HBase事务支持
TiDB – 分布式SQL DB
Apache Omid - 优化事务管理
Yarn application timeline server v.2 迁移到HBase
Hive metadata存储可以迁移到HBase
Ambari Metrics Server将使用HBase做数据存储

四、HBase物理架构 - 概述

HBase采用Master/Slave架构
   1. HMaster
   2. RegionServer
   3. Zookeeper
   4. HBase Client
   5. Region

五、HBase物理架构 - HMaster

HMaster的作用
是HBase集群的主节点,可以配置多个,用来实现HA
管理和分配Region
负责RegionServer的负载均衡
发现失效的RegionServer并重新分配其上的Region

六、HBase物理架构 - RegionServer

RegionServer负责管理维护Region
一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
一个Region包含多个存储区,每个存储区对应一个列簇
一个存储区由多个StoreFile和MemStore组成
一个StoreFile对应于一个HFile和一个列簇
HFile和WAL作为序列文件保存在HDFS上
Client与RegionServer交互

七、HBase物理架构 - Region和Table

单个Table(表)被分区成大小大致相同的Region
Region是HBase集群分布数据的最小单位
Region被分配给集群中的RegionServer
一个Region只能分配给一个RegionServer

八、HBase逻辑架构 - Row

Rowkey(行键)是唯一的并已排序
Schema可以定义何时插入记录
每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列簇
使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同
HBase数据全部以字节存储

九、HBase数据管理

数据管理目录
a)系统目录表hbase:meta
作用:存储元数据等
b)HDFS目录中的文件
c)Servers上的region实例
HBase数据在HDFS上
a)可以通过HDFS进行修复File
b)修复路径
RegionServer->Table->Region->RowKey->列簇

十、HBase架构特点

强一致性
自动扩展
a)当Region变大会自动分割
b)使用HDFS扩展数据并管理空间
写恢复
使用WAL(Write Ahead Log)
与Hadoop集成

十一、HBase Shell

hbase安装教程:link
启动hbase:
hbase-deamon.sh start master
hbase shell

HBase Shell是一种操作HBase的交互模式
 支持完整的HBase命令集
在这里插入图片描述

十二、Hbase基本命令

用户权限:
user_permission [‘表名’…]
赋权:
grant ‘用户名’,‘RWXCA’

创建表:
create ‘表名’,{NAME=>‘列簇名’},{NAME=>‘列簇名’}…

删除表:
disable ‘表名’ ----->drop ‘表名’

清空表数据:
truncate ‘表名’

修改表名:
snapshot ‘表名’,‘镜像名’
clone_snapshot ‘镜像名’,‘新表名’
delete_snapshot ‘镜像名’

查表名:list
描述表:desc ‘表名’
查看表内容:scan ‘表名’
查看表中的记录总数:count ‘表名’

行操作:
put:put ‘表名’,‘行键’,‘列簇:列名’,‘值’[,时间戳]
可以单独删除行,行内的数据全部删除 delete ‘表名’,‘行键(rowkey)’,‘列簇名:列名’
删除整行 deleteall ‘表名’,‘rowkey’

列簇操作:
增 alter ‘表名’,NAME=>‘列簇名’
删 alter ‘表名’,NAME=>‘列簇名’,METHOD=>‘delete’
改 先加后删
查 :
获取某个列簇 get ‘表名’,‘行键(rowkey)’,‘列簇名’
获取某个列簇的某个列 get ‘表名’,‘行键(rowkey)’,'列簇:列名’

十三、批量导入文件

添加配置hbase-site.xml:
确认superuser
在hbase中输入:whoami查看

<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hbase.superuser</name>
<value>root</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController</value>
</property>

1.文件传入hdfs
2.在hbase中创建表结构
3.在linux中上传文件到hbase

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv
-Dimporttsv.separator=","
-Dimporttsv.columns="HBASE_ROW_KEY,
emp:name,emp:job_title,emp:company,time:sDate,time:eDate"
"emp_basic" /root/emp_basic.csv   //表名   hdfs中文件路径

4.查看表

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youzi-qiu7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值