栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hbase入门 数据结构 基础API

Hbase入门 数据结构 基础API

文章目录
  • 一、简介
    • 定义
    • hive和hbase
    • 数据模型
      • NameSpace
      • Region
      • Row
      • Column
      • Time Stamp
      • Cell
  • 二、Hbase架构
      • 数据库的DDL和DML语言
      • 高级架构
        • 写操作
        • Shell操作
  • 三、Hbase API
    • admin
      • 判断表是否存在
      • 删除表
      • 创建表

一、简介 定义

Hbase是一种分布式,可扩展,支持海量数据存储的nosql数据库

Hbase是谷歌BigTable的开源实现,使用zookeeper作为HA的管理,使用hdfs作为底层的数据存储

hive和hbase

hive本身不存储和计算数据,hive中的表纯逻辑。hive的意义可以理解为是把简单易写的hive sql转换成复杂难写的MapReduce程序。所以hive其实是MapReduce(大数据的一种计算框架)的一个包装。

hbase是物理表,不是逻辑表,且hbase比hive高效的多。是一种分布式,可扩展,大容量的数据库。

数据模型

逻辑上,Hbase的数据模型同关系型数据库很类似,数据存储在一张表上,有行有列。但是从底层物理存储结构(K-V)看,Hbase更像是一个multi-dimensional map.(多维度的表)

有列族,row_key

纵向有region区域,横向有列族,都是因为数据量太大,划分区域处理的原因。

NameSpace

命名空间,类似于数据库的database,有两个hbase自带的命名空间,一个default 一个hbase,hbase是系统内部的,不要用。

Region

类似于数据库的表,不同的是,Hbase定义表只需要定义列族就可以,不需要声明具体的列,这也意味着hbase的数据量大,能够轻松应对字段变更的场景。

Row

hbase中每行数据都由一个rowkey和多个column(列)组成,数据是按照rowkey的字典顺序存储的,并且查询数据时只能按照rowkey来查,所以rowkey的设计十分重要。

Column

hbase中每个列都由Column Family(列族)和Column Qulifier(列限定符)进行限定,建表时只需指定Column Family即可。

Time Stamp

时间戳,用于标识数据的不同版本。

Cell

由{rowkey,column:column qulifier,time stamp}组成的唯一确定的单元,cell中的数据是没有类型的,都是字节码形式存储。

二、Hbase架构

Master的作用,管理table的增删改查,分配regions到每个RegionServer,监控每个RegionServer的状态。

RegionServer,管理region,region去存储管理数据。

数据库的DDL和DML语言

ddl代表数据定义语言,是一种有助于创建数据库模式的SQL命令。比如create,drop,alter,truncate和rename等

dml代表数据操作语言,是一种有助于检索和管理关系数据库中数据的SQL命令。比如:insert,update,delete和select等等。

高级架构

与mysql的binlog相似,hbase也有hlog

hbase读比写慢(与常见的数据库不同)

写操作

通过事务保证一致性。

把回滚的判断写到finally里面,以此来保证一定会执行判断是否成功写入。

hive也支持更新操作,但是更新起来特别的慢,所以几乎从来不会用到。hbase和hive是相似的。

Shell操作

主要就是DDL(操作表) 和 DML(操作数据)

三、Hbase API

添加依赖:

org.apache.hbase

hbase-client

hbase-server

admin 判断表是否存在
    // 1.判断表是否存在
    public static boolean isTableExist(String tableName) throws IOException {
        // 1.获取配置文件
        HbaseConfiguration hbaseConfiguration = new HbaseConfiguration();
        hbaseConfiguration.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104");
        // 2.获取管理员对象
        HbaseAdmin admin = new HbaseAdmin(hbaseConfiguration);
        boolean tableExists = admin.tableExists(tableName);
        return tableExists;
    }

上面这种已过时,但是功能也还可以

通过admin对象能够进行表的增删改查:表是否存在,删除表,增加列,等等

    // 1.判断表是否存在(新)
    public static boolean isTableExist(String tableName) throws IOException {
        // 1.获取配置文件
        Configuration hbaseConfiguration = HbaseConfiguration.create();
        hbaseConfiguration.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104");
        // 2.获取管理员对象
        HbaseAdmin admin = new HbaseAdmin(hbaseConfiguration);
        boolean tableExists = admin.tableExists(tableName);
        return tableExists;
    }

这种是未过时的。但是功能都是一样的。

删除表
    // 删除表
    public static void dropTable(String tableName) throws IOException {
        // 1.判断表是否存在
        if (isTableExist(tableName)){
            System.out.println("该表已存在");
            return;
        }
        // 2.使表下线
        admin.disableTable(tableName);
        // 3.删除表
        admin.deleteTable(tableName);
    }
创建表
   // 创建表
    public static void creatTable(String tableName, String ... cfs) throws IOException {
        // 1.判断是否存在列族信息
        if (cfs == null || cfs.length <= 0){
            System.out.println("请设置列族信息");
            return;
        }
        // 2.判断表是否存在
        if (isTableExist(tableName)){
            System.out.println("该表已存在");
            return;
        }
        // 3.创建表描述器
        HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
        // 4.循环添加列族信息
        for(String cf : cfs){
            // 5.创建列族描述器
            HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
            // 6.添加具体的列族信息
            hTableDescriptor.addFamily(hColumnDescriptor);
        }
        // 7.创建表
        admin.createTable(hTableDescriptor);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439204.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号