欢迎投稿

今日深度:

大数据分析的技术栈(一)-HBase, Parquet,-hbaseparquet

大数据分析的技术栈(一)-HBase, Parquet,-hbaseparquet


序言

前段时间做了一个大数据分析的一个项目,对于大数据分析的技术栈有了一个比较全面的认识,下面一个系列的文章,会对整个技术栈做一个介绍,本篇文章关注的是DB部分,HBase和Parquet。

HBase

HBase是什么呢?

HBase是架构在HDFS文件系统之上,面向列存储的,分布式的非关系型数据库。这句话里面包含的信息量有点多,不要急,由我慢慢道来。

  • 架构在HDFS文件系统之上: 我们都知道HDFS是Hadoop这个分布式平台的标准的文件存储系统,就像FAT32是windows的标准文件系统一样。HBase作为一个分布式数据库,最终的数据存储在HDFS上。正常文件的访问都是按照顺序访问,而不能随机读取,如果用于查询,这种顺序访问的机制效率就很低下了。这就是数据库出现的原因了,支持随机的查找。HBase就是HDFS文件系统上,数据库实现的一种方式。

  • 面向列存储: 普通的关系型数据库都是行存储的,而HBase是面向列存储的。行存储的数据库很容易操作行,但是不容易对列进行更改。而列存储的数据库很容易动态的增加,删除列。对于一些列信息不固定的数据,这个特性就显得很有价值。

  • 分布式: HBase是分布式的数据库,分布式数据库的特点是,数据不容易丢失,存储能力很强。

  • 非关系型 :决定分关系型和关系型数据库最重要的区别就是:需不需要关心事务的一致性。具体的关系型数据库和非关系型数据库的区别可以参考从关系型数据库到非关系型数据库
    上面高度概括了HBase,下面介绍一下HBase的细节。

HBase Data Model

为了理解HBase的数据模型,把HBase的数据模型理解为多维的Map会很有帮助。首先我们来介绍HBase数据模型里面的术语。

1. Table: 这个比较容易理解,HBase里面的数据是存储在Table里面,这些Table又由Coumn和Row组成。
2. Row: HBase里面,Row又一个或者多个Column组成,HBase里面Row会按照Row Key(唯一的标识一行数据)的字母顺序被排序,所以Row Key的设计就非常重要,设计Row Key的原则就是相互关联的行应该被存储在附近。举个例子,如果你存储的是网站信息,Row Key应该就是网址,但是设计Row Key的时候这些网址应该是倒序的(org.apache.www, org.apache.mail, org.apache.jira),只有这样,有关联的数据才会被存储在附近。
3. Column: Coumn 由column family和column qualifier组成。column qualifier使用:分隔。
4. Column Family: Column Family由column和值的集合。HBase里面每个Row由相同的Column Family组成,每个Column Family包含若干的column,这些column也许没有值,对于没有值的这些column,物理上面是不会存储的。
5. Column Qualifier: column qualifier是用来检索数据的。上图中column family: ‘Cf1’, column:’adress’, ‘Cf1:adress’就可以用来检索数据。
6. Cell: 一个Cell是Row, Column Family和Column Qualifier的综合。 {row, column, version} 可以精确的指定一个cell。

从上面的定义我们可以得到下面几个结论。

  • Row Key可以认为是primary key,Row Key的设计会影响到数据的存储,从而影响查询的性能。
  • Column Family是创建Table的时候就确定的,后面是无法更改的,但是Coumn确实可以动态的增加,或删除。
  • 对于不同的Row,有着相同的column family,但是这些相同的column family可以有不同的column。这是面向列存储的优势。

HBase的使用

这部分涉及HBase环境搭建,HBase API,HBase性能等,会在后续的进程中,逐步更新完善。

HBase的应用特点

根据HBase本身的特点,我们可以发散一下HBase的使用。
1. HBase的表一般会被设计的很大,可以有几十亿行,上百万列,这是关系型数据库无法比拟的。
2. HBase的column会根据业务场景的需要,动态的增加或者减少,而且这种增加和减少可以是按照行进行的。
3. HBase是面向列存储的,因此可以按照列独立的检索。
4. HBase空的列并不会被存储,从而可以被设计的非常的稀疏。
5. HBase Cell数据是多版本的,可以根据时间戳区分。
6. HBase的数据类型简单,所有的数据都是字符串。

www.htsjk.Com true http://www.htsjk.com/hbase/25965.html NewsArticle 大数据分析的技术栈(一)-HBase, Parquet,-hbaseparquet 序言 前段时间做了一个大数据分析的一个项目,对于大数据分析的技术栈有了一个比较全面的认识,下面一个系列的文章,会对整个技...
相关文章
    暂无相关文章
评论暂时关闭