HBase

HBase

  • NoSql:not only sql,非关系型数据库

  • NoSql是一个通用术语

    • 指不遵循传统RDBMS模型的数据库
    • 数据是非关系的,且不使用sql作为住哟啊查询语言
    • 解决数据库的可伸缩行和可用性问题
    • 不针对原子性或一致性问题
  • NoSql和关系型数据库对比

    对比NoSql关系型数据库
    常用数据库HBase,MongoDB,RedisOracle,DB2,MySql
    存储格式文档,键值对,图结构表格式,行和列
    存储规范鼓励冗余规范性,避免重复
    存储扩展横向扩展,分布式纵向扩展
    查询方式结构化查询语言sql非结构化型查询
    事务不支持事务一致性支持事务
    性能读写性能高读写性能差
    成本简单易部署,开源,成本低成本高
  • NoSql的特点

    • 最终一致性
    • 应用程序增加了维护一致性和处理事务等职责
    • 冗余数据存储
  • NoSql基本概念

    • 三大基石:cap,base,最终一致性
    • indexing(索引),query(查询)
    • MapReduce
    • Sharding
  • cap理论:数据库最多支持3个中的2个

    • Consistency(一致性)
      • 在分布式系统完成某写操作后任何读操作,都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。
    • Availability(可用性)
      • 一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。
    • Partition Tolerance(分区容错性)
      • 指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。
    • CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的,有违设计的初衷。
    • CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。
    • AP: 优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。
  • BASE

    • Basically Avalible(基本可用)
      • 保证核心可用
    • Soft-state(软状态)
      • 状态可以有一段时间不同步
    • Eventual Consistency(最终一致性)
      • 系统经过一定时间后,数据最终能够达到一致的状态
    • 核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性
  • 最终一致性

    • 最终结果保持一致性,而不是实时一直
    • 如账户余额,库存量等数据需要强一致性
    • 如catalog等信息不需要强一致性
  • 索引和查询

    • indexing
      • 大多数NoSql是按key进行索引
      • 部分NoSql运行二级索引
      • HBase使用HDFS,append-only
        • 批处理写入Logged
        • 重新创建并排序文件
    • Query
      • 没有专门的查询语言,通常使用脚本语言查询
      • 有些开始支持sql查询
      • 有些可以使用MapReduce代码查询
    • MapReduce
      • 不是Hadoop的MapReduce,概念相关
      • 可进行数据的处理查询
    • Sharding
      • 一种分区模式
      • 可以复制分片
        • 有利于灾难恢复
  • NoSql分类

    分类举例典型应用场景
    键值存储数据库Redis,MemcacheDB,Voldemort内容缓存等
    列存储数据库Cassandra,HBase应对分布式存储的海量数据
    文档型数据库CouchDB,MongoDBweb应用
    图数据库Neo4j,InfoFrid,Infinite,Graph社交网络,推荐系统,专注于构建关系图谱
  • HBase概述

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

    • 增量数据-时间序列数据
      • 高容量,告诉写入
    • 信息交换-消息传递
      • 高容量,高速读写
    • 内容服务-web后端应用程序
      • 高容量,高速读写
  • HBase物理架构-概述

    • HBase采用Master/Slave架构

    • HBase物理架构-HMaster

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

      • RegionServer负责管理维护Region

      在这里插入图片描述

    • HBase物理架构-Region和Table

    在这里插入图片描述

    • HBase逻辑架构-Row

      • RowKey(行键)是唯一的并已排序

      • Schema可以定义合适插入记录

      • 每个Row都可以定义自己的列,即使其他Row不适用

        • 相关列定义为簇
      • 使用唯一时间戳维护多个Row版本

        • 在不同版本中值的类型可以不同
      • HBase数据全部以字节存储

      在这里插入图片描述

    • HBase数据管理

      • 数据管理目录

        • 系统目录表hbase:meta
          • 存储元数据等
        • HDFS目录中的文件
        • Servers上的region实例
      • HBase数据在HDFS上

        • 可以通过HDFS进行修复File
        • 修复路径
          • RegionServer>Table>Region>RowKey>列簇

      在这里插入图片描述

    • HBase架构特点

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

      • HBase Shell是一种操作HBase的交互模式

        • 支持完整的HBase命令集

          命令类别命令
          Generalversion, status, whoami, help
          DDLalter, create, describe, disable, drop, enable, exists, is_disabled, is_enabled, list
          DMLcount, delete, deleteall, get, get_counter, incr, put, scan, truncate
          Toolsassign, balance_switch, balancer, close_region, compact, flush, major_compact, move, split, unassign, zk_dump
          Replicationadd_peer, disable_peer, enable_peer, remove_peer, start_replication, stop_replication
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值