厦门大学数据库实验室NoSQL系列学习之

Slides:



Advertisements
Similar presentations
课程介绍 (PPT版本号:2016年1月24日版本) 温馨提示:编辑幻灯片母版,可以修改每页PPT的厦大校徽和底部文字 林子雨
Advertisements

分布式系统 Distributed Systems 第 13 讲 NoSQL Lecture 13 NoSQL
中华字库的云输入法 王勇 基础软件国家工程研究中心
電子商務:數位時代商機‧梁定澎總編輯‧前程文化 出版
DATE: 14/10/2009 陳威宇 格網技術組 雲端運算相關應用 (Based on Hadoop)
Big Data Ecosystem – Hadoop Distribution
大數據的學習路線 目前做不到的:機率性太高的(博奕) 大數據的核心:預測 預測來自於:分析及樣本 樣本的產生及收集 樣本的儲存 樣本的處理
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
“大云”大数据平台及应用 中国移动通信研究院 郭磊涛 2013年11月.
穆公(朱金清 微博:淘穆公 阿里HBase业务设计实践 穆公(朱金清 微博:淘穆公
E-Mapreduce培训系列 基本介绍.
台灣積體電路公司 基礎策略分析 班級:夜二技企管四甲 指導老師:簡俊成 組員:鄭朝明 6A 陳舜民 6A 郭名嚮6A 徐義翔 6A
Bilibili的存储实战(bfs) —— 分布式小文件存储.
回顾与展望:高州经验与广东医改 省卫生计生委、省医改办 黄 飞 2015年7月3日.
云计算学习报告 报告人: 陈 霁 大规模数据处理软件Apache Hadoop.
巨量資料平台: Hadoop的生態系.
MySQL 使用者名稱:USERNAME (上限16個字元)
《大数据技术原理与应用》 课程介绍 (2016春季学期)
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
第11章 海量信息存储 主讲:刘方明 副教授 华中科技大学计算机学院
云梯的多namenode和跨机房之路
HADOOP的高能物理分析平台 孙功星 高能物理研究所/计算中心
数据采集与Hadoop框架 报告人:黄文君 导 师:王华忠 BEA Confidential.
贴近教学 服务师生 方便老师.
第8章 机床操作 主讲:臧红彬 博士.
为教师开展大数据课程教学提供全方位、一站式服务
基于hadoop的数据仓库技术.
發展東華特色課程 期末成果發表 呂進瑞 國立東華大學財金系.
HBase 簡介 : 資料格式與運作架構  Hubert 范姜-亦思科技.
基于hadoop与hive的大数据分析体系构建
第5章 NoSQL数据库 (PPT版本号:2017年2月版本)
NoSQL分布式数据库.
Alibaba 数据库高可用架构 Alibaba
分布式系统中的关键概念及Hadoop的起源、架构、搭建
第2章 大数据处理架构Hadoop (PPT版本号:2017年2月版本)
快速学习环境搭建 安装前预备工作(Linux相关配置) 实操演示(hadoop、hbase为例) 总结&练习题(课后练练手)
云计算之分布式计算.
Goolge的云计算 分布式数据表BigTable.
基于Hadoop的数据仓库Hive.
kCloudStorage - 基于云技术的廉价冗余天文海量数据存储
分散式資料庫管理系統 與主從式系統 資料庫系統設計實務與管理,5e
《大数据技术原理与应用》 第七章 MapReduce (2016春季学期) 林子雨 厦门大学计算机科学系 主页:
第九讲 Hadoop架构再探讨 (2016春季学期)
CHAPTER 6 認識MapReduce.
开源云计算系统简介 电子工业出版社 刘鹏主编《云计算》教材配套课件11.
HBase简介与实践分享 剑英.
Hadoop平台與應用規劃實作 報告者:劉育維.
《大数据技术原理与应用》 第十二讲 图计算 (2016春季学期)
Hadoop.
基于大数据的物流资源整合 福建师范大学协和学院 沈庆琼.
Homework 1(上交时间:10月14号) 倒排索引.
Cloud Computing Google云计算原理.
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
Windoop操作步驟 於作業系統Windows 10 專業版.
CascaDB/TokuDB性能与适用场景分享
An Introduction to Cloud RDBMS
软件工程基础 云计算概论 刘 驰.
大数据介绍及应用案例分享 2016年7月 华信咨询设计研究院有限公司.
大数据与物流 沈庆琼 物流教研室.
天涯分布式数据库 云计算部.
斯坦福大学调研 蒋达晟.
基于大数据平台数据管理研究 何家乐 2013年7月 中国科学院高能物理研究所.
CH03 行銷資訊系統資料庫模組--資料庫概論
应用型本科院校大数据专业 实践教学环境改革与探索
中華大學 資訊工程學系 報告人:資訊工程學系 許慶賢 系主任.
第六類 資料庫備份與回復.
——向刑事案件被告人家属调查取证的伦理性讨论
Zookeeper的应用 Hbase Kafka Twitter Storm Spark—mesos+zookeeper.
大数据应用人才培养系列教材 大数据实践 刘 鹏 张 燕 总主编 袁晓东 主编 黄必栋 副主编.
Presentation transcript:

厦门大学数据库实验室NoSQL系列学习之 列族数据库HBase架构介绍 报告人:谢荣东 指导老师:林子雨 2015年7月10日

目录 遇到的问题 1、列族数据库简介 2、Hbase架构简介 3、总结

列族数据库 Part 1

基本概念 列族数据库 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 行式数据库 数据以行相关的存储体系架构进行空间分配 适合与小批量的数据处理,常用于联机事务型数据处理 列式数据库 以列相关存储架构进行数据存储的数据库 适合与批量数据处理和即席查询 EmpId Lastname Firstname Salary 1 Smith Joe 40000 2 Jones Mary 50000 3 Johnson Cathy 44000 数据格式: 1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000; 数据格式: 1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;

HBase架构简介 Part 2

HBase介绍 历史回顾 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable:一个结构化数据的分布式存储系统”。 HBase – Hadoop Database,具有高可靠性、高性能、面向列、可伸缩等特点,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBASE是存储 基于HDFS 实时随机读写 HBase介绍 HBase定位 2018/11/10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HBASE是存储 基于HDFS 实时随机读写 仿照Bigtable的论文制造 实时随机读写补充HDFS的不足 HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 此外,Pig和Hive还为HBase提供了高层上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。 语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

HBase介绍 HBase特性 线性扩展 行操作的强一致性,是CP系统 自动分表 支持MapReduce 2018/11/10 HBase介绍 HBase特性 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 线性扩展 行操作的强一致性,是CP系统 自动分表 支持MapReduce Java,Thrift,REST-ful接口 从一开始就知道hbase是CAP中的CP系统,即hbase是强一致性的.我原来一直以为hbase的强一致性是因为底层的HDFS写入时,必须所有副本都写入成功才能返回.最近才想明白,hbase之所以是CP系统,实际和底层HDFS无关,它是CP系统,是因为对每一个region同时只有一台region server为它服务,对一个region所有的操作请求,都由这一台region server来响应,自然是强一致性的.在这台region server fail的时候,它管理的region failover到其他region server时,需要根据WAL log来redo,这时候进行redo的region应该是unavailable的,所以hbase降低了可用性,提高了一致性.设想一下,如果redo的region能够响应请求,那么可用性提高了,则必然返回不一致的数据(因为redo可能还没完成),那么hbase就降低一致性来提高可用性了. C(Consistency):一致性 A:(Availability):可用性 P(Tolerance of Network Partition):分区容忍性

Table Region ColumnFamily Row Column Version Value CELL Hbase数据模型 数据模型 2018/11/10 Hbase数据模型 数据模型 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Table Region ColumnFamily Row Column Version Value 表 表是在schema声明的时候定义的。 Region 表的一段 Column Family 在Hbase是column family一些列的集合。一个column family所有列成员是有着相同的前缀。比如,列courses:history 和 courses:math都是 column family:courses的成员.冒号(:)是column family的分隔符,用来区分前缀和列名。column 前缀必须是可打印的字符,剩下的部分(称为qualify),可以又任意字节数组组成。column family必须在表建立的时候声明。column就不需要了,随时可以新建。 在物理上,一个的column family成员在文件系统上都是存储在一起。因为存储优化都是针对column family级别的,这就意味着,一个colimn family的所有成员的是用相同的方式访问的。 Cells A {row, column, version} 元组就是一个Hbase中的一个 cell。Cell的内容是不可分割的字节数组。 尽管在概念视图里,表可以被看成是一个稀疏的行的集合。但在物理上,它的是区分column family 存储的。新的columns可以不经过声明直接加入一个column. 值得注意的是在上面的概念视图中空白cell在物理上是不存储的,因为根本没有必要存储。因此若一个请求为要获取t8时间的contents:html,他的结果就是空。相似的,若请求为获取t9时间的anchor:my.look.ca,结果也是空。但是,如果不指明时间,将会返回最新时间的行,每个最新的都会返回。 行 row key是不可分割的字节数组。行是按字典排序由低到高存储在表中的。一个空的数组是用来标识表空间的起始或者结尾。 版本 一个 {row, column, version} 元组是Hbase中的一个cell .但是有可能会有很多的cell的row和column是相同的,可以使用version来区分不同的cell. rows和column key是用字节数组表示的,version则是用一个长整型表示。这个long的值使用 java.util.Date.getTime() 或者 System.currentTimeMillis()产生的。 在Hbase中,版本是按倒序排列的,因此当读取这个文件的时候,最先找到的是最近的版本。 CELL

HBase架构设计 总体结构 Master RegionServer HDFS ZooKeeper Region之上的操作 2018/11/10 HBase架构设计 总体结构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Master Region之上的操作 Put/Get不经过Master RegionServer Region之下的操作 HDFS HFile HLog ZooKeeper 状态信息 HMaster HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作: 1.       管理用户对Table的增、删、改、查操作 2.       管理HRegionServer的负载均衡,调整Region分布 3.       在Region Split后,负责新Region的分配 4.       在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移 HRegionServer HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。 Client HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC Zookeeper [root-region-server, rs, unassigned, table, master, shutdown] Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,见下文描述, Watcher

HBase架构设计 RegionServer结构 2018/11/10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。 Store 一个Store包含了一个MemStore和若干个StoreFile(HFile).一个Store可以定位到一个column family中的一个region. MemStore MemStores是Store中的内存Store,可以进行修改操作。修改的内容是KeyValues。当flush的是,现有的memstore会生成快照,然后清空。在执行快照的时候,Hbase会继续接收修改操作,保存在memstore外面,直到快照完成。 HRegionServer HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。 HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。下图描述了Compaction和Split的过程: 在理解了上述HStore的基本原理后,还必须了解一下HLog的功能,因为上述的HStore在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

HBase基本操作 与RDBMS的区别 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HBase 数据类型:HBase只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符串。而关系数据库有丰富的类型和存储方式。 RDBMS 数据类型:关系数据库有丰富的类型和存储方式。 数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系 数据操作:通常有各式各样的函数和连接操作。  

HBase基本操作 与RDBMS的区别 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HBase 存储模式: HBase是基于列存储的,每个列族都由几个文件保存,不同的列族的文件时分离的 RDBMS 存储模式:基于表格结构和行模式保存的  数据维护: HBase的更新操作不应该叫更新,它实际上是插入了新的数据 数据维护:传统数据库是替换修改 可伸缩性: Hbase这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松增加或减少硬件的数量,并且对错误的兼容性比较高。 可伸缩性:通常需要增加中间层才能实现类似的功能

2018/11/10 HBase基本操作 创建表 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 创建表:“create 'blog_user','userInfo'”

2018/11/10 Hbase基本操作 插入数据 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 插入数据:“ put‘blog_user’,‘www.aboutyun.com’,‘userInfo:user_Name’,‘aboutyun’” 上面我们看到了 1所示是什么,我们在传统数据块里面根本没有,这是nosql所特有的,是一个rowkey,是系统自带的,也是nosql中一条记录的唯一标识。但是这个唯一标识,有跟我们的传统数据库是有所差别的。如图1所示,“记录1”便是rowkey. 2所示是我们插入的列user_Name,这也是最难以理解的地方,列竟然可以插入。并且其“value”为3即'aboutyun'

Hbase基本操作 插入数据 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 我们会看到 1为rowkey,插入数据’www.aboutyun.com‘, 2为列族下面列的名字user_Name 3我们并没有在设计的添加这个列族,所以这个是系统自带的,这个是记录的操作时间,以时间戳的形式放到hbase里面。 4是我们插入的user_Name的值

Hbase基本操作 插入数据 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 再插入列Password:“put'blog_user','www.aboutyun.com','userInfo:user_Password','aboutyun'” 到这里,我们看到两行记录,传统数据块认为这是两行数据,对于nosql,这是一条记录。

Hbase基本操作 删除数据 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 删除单元格数据 delete 'blog_user','www.aboutyun.com','userInfo:user_Password'

总结 Part 3

总结 总结 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 列式数据库从一开始就是面向大数据环境下数据仓库的数据分析而产生 优点: 极高的装载速度 适合大量的数据而不是小数据 实时加载数据仅限于增加 高效的压缩率,不仅节省储存空间也节省计算内存和CPU 非常适合做聚合操作 缺点: 不适合扫描小量数据 不适合随机的更新 不适合做含有删除和更新的实时操作 现有的列族数据库: BigTable、Hbase、Cassandra、HadoopDB、GreenPlum、PNUTS

遇到的问题 Thanks.