1.1为什么要设计这么一套新的存储架构

 现在互联网时代,不管生活中存在什么问题,我们都想通过互联网来快速的检索到答案,并且希望查到的结果是有用的。在这个海量数据的时代,对于之前的关系型数据库可采取的措施就是把收集的数据删减后保存,比如保存近N天的数据,但是这样没办法存储几年甚至更长时间的数据,也就无法对用户历史的行为进行分析。因此新的存储架构就产生了,hadoop擅长存储任意的、半结构化的甚至是非结构话的数据,它给用户提供了数据存储的无限空间,支持用户在前挡的时候存储和获取数据,对大文件存储、批量访问和流式访问做了优化。

1.2RDBMS的问题

RDBMS在存储保留用户、产品、订单订单信息的时候提供持久化的服务是很合适的。但是对于数据迅速增长的情况,RDBMS就不大够用了。
RDBMS提供了ACDI的特性,代表用户数据是强一致性,这样的如果你的用户量特别多,那么共享的数据库服务器的压力也会越来越大,增加服务器可以有一定作用,但是对中央数据库CPU和I/O负载还是有一定压力。我们减轻压力的第一步增加并行读取的从服务器,将读写分离,因为DB写的请求远少于读的请求,用户大多数是浏览操作,但是如果用户量持续上升,这样也会收到性能限制。接下来就需要增加缓存了,把都操作放在内存中缓存数据的系统里,但是这样的问题无法保证数据的一致性,因为DB不会主动去更新缓存中的数据,这样可以缓解读操作的压力,但是写操作还是没有解决。如果负载在几个月内会增加一个数量级这时候我们用RDBMS的代价就比较昂贵了,MySQL这种数据库适合于特定场景业务,而且短期不会被取代,只是我们开发一个新产品,能预料到系统扩展速度很快,那我们在设计段就应该希望所有功能都可以用。

1.3NoSQL(Not-Only-SQL)

RDBMS很适合事务性操作,但不适合超大规模的数据分析处理,而且它出现等待和死锁的频率与事务和并发的增加并不是线性关系,Hbase可以满足这些需求。
NoSQL对系数矩阵、宽表、列式存储的支持使数据在存储的时候无需范式化,也可以避免查询时用开销很大的JOIN操作。使用智能的逐渐可以控制数据怎么去存储和存储到什么位置。可以使用行键的部分内容去进行检索,和字典序坐部分为头的索引效果相似,这样的设计是性能不会因为数据增长而下降。

1.4结构

表、行、列和单元格

最基本的单位是**列**。一列或多列形成一**行**,由唯一的**行键**(rowKey)来确定存储。反过来,一个**表**中有若干行,其中每列可能有多个版本,在每一个**单元格**中存储了不同的值。

所有的行键按照字典序进行排序存储

行键排序可得到想RDBMS的主键索引一样的特性,意味着行键总是唯一的,并且只出现一次,否则就是在更新同一行。


一行由若干列组成,这若干列又构成了一个列族,这有助于构建数据局部边界和其他一些特性。

自动分区

在HBase中扩展和负载均衡的基本单元是region,region的本质是以行键排序的连续存储区间,如果region过大,系统就动态拆分,反之即使合并,减少存储文件数量。
region拆分和服务相当于其他系统提供的**自动分区**。当一个服务器出现故障后,该服务器上的region可以快速回复,并获得细粒度的负载均衡,因为当服务于某个region的服务器当负载过大、发生错误或被停止导致不可用时,系统会将该region移到其他服务器。

实现

数据存储在**存储文件**中,成为HFile。文件内部由连续块组成,块的索引信息存储在文件尾部。当把HFile打开加载到内存的时候,索引信息会先加载到内存。每一个HFile都有一个快索引,通过以磁盘查找就可以实现查询。现在内存的块索引中进行二分查找,确定可能包含给定键的块,然后读取磁盘块找到实际要找的键。
每次更新数据的时候,都先将数据记录在提交日志中(HBase叫预写日志),然后才会把这些数据写入内存的memstore中。一旦内存中保存的写入数据累计超过了一个给定的大小,系统就把这些数据移出内存作为HFile文件写到磁盘中,数据移出内存之后系统会丢弃对应的提交日志,只保留为持久化的到磁盘的日志,系统将数据移出memstore写入磁盘的似乎和,不必阻塞系统的读写,通过滚动内存中的memstore就剋有实现。
HBase中有三给主要组件:客户端库、一台主服务器、多台region服务器。可以动态增加移除region服务器,适应不断变化的负载。主服务器主要负责用Apache Zookeeper 为region服务器分配region,Apache Zookeeper 是一个可靠的、高可用的、持久化的分布式协调系统。

HBase权威指南阅读——第一章相关推荐

  1. Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑

    欢迎访问我的个人博客:https://midoq.github.io/ 引言 最近做边缘计算项目,因为没有基础,所以首先学习Kubernetes.感觉系统的中文入门资料比较少,只找到<Kuber ...

  2. 《HTTP权威指南》第一章学习总结

    吃透HTTP权威指南 第一章 定个小目标,吃透这本书,每天最少一章 CSDN 见 HTTP 因特网的多媒体信使 这一小节没啥好说的···一些基本的介绍 Web客户端和服务器 Web服务器一般被称为HT ...

  3. HTTP概述【HTTP权威指南-翻译-第一章】

    HTTP概述 下一个阶段,我们马上要进入javaweb开发的学习,而web开发是围绕HTTP协议进行的,所以对于它的理解程度决定了我们任意一门语言对于web开发的理解深度. http:因特网的多媒体速 ...

  4. 《HBase权威指南》一导读

    前 言 HBase权威指南 你阅读本书的理由可能有很多.可能是因为听说了Hadoop,并了解到它能够在合理的时间范围内处理PB级的数据,在研读Hadoop的过程中发现了一个处理随机读写的系统,它叫做H ...

  5. HTML5 权威指南第 10 章 文档分节 学习笔记

    HTML5 权威指南第 10 章 文档分节 学习笔记 第 8 章 标记文字 内容从从文字出发,专注如何将单体内容正确的呈现出来:第 9 章 组织内容 内容从段落出发,专注如何将单体内容合理的放在段落中 ...

  6. 《Hadoop权威指南》第二章 关于MapReduce

    <Hadoop权威指南>第二章 关于MapReduce 目录 使用Hadoop来数据分析 横向扩展 注:<Hadoop权威指南>重点学习摘要笔记 1. 使用Hadoop来数据分 ...

  7. HBase权威指南 高清中文版 PDF(来自linuxidc)

    内容提要 <HBase权威指南>由乔治(Lars George)著,探讨了 如何通过使用与HBase高度集成的Hadoop将 HBase的可 伸缩性变得简单:把大型数据集分布到相对廉价的商 ...

  8. JavaScript权威指南 第11章JavaScript标准库

    JavaScript权威指南 第11章JavaScript标准库 第11章 JavaScript标准库 11.1 集合与映射 11.1.1 Set类 11.1.2 Map类 11.1.3 WeakMa ...

  9. JavaScript权威指南 第15章 网络编程 第三部分

    JavaScript权威指南 第15章 网络编程 第三部分 可伸缩矢量图形 15.7.1 在HTML中使用SVG 15.7.2 编程操作SVG 15.7.3 通过JavaScript创建SVG图片 1 ...

  10. IDA Pro 权威指南阅读摘要1

    IDA Pro 权威指南阅读摘要1 文件加载 使用File->Open命令打开一个新文件时,会看到加载对话框. Binary File (二进制文件)是加载类型列表的最后一个选项,它是IDA加载 ...

最新文章

  1. c语言 求sin近似值,用泰勒公式求sin(x)的近似值
  2. Mybatis传多个参数(三种解决方案)
  3. Windows保护模式学习笔记(十二)—— 控制寄存器
  4. 检测动态生成的单选按钮和jQuery的变化
  5. componentsJoinedByString 和 componentsSeparatedByString 的方法的区别
  6. 应用系统日志采集解决方案
  7. html网页和cgi程序编程,CGI 编程方式学习
  8. Cocoapods的Podfile常见语法总结
  9. 密文恢复出明文的过程称为_整流二极管的反向恢复过程图解
  10. 蓝牙 查询码 android,android bluetooth UUID蓝牙查询表
  11. 【vue】 vue中的query 路由传值的方式
  12. luogu4093 序列 (cdq分治优化dp)
  13. ubuntu独立显卡驱动
  14. 智能园区中的身份识别的原理是什么?
  15. 通往财富自由之路详细笔记(11)
  16. Python 他来了,他来了!
  17. window.print打印部分无法显示
  18. 电影网站 php asp,moviewebsite 这是一个电影网站的源码,基于asp技术实现.仅供交流学习 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  19. Oh My ZSH让你的终端美如画
  20. 计算机教师继续教育心得,教师继续教育学习心得体会范文(精选8篇)

热门文章

  1. javaWeb毕业设计项目完整源码附带论文合集免费下载
  2. 树莓派4B之雨滴雨水传感器模块(python3)
  3. MindMaster for Mac(亿图思维导图)
  4. c语言根号11取值两位小数,用C语言将一个数开根号后再取倒数的方法
  5. 易语言静态连接器提取_vc98linker修复静态编译
  6. PDF如何转换成jpg图片
  7. 【190111】VC+Access工程信息管理系统源代码
  8. 【算法升级】仅有85K个参数的开源人脸检测算法
  9. ansys软件linux安装教程,ansys 15 for linux 安装纪录
  10. 应用回归分析第五版电子书_应用回归分析 R语言版_何晓群著_2017年