Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

关于Hbase

790 views

Published on

关于hbase的一些东西

Published in: Education
  • Be the first to comment

  • Be the first to like this

关于Hbase

  1. 1. HbaseHbase 作为一个面向列的 k/v 数据库,适合大数据量的读写操作和查询操作.是为查询而生适合于对实时性和并发性要求比较高的应用项目.简介它介于 nosql 和 RDBMS 之间,仅能通过主键(row key)和主键的 range 来检索数据,仅支持单行事务(可通过 hive 支持来实现多表 join 等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与 hadoop 一样,Hbase 目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。HBase 中的表一般有这样的特点:1 大:一个表可以有上亿行,上百万列2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。版本特点hbase 早期版本的目标就是一个海量数据中的离线服务。2009 年 9 月发布的 0.20.0 版本是一个里程碑,online 应用正式成为了 hbase 的目标,为此 hbase引入了 zookeeper 来做为 backupmaster 以及 regionserver 的管理。2011 年 1 月 0.90.0 版本是另一个里程碑,基本上我们今天看到的各大网站, facebook/ebay/yahoo 如
  2. 2. 内所使用于生产的 hbase 都是基于这一个版本(fb 所采用的 0.89 版本结构与 0.90.x 相近)。 bloomfilter等诸多属性加入了进来,性能也有极大提升优点首先它的数据由 hdfs 天然地做了数据冗余, 而且 hdfs 集群的安全性,以及服务于海量数据的能力已经得到了多家公司的证明。其次 hbase 本身的数据读写服务没有单点的限制,服务能力可以随服务器的增长而线性增长,达到几十上百台的规模。LSM-Tree 模式的设计让 hbase 的写入性能非常良好,单次写入通常在 1-3ms 内即可响应完成,且性能不随数据量的增长而下降。region(相当于数据库的分表)可以 ms 级动态的切分和移动,保证了负载均衡性。由于 hbase 上的数据模型是按 rowkey排序存储的,而读取时会一次读取连续的整块数据做为 cache,因此良好的 rowkey 设计可以让批量读取变得十分容易,甚至只需要1次 io 就能获取几十上百条用户想要的数据。最后, hbase 的 api对于 JAVA 开发工程师来说非常容易上手,培训成本相对较低。缺点hbase 本身也有不适合的场景。比如,索引只支持主索引(或看成主组合索引) ,又比如服务是单点的,单台机器宕机后在 master 恢复它期间它所负责的部分数据将无法服务等。这就要求在选型上需要对自己的应用系统有足够了解
  3. 3. 适合场景hiveHadoop+hive 一般是用于数据仓库, 采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理,适用于一些离线的应用.主要是为简化 mapred 而生.hive 是一个基于 hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。 它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,
  4. 4. 最终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。Hive 诞生于 facebook 的日志分析需求,面对海量的结构化数据, hive 以较低的成本完成了以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活而高效。Hive 是一个可扩展性极强的数据仓库工具,借助于 hadoop 分布式存储计算平台和 hive 对 SQL 语句的理解能力,我们所要做的大部分工作就是输入和输出数据的适配,恰恰这两部分 IO 格式是千变万化的,我们只需要定制我们自己的输入输出适配器, hive 将为我们透明化存储和处理这些数据,大大简化我们的工作。本文的重心也正在于此,这部分工作相信每一个做数据分析的朋友都会面对的,希望对您有益。
  5. 5. 和一般数据库的比较应用场景本文主要讲述使用 hive 的实践,业务不是关键,简要介绍业务场景,本次的任务是对搜索日志数据进行统计分析。集团搜索刚上线不久,日志量并不大 。这些日志分布在 5 台前端机,按小时保存,并以小时为周期定时将上一小时产生的数据同步到日志分析机,统计数据要求按小时更新。这些统计项,包括关键词搜索量 pv ,类别访问量,每秒访问量tps 等等。
  6. 6. 基于 hive ,我们将这些数据按天为单位建表,每天一个表,后台脚本根据时间戳将每小时同步过来的 5 台前端机的日志数据合并成一个日志文件,导入 hive系统,每小时同步的日志数据被追加到当天数据表中,导入完成后,当天各项统计项将被重新计算并输出统计结果。以上需求若直接基于 hadoop 开发,需要自行管理数据,针对多个统计需求开发不同的 map/reduce 运算任务,对合并、排序等多项操作进行定制,并检测任务运行状态,工作量并不小。但使用 hive ,从导入到分析、排序、去重、结果输出,这些操作都可以运用 hql 语句来解决,一条语句经过处理被解析成几个任务来运行,即使是关键词访问量增量这种需要同时访问多天数据的较为复杂的需求也能通过表关联这样的语句自动完成,节省了大量工作量。

×