zoukankan      html  css  js  c++  java
  • HBase学习1(hbase基础)

    认识NoSQL

    NoSQL:泛指非关系数据库(Not only SQL)
    NoSQL两重要特征:使用硬盘和把随机存储器作为存储载体

    NoSQL分类(按照存储格式)
    1)键值(Key-Value)存储数据库
    2)列存储数据库
    3)文档型存储数据库
    4)图形数据库

    目前比较流行的NoSQL数据库有Casssandra,Lucene,Neo4J,MongoDB和HBase

    HBase(Hadoop Database)概念

    1)是一个高可靠,高性能,面向列,可伸缩的分布式数据库系统
    2)它使用HDFS作为底层文件存储系统,在其上运行MapReduce批量处理数据,使用ZooKeeper作为协同服务组件
    3)主要用于存储非结构化和半结构化的松散数据

    HBase表的特点

    1)大:一个表可以有十亿行,上百万列
    2)无模式
    3)面向列:面向列的存储和权限控制
    4)稀疏:对于空(null)的列,不占用存储空间
    5)数据多版本:每个单元中的数据可以有多个版本
    6)数据类型单一:hbase中数据都是字符串,没有类型

    HBase体系架构

    image

    1)Client

    HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信

    • 管理类操作:Client与HMaster进行RPC
    • 数据读写类操作:Client与HRegionServer进行RPC

    Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问

    • -ROOT-是系统内部表:ROOT里面存储了对应的.META地址和开始结束信息
    • .META.是系统内部表:.META.里面同样存储了对应的HRegion地址和开始结束信息。

    2)Zookeeper

    1)保证任何时候,集群中只有一个maser
    2)存储所有Region的寻址入口
    3)实时监控Region server的上线和下线信息,并实时通知master
    4)存储hbase的schema和table的元数据
    5)存储了root表的地址(更快查询到那张表有数据)和Hmaster的地址(确定有哪些Hmaster)

    3)HMaster

    1)为Region server分配region,记录region在哪台Hregion server上
    2)新机器加入时,管理HRegion Server的负载均衡,调整Region分布
    3)发现失效HRegion Server 并将其上的Regions迁移
    4)管理用户对Table的增、删、改、查操作

    4)HRegionServer

    1)HRegion server 维护 region ,处理对这些 region 的 IO 请求,,向HDFS文件系统中读写数据
    2)HRegion server 负责切分在运行过程中变得过大的 region

    • HRegionServer包含一个HLog部分和HRegion部分(多个HRegion)
    • HLog部分保存着用户操作hbase的日志。用户的操作都会先记录到HLog中,然后再保存到HRegion中
    • HRegion是存储的实际数据,它包含了多个HStore
    • HStore:每一个列族都会形成一个HStore,它由MemStore和多个HFile组成
    • MemStore驻留在内存中,当数据保存时,数据会先存储到MemStore中,然后根据用户设定的显式刷写或隐式刷写模式,将数据再保存到HFile中。默认的存储模式是隐式存储
    • HLog的作用
    • HFile负责的是实际数据的存储了,它是HBase中的最小单位

    HBase数据模型(物理模型和逻辑模型)

    HRegion

    HRegionServer内部管理了一系列的HRegion对象

    • Hbase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据
    • Hregion由多个HStore组成

    Hstore(包含Memstore和storefile两部分)

    • 每个HStore对应了table中的一个column family(CF)的存储
    • Hstore包括位于内存中的memstore和位于磁盘的storefile
    • MemStore:用户写人的数据先回放入memstore,当memstore满了以后会flush成一个storefile
    • StoreFiles:底层实现是Hfile,当storefile文件的数量增长到一定阀值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,将多个storefile合并成更大的storefile
    • 客户端检索数据,先在memstore找,找不到再找storefile

    Hlog

    在每次用户操作写入memstore的同时,也会写一份数据到HLog文件中,Hlog文件定期会滚动出新的,并删除旧的文件

    Hfile

    Hfile文件是不定长的,长度固定的只有两块

    Row key(行键)

    • row key是用来检索记录的主键

    • 访问HBASE table中的行,只有三种方式:
      1)通过单个row key访问
      2)通过row key的range(正则)
      3)全表扫描

    • Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes)

    • 在HBASE内部,row key保存为字节数组

    • 存储时,数据按照Row key的字典序(byte order)排序存储

    Column Family(列族)

    • HBASE表中的每个列,都归属于某个列族
    • 列族是表的schema的一部分(而列不是),必须在使用表之前定义
    • 列名都以列族作为前缀。例如courses:history,courses:math都属于courses 这个列族。

    TimeStamp(时间戳)

    • HBASE 中通过rowkey和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引
    • 时间戳的类型是64位整型
    • 时间戳可以由HBASE(在数据写入时自动 )赋值,也可以由客户显式赋值
    • 每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面
    • 为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段 时间内的版本
  • 相关阅读:
    重复的listen port引发的问题
    Win10开始运行不保存历史记录原因和解决方法
    意识到const版本函数的重要性
    人物访谈1
    人物访谈2
    读《浪潮之巅》有感
    测试作业
    读《活出生命的意义》有感
    价值观作业
    关于C语言的问卷调查
  • 原文地址:https://www.cnblogs.com/wujiadong2014/p/6192541.html
Copyright © 2011-2022 走看看