大数据之HBase

HBase介绍

  • Apache的三篇论文,GFS谷歌文件系统->HDFS;MR -> MR ; BigTable ->HBase;
  • HBase是hadoop数据库,一种分布式、可扩展的大数据NoSQL数据库之一。
  • 适合对于大量数据进行随机、实时的读写操作

HBase数据模型

  1. Bigtable是一个稀疏的(如果某个列没有值,那么这个列直接不维护,传统的关系型数据库会维护一个null值)、分布式的、持久的多维(维度信息主要保存在key中,value一般是单纯的值)排序map
  2. 改映射由行键、列键和时间戳索引组成;映射的每个值都是一个字节数组。
  3. 用户将数据行存储在带标签的表中,数据行具有可排序的键和任意数量的列。
  4. 数据模型的关键在于稀疏、分布式、多维、排序的映射

HBase逻辑结构

  • row_key按照字典序排序,数据存储整体有序,存储的数据都是字节数据
  • 所有列必须在列族的内部,没有单独的列
  • 没有数据的部分,对于该行数据来说,直接没有该列,也不存储null值。
  • 划分列族的好处是为了方便存储,将同一列族的数据存储到一起
  • 每个region每个列族划分的区域称为一个store

HBase物理存储结构

  • 同一row_key,同一列族,同一列的数据根据时间戳排序
  • 根据时间戳来区分数据的版本,一般保留最新版本

数据模型术语

  • NameSpace命名空间
    • hbase
    • default
  • Table: 定义表时只需要声明列族即可,具体的列可以动态、按需指定
  • Row: 由一个RowKey和多个Column组成,数据是按照rowkey的字典序存储的,查询数据只能根据rowkey检索,所以rowkey的设计十分重要。
  • Column: 列族:列
  • Time Stamp: 用于标识数据的不同版本
  • Cell = rowkey + column family + column qualifier + timestamp 唯一确定的单元

HBase基础架构

  • Master
    • master通过监控region server是否正常运行
    • master负责所有元数据的变化
    • 监控执行region的故障转移和拆分线程
  • RegionServer
    • 负责数据Cell的处理
    • 在执行区域的拆分和合并时,由RegionServer来实际执行
  • HDFS: 保证数据存储的可靠

HBase的安装

  1. 配置环境变量
  2. vim hbase-env.sh, 126行,改为用外置的zookeeper。
  3. vim hbase-site.xml文件,改为分布式集群,告诉集群zookeeper的地址,数据存储位置,wal(写前日志)
  4. 端口号默认为16010

时间同步问题

  1. 如果RegionServer和Master的时间超过30s,就会触发ClockOutOfSyncException

HBase Shell基本操作

  1. hbase shell, 启动一个hbase shell
  2. help 命令名/ 组名 查看所有命令
  3. ddl命令
    • 查看所有的表:list
    • 建表:create 'mydb:t1', {name=>'cf1', version=>3}
      • 简写:create t2, 'col1', 'col2'
    • 查看表的详情: describe 'mydb:t1' , 可以简写为desc
    • 修改表:
      • alter 't2' , {name=>'cf1',version=>3}, 'cf4'
      • alter 't2' 'delete' => 'cf2'
    • 删除表: drop 't2',删除前需要先禁用表disable 't2', 之后再删除
    • 是否存在exists 't1'
    • 查看表的region信息:list_regions 't1'
  4. namespace命令
    • 查看所有的namespace: list_namespace
    • 查看指定namespace下面的表:list_namespace_tables 'hbase'; 里面有meta和namespace两张表
    • 创建一个数据库:create_namespace 'mydb'
    • 查看数据库详情:descrbe_namespace 'mydb'
    • 修改namespace: alter_namespace 'mydb1' , {method = 'set', 'author'=>'wyh'}
    • 删除namespace属性: alter_namespace 'mydb1' ,{method='unset', name=>'author'}
  5. dml命令(数据的增删改查 )
    • 插入数据:put 't1' '1001', 'cf1:name', 'zhangsan'
    • 查询数据:get 't1' '1001'
    • 扫描数据:san 't1' 扫描表中所有的数据
    • 修改数据: put 't1' '1001' 'cf1:name', 'zhangxiaosan'
    • 删除数据:delete 't1' , '1001', 'cf1:name'; truncate命令是直接删除文件,不是打标记
相关推荐
会飞的老朱15 分钟前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
陌上丨4 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56785 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw5 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30735 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
CRzkHbaXTmHw5 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
数据知道5 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
七夜zippoe5 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥5 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿6 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能