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

<Zhuuu_ZZ>HBase(一)基操

程序员文章站 2022-07-05 09:41:05
目录一 HBase概述二 HBase应用场景1 增量数据-时间序列数据2 信息交换-消息传递3 内容服务-Web后端应用程序三 Apache HBase生态圈四 HBase物理架构1 HMaster的作用2 RegionServer3 Region和Table4 Row5 数据管理6 架构特点五 HBase Shell基操将文档导入HBase一 HBase概述HBase是一个领先的NoSQL数据库是一个面向列存储的数据库是一个分布式hash map基于Google Big Table论文使用...

一 HBase概述

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

二 HBase应用场景

1 增量数据-时间序列数据

  • 高容量,高速写入
    <Zhuuu_ZZ>HBase(一)基操

2 信息交换-消息传递

  • 高容量,高速读写
    <Zhuuu_ZZ>HBase(一)基操

3 内容服务-Web后端应用程序

<Zhuuu_ZZ>HBase(一)基操

三 Apache HBase生态圈

  • HBase生态圈技术
    • Lily – 基于HBase的CRM
    • OpenTSDB – 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架构
    • HMaster
    • RegionServer
    • Zookeeper
    • HBase Client
    • Region
      <Zhuuu_ZZ>HBase(一)基操

1 HMaster的作用

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

2 RegionServer

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

3 Region和Table

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

4 Row

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

5 数据管理

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

6 架构特点

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

五 HBase Shell

  • HBase Shell是一种操作HBase的交互模式
    • 支持完整的HBase命令集
      <Zhuuu_ZZ>HBase(一)基操

基操

  • 用户权限:
    • 实现用户权限操作前需要往hbase-site.xml添加配置
<property>
<name>hbase.security.authorization</name>
<value>true</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>
<property>
<name>hbase.superuser</name>
<value>hadoop</value>
</property>
  • 配置完成后,重启HBase即可生效
--查看用户权限
user_permission ['表名'....]
--添加用户权限
grant '用户名' ,'RWXCA'
  • 表:
--增:
create '表名',{NAME=>'列簇名'},{NAME=>'列簇名'}
--删:
disable '表名'  -----> drop '表名'
--改:
snapshot '表名','镜像名'    
clone_snapshot '镜像名','新表名'  
delete_snapshot '镜像名'
--查:
list
  • 行:
--put的时候:
put '表名','行键','列簇名:列名','值',[,时间戳]
--可以单独删除行,行内数据全部删除
  • 列簇:
--不可以单独删除
--增:
alter '表名',NAME=>'列簇名'
--删:
alter '表名',NAME=>'列簇名',METHOD=>'delete'
--改:先加,后删
--查:
get '表名','行键','列簇名'

将文档导入HBase

--1.在hbase shell命令行创表
crerate 'emp_basic',{NAME=>'emp'},{NAME=>'time'}
--2.把数据上传至hdfs
hdfs dfs -put /root/emp_basic.csv  /test2/
--3.在linux命令行执行文档导入
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-D importtsv.separator="," \
-D importtsv.columns=\
"HBASE_ROW_KEY,emp:name,emp:job_title,emp:company,time:sDate,time:eDate" \
"emp_basic" /test2/emp_basic.csv

本文地址:https://blog.csdn.net/Zhuuu_ZZ/article/details/108778217