《MapReduce 2.0源码分析与编程实战》一1.1 数据管理系统:速成

1.1 数据管理系统:速成

HBase实战
关系型数据库系统已经存在几十年了,多年来在解决数据存储、服务和处理问题方面取得了巨大的成功。一些大型公司使用关系型数据库建立了自己的系统,比如联机事务处理系统和后端分析应用系统。

联机事务处理(OLTP)系统用来实时记录交易信息。对这类系统的期望是能够快速返回响应信息,一般是在毫秒级。例如,零售商店的收银机在客户购买和付款时需要实时记录相应信息。银行拥有大型OLTP系统,用来记录客户之间转账之类的交易信息,但OLTP不仅仅用于资金交易,像LinkedIn这样的互联网公司也需要这样的系统,例如,当用户连接其他用户时也会用到。OLTP中的transaction指的是数据库语境中的事务,而不是金融交易。

联机分析处理(OLAP)系统用来分析查询所存储数据。在零售商那里,这种系统意味着按天、按周、按月生成销售报表,按产品和按地域从不同角度分析信息。OLAP属于商业智能的范畴,数据需要研究、处理和分析,以便收集信息,进一步驱动商业决策。对于LinkedIn这样的公司,连接关系的建立可以看做事务,分析用户关系图的连通性以及生成每用户平均联系数量这种信息的报表就属于商业智能,这种处理很可能需要使用OLAP系统。

无论是开源的还是商业版权的关系型数据库,都已经成功地用于这样的使用场景。这一点通过Oracle、Vertica、Teradata等公司的财务报表可以清楚地看到。微软公司和IBM公司也占有一定份额。所有这些系统提供全面的ACID1保证。一些系统扩展性要优于其他系统;一些系统是开源的,还有一些需要支付夸张的许可费用。

关系型数据库的内部设计由关系算法决定,这些系统需要预先定义一个模式(schema)和数据要遵守的类型。随着时间的推移,SQL成了与这些系统交互的标准方式,被广泛使用了许多年。与使用编程语言编写定制访问代码相比,SQL语句更容易写,花费时间也要少得多。但并不是所有情况下SQL都是表达访问模式的最好方式,比如对象-关系不匹配问题出现的场合。

计算机科学中的问题都可以通过改变使用方式来解决。解决对象-关系不匹配问题也没有什么不同,最终可以通过重建框架来解决。

1.1.1 你好,大数据

让我们认真看看大数据这个术语。说实话,这是一个过分吹捧的术语,很多商业化的企业都会使用它来进行市场营销。我们这里尽量让讨论接点儿地气。

什么是大数据?关于大数据的定义有好几种,我们认为没有哪一种定义清晰地解释了这个术语。比如,一些定义说大数据意味着数据足够大,为了从这些数据中获得一些真知灼见,你不得不研究它;另一些说大数据就是不再适用于单台机器的数据。这些定义从他们各自的角度来看是准确的,但并不完整。我们的观点是,我们需要用一种根本上不同的方式来考虑数据,从如何驱动商业价值的角度来考虑数据,这种数据就是大数据。传统上,有联机事务处理系统(OLTP)和联机分析处理系统(OLAP)。但是,事务处理背后的原因是什么?是什么因素促成业务发生?又是什么直接影响了用户行为?我们缺乏这样的洞察力。以早期的LinkedIn为例,这种使用数据的方式可以理解为:基于用户属性、用户之间的二度关系、浏览行为等寻找可能认识的人,然后主动推荐并引导用户联系他们。有效地寻求这种主动推荐行为显然需要大量的各种各样数据。

这种新型数据使用方式首先为Google和Amazon等互联网公司采用,随后是Yahoo!和Facebook跟进。这些公司需要使用不同种类的数据,经常是非结构化的或者半结构化的数据(如用户访问网站的日志)。这需要系统处理比传统数据分析高了几个数量级的数据。传统关系型数据库能够纵向扩展到一定程度来面对一些使用场景,但这样做经常意味着昂贵的许可费用和复杂的应用逻辑。

但是受制于关系型数据库提供的数据模型,对于逐渐出现的、未预先定义模式(schema)的数据集,关系型数据库不能很好地工作。系统需要能够适应不同种类的数据格式和数据源,不需要预先严格定义模式,并且能够处理大规模数据。系统需求发生了巨大变化,互联网先驱不得不走回画图板,重新设计数据库,他们这样做了。大数据系统和NoSQL的曙光出现了。(有人可能会说曙光出现的时间点还要再晚一些,这并不重要,这的确标志着大家开始以不同方式思考数据了。)

作为数据管理系统创新的一部分,出现了几种新技术。每种新技术都适用于不同的使用场景,有着不同的设计前提和功能要求,也有着不同的数据模型。

什么时候会谈到HBase呢?是什么促使了这个系统的创立呢?请看下一节介绍。

1.1.2 数据创新
我们知道,许多杰出的互联网公司,如最突出的Google、Amazon、Yahoo!、Facebook等,都处于这场数据大爆炸的最前沿。一些公司自己生成数据,还有一些公司收集免费可获得的数据;但是管理这些海量的不同种类的数据成为他们推进业务发展的关键。开始阶段他们都采用了当时可用的关系型数据库技术,但是这些技术的局限性随后成了他们继续发展和业务成功的障碍。尽管数据管理技术不是他们业务的核心,但却是推进业务的基础。因此,他们大量投资于新技术研究领域,带来了许多新数据技术的突破。

很多公司都对自己的研究成果严格保密,但是Google选择公开讲述他的伟大技术。Google发表了震撼性的Google文件系统(Google File System)2和MapReduce3的论文。两者结合展示了一种全新的存储和处理数据的方法。此后不久,Google发表了BigTable4的论文,对基于Google文件系统的存储范型提供了补充。其他公司也参与进来,公布了各自的成功技术的想法和做法。Google的论文提供了对于如何建立互联网索引的深刻理解,Amazon公布了Dynamo5,解密了网上购物车的基本组件。

不久,所有这些新想法都被浓缩到开源实践中。接下来的几年,数据管理领域出现了形形色色的项目。一些项目关注快速键值(key-value)存储,而另外一些关注内置数据结构或者基于文档的抽象化。同样多种多样的是这些技术可以支持的预期访问模式和数据量。一些项目甚至放弃写数据到硬盘,为了性能而牺牲当前的数据持久化。大多数技术不能保证支持受推崇的ACID。尽管有一些是商业版权产品,但是绝大多数这类技术都是开源项目。因此,这些技术作为整体被称为NoSQL。

HBase适于什么场合呢?HBase的确被称为NoSQL数据库。它提供了键值API,尽管有些变化,与其他键值数据库有些不同。它承诺强一致性,所以客户端能够在写入后马上看到数据。HBase运行在多个节点组成的集群上,而不是单台机器。它对客户端隐藏了这些细节。你的应用代码不需要知道它在访问1个还是100个节点,对每个人来说事情变得简单了。HBase被设计用来处理TB到PB级数据,它为这种场景做了优化。它是Hadoop生态系统的一部分,依靠Hadoop其他组件提供的重要功能,例如数据冗余和批处理。

了解了大背景后,我们再专门看看HBase的崛起。

1.1.3 HBase的崛起
假设你正忙于一个开源项目,通过爬网站和建立索引来搜索互联网。你有一个实现方案,这个实现方案工作在一个小集群上,但是需要许多手工环节。再假设你正忙于这个项目的时候,Google发表了数据存储和数据处理框架的论文。显然,你会研究这些论文,模仿它们启动一个开源实现。好吧,你不打算这么做,我们当然也不会,但是Doug Cutting和Mike Cafarella就是这么做的。

Nutch是他们的互联网搜索开源项目,脱胎于Apache Lucene,Hadoop就是在Nutch项目里诞生的6。从那时起,Yahoo!开始关注Hadoop,最后Yahoo!招募了Cutting和其他人为Yahoo!全职工作。随后,Hadoop从Nutch中剥离出来,最后成为Apache的顶级项目。随着Hadoop的良好发展和BigTable论文的发表,在Hadoop上面实现一个BigTable开源版本的基础工作开始了。2007年,Cafarella发布了实验性代码,开源的BigTable。他称其谓HBase。创业公司Powerset决定贡献出Jim Kellerman和Michael Stack两位专家专职做这个BigTable的模仿产品,回馈它所依赖的开源社区7。

HBase被证实是一个强大的工具,尤其是在已经使用Hadoop的场合。在其“婴儿期”的时候,它就快速部署到了其他公司的生产环境并得到开发人员的支持。今天,HBase已经是Apache顶级项目,有着众多的开发人员和兴旺的用户社区。它成为一个核心的基础架构部件,运行在世界上许多公司(如StumbleUpon、Trend Micro、Facebook、Twitter、Salesforce和Adobe)的大规模生产环境中。

HBase不是数据管理问题的;“万能药”,针对不同的使用场景你可能需要考虑其他的技术。让我们看看现在HBase是如何使用的,人们用它构建了什么类型的应用系统。通过这个讨论,你会知道哪种数据问题适合使用HBase。

时间: 2024-09-20 09:53:19

《MapReduce 2.0源码分析与编程实战》一1.1 数据管理系统:速成的相关文章

《MapReduce 2.0源码分析与编程实战》一导读

前 言 MapReduce 2.0源码分析与编程实战 我们处于一个数据大爆炸的时代.每时每刻.各行各业都在产生和积累海量的数据内容.这些数据中蕴含着进行业务活动.获取商业信息.做出管理决策的重要信息.如何处理这些数据并获取有价值的信息,是众多组织和单位面临的共同问题.而这个问题的解决又依赖两项技术,一是能够对产生的业务数据进行统一管理和综合,并且能够无限扩展存储空间:二是能够有效处理获得的海量数据,在限定时间内获得处理结果的处理程序. 因此,寻求一个合理可靠的大数据处理决方案是目前数据处理的热点

《MapReduce 2.0源码分析与编程实战》一第1章 大象也会跳舞

第1章 大象也会跳舞 MapReduce 2.0源码分析与编程实战大象能跳舞吗?当我们被庞大而臃肿的数据压垮,常常会不停地问自己是否真的有必要收集那么多的数据吗?对于这个问题,我回答是 "一切都取决于你自己".对于庞大的数据来说,在不同人的眼中,既可以是一座无用的垃圾山,也可以是一座未经开凿的金山,这一切都取决于使用者的能力与眼界.

《MapReduce 2.0源码分析与编程实战》一1.4 MapReduce与Hadoop

1.4 MapReduce与Hadoop 如果将Hadoop比作一头大象的话,那么MapReduce就是那头大象的大脑.MapReduce是Hadoop核心编程模型.在Hadoop中,数据处理核心为MapReduce程序设计模型.MapReduce把数据处理和分析分成两个主要阶段,即Map阶段和Reduce阶段.Map阶段主要是对输入进行整合,通过定义的输入格式获取文件信息和类型,并且确定读取方式,最终将读取的内容以键值对的形式保存.而Reduce是用来对结果进行后续处理,通过对Map获取内容中

《MapReduce 2.0源码分析与编程实战》一1.2 HBase使用场景和成功案例

1.2 HBase使用场景和成功案例 HBase实战有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,这些能够告诉你很多.因为HBase有许多公开的产品部署案例,我们正好可以这么做.本节将详细介绍一些成功使用HBase的使用场景. 注意不要自我限制,认为HBase只能在这些使用场景下使用.它是一个很新的技术,根据使用场景进行的创新正推动着该系统的发展.如果你有新想法,认为HBase提供的功能会让你受益,那就试试吧.社区很乐于帮助你,也会从你的

《MapReduce 2.0源码分析与编程实战》一1.3 简单、粗暴、有效——这就是Hadoop

1.3 简单.粗暴.有效--这就是Hadoop 2005年,IT界先锋Apache基金会率先提出了一种先进的不以关系型数据为基础的大数据处理模型--Hadoop. Hadoop就是解决面向互联网及其他来源的大数据分析和并行处理的计算模型.它的诞生引起了学术界.金融界以及商业界的广泛关注.Hadoop创建之初的宗旨就是让使用者能够通过使用大量普通的服务器搭建相应的服务器集群来实现大数据的并行处理,其优先考虑的是数据扩展性和系统的可用性. 简单.粗暴.有效--这就是Hadoop. Hadoop是一个

《MapReduce 2.0源码分析与编程实战》一1.2 大数据分析时代

1.2 大数据分析时代 如果我们把大数据比作一块未经开发的沃土,那么只有经过耕耘收获的果实才能够算得上是真正获得了沃土的回报.换言之,如果把大数据比作一块沃土,那么只有强化对土地的"耕耘"能力,才能通过"加工"实现数据的"增值". 随着"大数据时代"的开启,对大数据本身的处理和分析越来越为生产者和商业者所看重.但是问题在于,相比于拥有较长历史的数据库分析和传统数据分析,大数据分析具有待数据量特别巨大.算法分析特别复杂等特点.

《MapReduce 2.0源码分析与编程实战》一2.1 从头开始

2.1 从头开始 HBase实战TwitBase存储3种简单的核心数据元素,即用户(user).推帖(twit)和关系(relationship).用户是TwitBase的中心.用户登录进入应用系统,维护用户信息,通过发帖与其他用户互动.推帖是TwitBase中用户公开发表的短文.推帖是用户间互动的主要模式.用户通过互相转发产生对话.所有互动的"粘合剂"就是关系.关系连接用户,使用户很容易读到其他用户的推帖.本章关注点是用户和推帖,下一章将讨论关系. 关于Java 本书绝大部分代码都是

《MapReduce 2.0源码分析与编程实战》一1.5 看,大象也会跳舞

1.5 看,大象也会跳舞 大象也会跳舞.当人们还在争论大数据处理能否为自己所在的行业带来革命的时候,部分行业领袖已经在享用大数据处理给自己带来的非凡好处. Hadoop一个最为普遍的应用是为获得的海量数据提供处理程序,从而能够获得其中包含的各种信息.例如经常使用的聚类推荐,向感兴趣的顾客推荐相关商品和服务:或者为广告供应商提供具有针对性的广告服务,并且通过点击率的反馈获得统计信息,进而有效地帮助他们调整相应的广告投放能力. 长期以来,互联网巨头,包括Yahoo!.Google等广告商为其投放的标

《MapReduce 2.0源码分析与编程实战》一1.3 你好HBase

1.3 你好HBase HBase实战HBase搭建在Apache Hadoop和Apache ZooKeeper上面.就像Hadoop家族其他产品一样,它是用Java编写的.HBase可以以3种模式运行:单机.伪分布式和全分布式.下面我们将使用的是单机模式.这意味着在一个Java进程里运行HBase的全部内容.这种访问模式用于研究HBase和做本地开发. 伪分布式模式需要在一台机器上运行多个Java进程.最后的全分布模式需要一个服务器集群.这两种模式需要安装相关联的软件包以及合理地配置HBas