开发者学堂课程【HBase入门教程:HBase 原理_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/397/detail/5061
HBase 原理_1
内容介绍
一、Hadoop 生态系统
二、非关系型数据库
三、HBase 简介
四、HBase 数据模型
一、Hadoop 生态系统
1.首先来看 Hadoop 生态系统图,有 Zookeeper,之前 Zookeeper 是拿来做 HDFS 高可用的,Zookeeper 本身是一个维护内存数据库。
Hive 是一个数据仓库。
HBase 就是数据库,Hive 指的是数据仓库。
HBase 和 MapReduce 都学过。
左边的 Flumn 和 Sqoop 是两个工具,用起来很简单。Flumn 做数据的收集,尤其是在离线分析离线处理的系统里。经常用 Flumn 来收集数据。
Sqoop :布置的 Hadoop 作业,最终把结果分析完放在一张结果表里,但是这个表是 Hive 中的一个表,最终在 HDFS 中存储,是一个非关系型数据,最终的结果是要通过一个 web 平台展示给用户,web 开发人员查的数据是一些关系型数据库。所以 Sqoop 就是完成关系型数据和非关系型数据之间的转换,可以将 Hive 里的结果转换到关系型数据库,也可以将关系型数据库转到非关系型数据库里。因为早期的数据都存储在关系型数据库里,但是这里的数据做一些分析数据也有价值,所以也需要将它转到生态圈里,然后通过 MepReduce 和 Hive 进行分析。
Mahout,讲 MepReduce 案例时手动的实现了一些计学习里的算法,Mahout 将之前的一些或者是常用的一些计学习算法通过 MepReduce 做了一个开源的实现。有什么意义?之前在考计学习算法时都是单机进行,有
MepReduce 之前有分布式计算之前实现计学习算法实现完之后都是通过单机来访,但是当数据量上来之后,单机运行效率就不高。Hadoop 是分布式计算,分布式计算比单机效率要高,但数据量很大时 Mahout 就将计学习进行实现,可以通过 MepReduce 进行分析,从而提高了效率。
Pig 类似 Hive 通过编写一些脚本来分析 HDFS 上的数据,但是 Pig 现在已经淘汰。类似的还有 shark,类似鲨鱼的图标也已经被淘汰了,所以技术更新迭代比较快。
2.图不光是介绍 Hadoop 里的组件是做什么的还有实际意义:
最底层是 HDFS 和 HBase ,它们两可以用来存储数据,数据最终可以存储在哪呢?首先之前学了 HDFS,不光是 MapReduce 还有 Hive 分期的数据都在 HDFS 上,然后 HBase 作为大数据里的数据库也可以存储数据, MapReduce 和 Hlive 也可以分析 HBase 上。HBase 里面的数据最终可以存储在你的服务器本介上,但是这是单台的,所以数据要放在 HDFS 上,Zookeeper 对这些组件都可以高可用,做辅助的作用。但是注意之前在 HBase 中 Zookeeper 不仅仅只是做一个高可用,不做高可用也不能离开 Zookeeper,因为 Zookeeper 里存了 HBase 中可用的数据,最左边是需要的工具 Flumn 收集完可以放到分布式系统里,Sqoop 向结果做一个转换。所以这个生态图要去合理的理解。
二、非关系型数据库
1.Cassandra、hbase 、mongodb 性能对比
http://www.jdon.com/46128
2.Couchdb,文件存储数据库
3.Neo4j 非关系型图数据库
Cassandra 国外用的多一些,国内都是用 Hadoop 生态圈里 Hbas 使用最多。
三、HBase简介
1.HBase(Hadoop Database) 是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。
2.利用 Hadoop HDFS 作为其文件存储系统,利用 Hadoop MapReduce 来处理 HBase 中的汇量数据,利用 Zookeeper 作为其分布式协同服务
3.主要用来存储非结构化和半结构化的松散数据(列存 NoSQL 数据库)
4.行式数据库:减少存储空间占用,不支持删除修改表必须修改全部
5.列式数据库:创建表之后,列可以横向进行收缩
6.它是大数据里的一个数据库,它有哪些特性?高可靠性:首先它是高可靠性,为什么?
这个数据本身 Zookeeper 可以对它做一些高可用,正常 HBase 搭建时数据可以存储在 HDFS 上,HDFS 可靠性高,毫无疑问这块数据很稳定。
7.高性能:它作为大数据里的数据库,大数据分析的数据量高,对比一下在用关系型数据库时,一般 MYSQL 的配发量在上了百万级别之后,这些性能开始往下滑。
8.面相列: HBase 是列式数据库。之前所接触的 MYSQL 那些都叫做行式数据库。什么叫行式、列式?
平时在做开发时,业务系统里面一张表,一行数据可能有很多字段,但是一行数据里这么多字段只用到个别的几个,剩下的都是空着的,这样的方式落实到存储空间里会浪费存储空间,想减少存储空间占用,没用的列直接删掉就可以了。但是行式数据库不支持,要修改字段,相当于要把这整个表进行修改。列式数据库,创造表之后,列式数据库是可以横向进行收缩,假如一行数据你需要哪些列可以动态来进行添加。这是在使用时最直观的区别。之前在使用关系型数据库里那些操作全部忘掉。因为和之前有很大的区别。
9.可伸缩:本身是一个分布式数据库,当运行过程中发现集群,存储能力不够,可以向 HBase 集群再添加节点从而提高运行的能力。
10.实时读写:作为正常的数据库,一定要是实时读写是交互式的一个操作。
11.在 HBase 里存储必须满足她的规则。
四、HBase 数据模型
Row Key (唯一确定一行数据) |
Time Stamp (数据版本) |
CF1 (列族) |
CF2 |
CF3 |
“com.cnn.www” |
t6 |
|
CF2:q1=val3 (单元格) |
CF3:q4=val4 |
t5 |
|
|
|
|
t3 |
CF1:q2=val2 |
|
|
在这个图里描述的 HBase 有几行数据?
上边相当于一个说明,下边有3行数据。它其实描述的是一行数据。首先Row Key 类似关系型数据库里的组件,它就是唯一确定只有一行数据。