欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Hbase概述及Hbase shell 操作

程序员文章站 2022-03-13 22:35:02
Hbase一.Hbase概述二.Hbase发展史三.Hbase应用场景四.Apache HBase生态圈五.HBase物理架构六.HBase数据管理七.HBase架构特点八.HBase Shell九.HBase操作十.示例一.Hbase概述1.Hbase是一个领先的NoSQL数据库* 是一个面向列的数据库* 是一个分布式hash map* 基于Google Big Table论文* 使用HDFS作为存储并利用其可靠性2.Hbase特点* 数据访问速度快,响应时间约2-20毫秒* 支持随机读...

一.Hbase概述

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

二.Hbase发展史

时间 事件
2006 Google发表了关羽Big Table的论文
2007 第一个版本的HBase和Hadoop0.15.0一起发布
2008 HBase成为Hadoop的子项目
2010 HBase成为apache的*项目
2011 Cloudera基于HBase0.90.1推出CDH3
2012 HBase发布了0.94版本
2013~2014 HBase先后发布了0.96/0.98版本
2015~2016 HBase先后发布了1.0 , 1.1和 1.2.4版本
2017 HBase发布了1.3版本
2018 HBase发布了1.4和2.0版本

三.Hbase应用场景

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

四.Apache HBase生态圈

HBase生态圈技术

  • Lily-基于HBase的CRM
  • OpenTSDB-HBase面向时间序列数据管理
  • Kylin-HBase上的OLAP
  • Phoenix-SQL操作HBase工具
  • Splic 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物理架构

1.HBase采用Master/Slave架构
Hbase概述及Hbase shell 操作

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

2.RegionServer

  • RegionServer负责管理维护Region
    Hbase概述及Hbase shell 操作
    3.Region和table
    Hbase概述及Hbase shell 操作
    4.Hbase逻辑构架-Row
  • Rowkey(行键)是唯一的并一排序
  • Schema可以定义何时插入记录
  • 每个Row都可以定义自己的列,基石其他Row不使用

    相关列定义为列簇

  • 使用唯一时间戳维护多个Row版本

    在不同版本中值的类型可以but

  • HBase数据库全部以字节存储

六.HBase数据管理

1.数据管理目录

  • 系统目录表hbase:meta
    > 存储元数据等
  • HDFS目录中的文件
  • Server上的region实例
    2.HBase数据在HDFS上
    • 可以通过HDFS进行修复file
    • 修复路径

      RegionServer->Table->Region->RowKey->列簇

七.HBase架构特点

  • 强一致性
  • 自动扩展

    当Region变大会自动分割
    使用HDFS扩展数据并管理空间

  • 写恢复

    使用WAL(Write Ahead Log)

  • 与Hadoop继承

八.HBase Shell

  • HBase Shell是一种操作HBase的交互模式
    支持完整的HBase命令集
命令类型 命令
General version,status,whoami,help
DDL alter,create,descibe,disable,drop,enable,exist,is_disabled,is_enabled,list
DML count,delete,deleteall,get,get_counter,incr,put,scan,truncate
Tools assign,balace_switch,balancer,close_region,compact,flush,major_compact,move,split,unassign,zk_dump
Replication add_peer,disable_peer,enable_peer,remove_peer,start_replication,stop_replication

九.HBase操作

  1. 通过hbase shell 输入
    version — 查看数据库版本
    status — 查看集群状态
    whoami — 查看当前用户与组
    help — 查看命令行的具体使用
  2. 基本操作
  • 设置用户权限
user_permission '表名'    #查看用户权限
grant 'root','RWXCA'      #赋权
R - represents read privilege.
W - represents write privilege.
X - represents execute privilege.
C - represents create privilege.
A - represents admin privilege.
  • 列出hbase中的所有表
list
  • 创建表:
create '表名',{NAME=>'列簇名1'},{NAME=>'列簇名2'},.....
  • 删除表:在hbase中表有启用和禁用的状态区分,在删除和修改前需要先禁用,如果是修改那么完成后需要再启用
disable '表名'
drop '表名'
  • 更改表
    1.更改列簇名
alter '表名',{NAME=>'新列簇名'},{NAME=>'旧列簇名','METHOD'=>'delete'}

2.删除列簇名

alter '表名',NAME='列簇名','METHOD'='delete'

3.添加数据

put '表名','行键','列簇名','列值'
put '表名','行键','列簇名:列名','列值'[,时间戳]
  • 查数据
get '表名','行键'
get '表名','行键','列簇名'
scan '表名',{COLUMNS=>'列簇名:列名'}
  • 显示详细信息
desc '表名'
  • 将文档数据导入HBase(见示例)

十.示例

  1. 创建学生表 student
create 'student',{NAME=>'a'},{NAME=>'b'}

Hbase概述及Hbase shell 操作
注:a 和 b为列簇名

  1. 查看hbase中的表
list

Hbase概述及Hbase shell 操作

desc 'student'

Hbase概述及Hbase shell 操作

  1. 向student表中添加数据
put 'student','1','a:name','andy'
put 'student','1','b:gender','male'
get 'student','1'

Hbase概述及Hbase shell 操作

scan 'student',{COLUMNS=>'a:name'}

Hbase概述及Hbase shell 操作

  1. 修改,删除
    (1)修改列簇名
alter 'student',{NAME=>'aa'},{NAME=>'a','METHOD'=>'delete'}

Hbase概述及Hbase shell 操作
(2)删除列簇

alter 'student',NAME=>'aa','METHOD'=>'delete'

Hbase概述及Hbase shell 操作

  1. 将文档数据导入HBase
    1> 将文档emp_basic.csv上传至Linux系统根目录下
    文档内容:
    Hbase概述及Hbase shell 操作

2> 将emp-basic.csv 上传到HDFS /test文件夹下

hdfs dfs -put /root/emp_basic.csv /test

3> 在hbase库中创建表emp_basic

create 'emp_basic',{NAME=>'emp'},{NAME=>'time'}

4> 将文档emp_basic.csv导入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" /test/emp_basic.csv

5> 在hbase中验证是否导入成功

get 'emp_basic','1'

Hbase概述及Hbase shell 操作

本文地址:https://blog.csdn.net/ckw__xyy/article/details/108777184

相关标签: 大数据 hbase