Hbase是数据库

特点:

  1.面向列:Hbase是面向列的存储和权限控制,并支持独立索引。列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。

  2.多版本:Hbase每一个列的存储有多个Version(这个版本是针对列簇来说的)。

  3.稀疏性:为空的列不占用存储空间,表可以设计得非常稀疏。

  4.扩展性:底层依赖HDFS。

  5.高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失,Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且Hbase底层使用HDFS,HDFS本身也有备份。

  6.高性能:底层的LSM数据结构和Rowkey有序排列等架构上的独特设计,使得Hbase具有非常高的写入性能。region切分,主键索引和缓存机制使得Hbase在海量数据下具备一定的随机读取性能,该性能真对Rowkey的查询能到达到毫秒级别。

数据量

  十亿级别的行

  百万级别的列

速度快的原因

  充分利用内存

  使用了LSM结构

  缓存机制

  文件是顺序读的

数据模型

  rowkey

    相当于MySql中的主键,唯一标识一行记录

    rowkey是字典顺序

    rowkey的长度最长是64k,但是一般推荐10-100字节

  colunm family

    一组列的集合

    列簇必须作为表的schema定义给出

    列簇是权限,存储的最小单元

  qulifier

    列

    可以动态的,随机的插入

    表定义之后没有限制列,随着值得插入也把列插入

    列必须归属某一个列簇

  timestamp

    时间戳,64位,精度是毫秒

    起版本号的作用,一个cell中可以存多个版本的数据

    时间戳可以自己当以,但是一般不推荐!!

  cell

    存储数据的最小单元(逻辑概念,实际存储中并没有这个)

    存储的是K-V格式的数据

      K:  rowkey + colunm family + qulifier + timestamp

      V:  value

    hbase的cell存储数据的时候没有类型的区分,存放的都是字节数组

架构

  hbase是主从架构

  角色

    client

      操作hbase的入口,命令行,API,并维护客户端缓存

    zookeeper

      保证任何时刻集群中有且仅有一台active的hmaster

      存储所有region的寻址入口,所有regoin元数据存储在哪一台regionserver

      监控regonserver的上线和下线信息,并实时通知Hmaster

      存储相关表的schema数据

    Hmaster

      分配region

      保证整个集群中的所有regionserver的负载均衡

      当发现某一台regoinserver宕机之后,重新分配上面的region

      当region变大的时候,Hmaster去分配region到哪一台regionserver

    HRegionServer

      负责接受客户端的读写请求,处理对于region的IO

      当某一个region变大之后,负责等分两个region

    region

      相当于表的概念,一张表至少对应一个region

      当表的数据过大的时候,region会发生裂变

    store

      相当于列簇

      角色:

        memstore

          位于内存

          每一个store有一个memstore

        storefile

          磁盘的存储空间,将数据持久化的存储位置

          每一个region有一个或者多个storefile

          storefile可以进行合并操作

      存储结构:使用了LSM的数据模型

    WAL:

      write ahead log (预写日志)

      防止数据丢失

      先写内存,再向HDFS上溢写,但是是异步的方式

        先写到memstore,然后memstore达到一个阈值,memstore到一个消息队列中,原来的regon会生成一个新的memstore,再通过这个消息队列,向storefile中写数据,异步的方式。

读写流程

  读流程

    1、客户端向zookeeper中发送请求

    2、从ZK中拿到metadata的存储节点

    3、去存储metadata的节点获取对应的region的所在位置

    4、访问对应得regon获取数据

    5、先去memstore中查询数据,如果有,直接返回

    6、如果没有查询到结果,去blockcache查找数据,如果找到,直接返回

    7、如果没有找到,就去storefile中查找数据,并将查询到得结果缓存到blockcache中,方便下一次查询

    8、将结果返回给客户端

    注意:blockchache是缓存,有大小限制,会有淘汰机制,默认将最早得数据淘汰

  写流程

    1、client向ZK发送请求

    2、从ZK中拿到metadata得存储节点

    3、去存储metadata的节点获取对应的region所在的位置

    4、访问对应的region进行写数据

    5、首先会向WAL中写数据,写成功之后才会存储到memstore

    6、当memstore中的数据量达到阈值之后,进行溢写,溢写成storefile

    7、store file是一个个的小文件,会进行合并(minor(部分合并)   ,  major(一个regon下面的都进行合并))

    8、store file 是对Hfile的封装,Hfile是实际存储在HDFS上的数据文件

大数据之路Week10_day01 (Hbase总结 II)的更多相关文章

  1. 大数据之路week03--day05(线程 II)

    今天,咱们就把线程给完完全全的结束掉,但是不是说,就已经覆盖了全部的知识点,可以说是线程的常见的问题及所含知识基本都包含. 1.多线程(理解) (1)JDK5以后的针对线程的锁定操作和释放操作 Loc ...

  2. 大数据学习系列之—HBASE

    hadoop生态系统 zookeeper负责协调 hbase必须依赖zookeeper flume 日志工具 sqoop 负责 hdfs dbms 数据转换 数据到关系型数据库转换 大数据学习群119 ...

  3. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  4. 大数据-05-Spark之读写HBase数据

    本文主要来自于 http://dblab.xmu.edu.cn/blog/1316-2/ 谢谢原作者 准备工作一:创建一个HBase表 这里依然是以student表为例进行演示.这里假设你已经成功安装 ...

  5. 胖子哥的大数据之路(7)- 传统企业切入核心or外围

    一.引言 昨天和一个做互联网大数据(零售行业)的朋友交流,关于大数据传统企业实施的切入点产生了争执,主要围绕两个问题进行了深入的探讨: 问题1:对于一个传统企业而言什么是核心业务,什么是外围业务? 问 ...

  6. 胖子哥的大数据之路(6)- NoSQL生态圈全景介绍

    引言: NoSQL高级培训课程的基础理论篇的部分课件,是从一本英文原著中做的摘选,中文部分参考自互联网.给大家分享. 正文:  The NoSQL Ecosystem 目录 The NoSQL Eco ...

  7. 胖子哥的大数据之路(四)- VisualHBase功能需求框架

    一.引言 大数据在结构化数据存储方面的应用需求越来越明确,但是大数据环境下辅助开发工具的不完善,给数据库管理人员和开发人员带来的不变难以言表,基于此创建了开源项目VisualHBase,同时创建了Vi ...

  8. 大数据时代数据库-云HBase架构&生态&实践

    业务的挑战 存储量量/并发计算增大 现如今大量的中小型公司并没有大规模的数据,如果一家公司的数据量超过100T,且能通过数据产生新的价值,基本可以说是大数据公司了 .起初,一个创业公司的基本思路就是首 ...

  9. 大数据之路week06--day07(Hadoop生态圈的介绍)

    Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...

  10. 大数据之路week04--day06(I/O流阶段一 之异常)

    从这节开始,进入对I/O流的系统学习,I/O流在往后大数据的学习道路上尤为重要!!!极为重要,必须要提起重视,它与集合,多线程,网络编程,可以说在往后学习或者是工作上,起到一个基石的作用,没了地基,房 ...

随机推荐

  1. 【COS 加码福利】COS 用户实践有奖征文,等你来投稿!

    COS用户实践征文活动火热进行中,本次征集主题为:如何在生态场景下使用 COS? 优质文章将有机会被编入腾讯云官方文档库,供广大用户学习参考.更有多重好礼等你来拿,速来围观投稿吧! 投稿说明: 1.投 ...

  2. Ubuntu sudo nopasswd方法

    1 运行 visudo 2 假设用户名为yourname, 则在最后一行添加: # User privilege specificationroot ALL=(ALL:ALL) ALL# Member ...

  3. Mac 配置多版本JDK

    @ 目录 前言 一.下载并安装多个JDK版本 二.配置环境变量 三.切换JDK版本 四.下篇预告!!! 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i. 提示:以下是本篇文章正文 ...

  4. Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌入式/国产OS等

    一.前言 首先泼一盆冷水,在不同的电脑上实现完完全全的帧同步理论上是不可能的,市面上所有号称帧同步的播放器,同一台电脑不同拼接视频可以通过合并成一张图片来绘制实现完完全全的帧同步,不同电脑,受限于网络 ...

  5. Qt编写安防视频监控系统54-轮询配置

    一.前言 视频监控系统中少不了用到视频轮询,按照设计的基本原则,先满足基本的用户需求,稳定跑起来,再去折腾更复杂的应用场景,于是本系统也做了个基本的视频轮询功能,可以设置轮询方案,给某个轮询方案设置轮 ...

  6. 创建用于预测序列的人工智能模型,用Keras Tuner探索模型的超参数。

    上一篇:<创建用于预测序列的人工智能模型(五),调整模型的超参数> 序言:在完成初步的模型研发后,接下来的重点是探索和优化超参数.通过合理调整超参数(如学习率.动量参数.神经元数量等),可 ...

  7. WPF中实现弹出进度条窗口

    实现功能: 模拟一个任务开始执行,在窗口弹出一个进度条,展示执行进度,执行完成弹出提示框.例如做数据查询时,如果查询需要一段时间,操作人员可以很好的知道是否查询完成. 1. 设计进度条弹出窗口 进度条 ...

  8. Python 问题汇总

    一. Python 环境问题 使用pytest 在terminal中执行脚本调用python3.9, 而使用pycharm 的virtualenv 执行脚本调用的是python3.10, 由于环境不一 ...

  9. IIS上开启反向代理实现Vue项目接口跨域处理

    通常情况下的Vue应用都使用Nginx部署,Nginx有专门的反向代理设置,但若将Vue应用部署在IIS中,针对Vue应用中设置的接口跨域,IIS需要进行反向代理设置. 跨域的设置分为开发环境和生产环 ...

  10. IDEA神器插件-40款

    IDEA 插件安装 步骤 IDEA里面,选择打开 File --> Settings --> Plugins 在Plugins里面, 可以搜索需要的插件 (下面的标题),然后安装 如下图: ...