转载

HBase企业应用开发实战——1.1 理解大数据背景

《HBase企业应用开发实战》原版授权,未经允许不得转载!

1.1 理解大数据背景

经美国权威机构IDC的调查发现,现如今的公司正在以前所未有的速度和丰富的类型产生数据,并且也有能力存储这些数据,但是,如何关联这两方面以便产生最大的商业价值,是所有公司共同面临的挑战。这个问题非常复杂:虽然业务人员在技能提升和专业工具的帮助下,越来越了解数据,但由于数据的增长速度越来越快,积累量级越来越大,公司可以利用的数据比例正在迅速下降。

1.1.1 什么是大数据、

Gartner认为与过去相关概念相比,大数据强调3V特征,即Volume(量级)、Varity(种类)和Velocity(速度),如图1-1所示。

HBase企业应用开发实战——1.1 理解大数据背景

图1.1 大数据三大特性

如今存储的数据量正在急剧增长,2000年全球存储了EB级别的数据,预计到2020年,该值将变为ZB级别。单单Twitter每天就会生成超过10TB的数据,Facebook的数据为几十TB,一些特殊的企业在每小时就会产生TB级别的数据。

上面这些企业是一些典型的案例,其实我们生活的方方面面都会形成很多“轨迹”。例如,打开手机会生成一个事件;乘坐公共交通刷卡,这是一个事件;检票登机、打卡上班、 AppStore上购买应用、更换电视频道、使用高速路电子收费系统等,每一项操作都会生成数据,并且该数据的量级跟参与的人数相关,全球60亿人口,如果仅仅十分之一的人参与进来,那么这个数据量级就已经非常惊人。就在10年前IT界超过1 TB的数据仓库屈指可数,而现在则是“举不胜数”。

随着传感器、智能设备以及社交协作技术的激增,企业中的数据也变得更加复杂,因为它不仅包含传统的关系型数据,还包含来自网页、Web日志文件、社交媒体论坛、电子邮件、文档、传感器数据等原始、半结构化和非结构化数据。

传统系统可能很难存储、分析这些数据的内容,更不要说挖掘有价值的信息。因为传统的数据库、数据仓库、联机事务处理等技术并不适合处理这些数据。尽管一些公司正在朝大数据方向大力发展,但总体而言,大部分公司只是刚开始理解大数据。当回首整个数据库发展的历程会发现,人们将大部分时间都花在仅20%的数据上:这些数据格式整齐且符合严格模式的关系类型。但事实是,全球80%的数据是非结构化的或者半结构化的。

视频和图片不能轻松或高效地存储在关系型数据库中,某些事件信息可能动态地更改(如气象),它们不太适合严格的模式。要利用大数据机会,企业必须能够分析所有类型的数据,包括关系和非关系数据:文本、传感器数据、音频和视频等。

有效处理大数据需要在数据变化的过程中对它的数量和种类进行分析,而不只是在“静止”状态进行分析。业界定义这种情况为从单纯批量计算模式到实时动态计算模式的内涵式转变。内涵式在这里也比较容易理解,即结构优化、质量提高,是一种实现实质性的跨越式的进程。大数据平台允许用户将所有数据存储为其原生的业务对象格式,通过可用组件上的大规模并行计算实现价值,不仅仅是批量处理和离线分析,同时支持实时查询和处理等特征,甚至要求响应时间在毫秒级别,并且可承受大规模的并发访问,这些都是“速度”特征的范畴。

1.1.2 为何大数据至关重要

这种非传统分析是否适合企业的业务需求?换句话说就是能否找到一个大数据平台可为当前的分析工具提供补充实现,并且兼容现有解决方案,以实现更好的业务成果。

通常情况下,数据必须经过清理才能规范地存放到数据仓库中。相反大数据解决方案不仅会利用不适合传统仓库且数量庞大的数据,而且不需要改变原有数据格式,保留数据的真实性,并能够快速访问海量的信息。对于不能使用传统关系型数据库方法处理的信息所带来的挑战,大数据解决方案非常适合。大数据之所以重要,是因为其具备解决现实问题的三个关键方面:

■   可以分析来自各种不同来源的原始结构化数据、结构化和非结构化数据的理想选择。

■   当需要分析所有或大部分数据,或者对一个数据抽样分析效果不明显时,大数据解决方案是理想的选择。

■   未预先确定数据的业务度量指标时,进行迭代式和探索式分析的理想选择。

1.1.3 NoSQL在大数据中扮演的角色

NoSQL,是Not only SQL的缩写,泛指非关系型的数据库。与关系型数据库相比,存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表模式,也通常会避免使用SQL的JOIN操作,一般又都具备水平可扩展的特性。NoSQL的实现具有两个特征:使用硬盘、把随机存储器作存储载体。

1.       传统关系型数据库的缺陷

随着互联网WEB 2.0的兴起,传统的关系数据库在应付WEB 2.0网站,特别是超大规模和高并发的SNS类型动态网站已经力不从心,暴露了很多难以克服的问题。

(1)    高并发读写的瓶颈

WEB 2.0网站要根据用户个性化信息来实时生成动态页面、提供动态信息,所以基本上无法使用静态化技术,因此数据库并发负载非常高,可能峰值会达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO却无法承受。其实对于普通的BBS网站,往往也存在相对高并发写请求的需求,例如,人人网的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,这是一个相当普遍的业务需求。

(2)    可扩展性的限制

基于WEB的架构中,数据库是最难进行横向扩展的,当应用系统的用户量和访问量与日俱增时,数据库系统却无法像WEB Server和APP Server那样简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,而不能通过横向添加节点的方式实现无缝扩展。

(3)    事务一致性的负面影响

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 保证数据库一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性,这随之而来的是性能的大幅度下降。很多WEB系统并不需要严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了高负载下的一个沉重负担。

(4)    复杂SQL查询的弱化

任何大数据量的WEB系统,都非常忌讳几个大表间的关联查询,以及复杂的数据分析类型的SQL查询,特别是SNS类型的网站,从需求以及产品设计角度就避免了这种情况的产生。更多的情况往往只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大地弱化了,所以这部分功能不能得到充分的发挥。

2.       NoSQL数据库的优势

(1)    扩展性强

NoSQL数据库种类繁多,但是一个共同的特点就是去掉关系数据库的关系特性,数据之间弱关系,非常容易扩展。例如,HBase、Cassandra等系统的水平扩展性能非常优越,非常容易实现支撑数据从TB到PB级别的过度。

(2)    并发性能好

NoSQL数据库具有非常良好的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的弱关系性,数据库的结构简单。一般MySQL使用 Query Cache,每当表发生更新操作时,Cache就会失效,这是一种大粒度的Cache,在针对WEB 2.0的交互中频繁应用,Cache性能并不高。而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说性能要高很多。

(3)    数据模型灵活

NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库中,增删字段是一件非常麻烦的事情。对于数据量非常大的表,增加字段简直就是一场噩梦。NoSQL允许使用者随时随地添加字段,并且字段类型可以是任意格式。

HBase作为NoSQL数据库的一种,当然也具备上面提到的种种优势。使用过Hadoop的读者知道,Hadoop最适合的应用场景是离线批量处理数据,其离线分析的效率非常高,能在分钟级别处理TB级的数据,但是一般的应用系统并不适合批量模式访问,更多的还是用户的随机访问,就类似访问关系型数据库中的某条记录一样。HBase的列式存储的特性支撑它实时随机读取、基于KEY的特殊访问需求。当然,HBase还有不少新特性,其中不乏有趣的特性,在接下来的内容中将会详细的介绍。

原文  http://www.adintellig.com/hbase-in-action-1-1/
正文到此结束
Loading...