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

2.1 从头开始

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

关于Java

本书绝大部分代码都是用Java编写的。有时我们使用伪代码来帮助理解概念,但是工作代码是Java。使用HBase,Java是现实的选择。整个Hadoop系列,包括HBase,都使用Java。HBase客户端函数库是Java,MapReduce函数库也是Java。HBase的部署需要优化JVM性能。但是可以使用非Java和非JVM的语言来访问HBase,第6章会讨论这些内容。

2.1.1 创建表

现在开始搭建TwitBase,为存储用户奠定一个基础。HBase是一个在表里存储数据的数据库,所以我们从创建users表开始。首先进入HBase Shell:

Shell打开一个到HBase的连接,给出提示符。在Shell提示符上,创建你的第一张表:

可以想到'users'是表的名字,但是'info'是什么呢?像关系型数据库里的表一样,HBase的表也是按照行(row)和列(column)来组织的。HBase中的列和关系型数据库中的有些不同。HBase中的列组成列族(column family)。info就是users表的一个列族。HBase中的表必须至少有一个列族。它们之中,列族直接影响HBase数据存储的物理特性。因此,创建表时必须至少指定一个列族。表创建后列族还可以更改,但是这么做很麻烦。后面我们会详细讨论列族,现在只需要知道users表足够简单,只有一个列族,就可以了。

2.1.2 检查表模式

如果你熟悉关系型数据库,会马上注意到,HBase创建表时没提到任何列或者数据类型。除了列族名字,HBase什么也不需要。这就是HBase经常被称作无模式数据库的原因。

你可以要求HBase列出所有已创建的表来验证users表已经创建成功:

list命令可以显示存在的表,HBase也可以提供表的更多细节。使用describe命令可以看到这个表的所有的默认参数:

Shell显示表有两类属性信息:表的名字和列族的列表。每个列族有许多相应的配置信息细节,这些就是我们前面提到的物理特性。现在先不管这些细节,我们随后研究它们。

HBase Shell

虽然HBase Shell主要用于管理任务,但它拥有丰富的特性。它用JRuby实现,可以使用整个Java客户端API。你可以使用help命令进一步发掘Shell的功能。

2.1.3 建立连接

尽管Shell很好用,但是谁会愿意用Shell命令实现TwitBase呢?聪明的HBase开发人员知道这一点,他们为HBase提供了一个全面的Java客户端库。也有面向其他语言的类似的API,第6章会讨论。现在我们使用Java。打开users表连接的Java代码如下所示:

类似于Shell的做法,构造函数HTable读取默认配置信息来定位HBase。然后定位之前你创建的users表,返回一个句柄。

你也可以传递一个定制的配置对象给HTable对象:

这等同于让HTable对象自己创建配置信息对象。你可以像下面这样设定参数来定制配置信息:

HBase客户端配置信息

HBase客户端应用需要有一份HBase配置信息来访问HBase——ZooKeeper quorum地址。你可以手工设定这个配置如下:

`  ``MyConf.set("hbase.zookeeper.quorum","serverip");`

ZooKeeper以及客户端与HBase集群之间的交互会在下一章深入研究分布式HBase存储时讨论到。现在你只需要知道HBase配置信息可以通过两种方式获取,一种是Java客户端从类路径里的hbase-site.xml文件里获取配置信息,另一种是通过在连接中显式设定配置信息来获取。如果你没有指定配置信息,就像示例代码里那样,客户端就会使用默认配置信息,把localhost作为ZooKeeper quorum 地址。单机模式中,指的就是你用来验证本书内容的机器,这正是你需要的配置信息。

2.1.4 连接管理

创建一张表实例是个开销很大的操作,需要占用一些网络资源。与直接创建表句柄相比,使用连接池更好一些。连接从连接池里分配,然后再返回到连接池。实践中,使用HTablePool比直接使用HTable更为常见:

当你完成工作关闭表时,连接资源会返回到连接池里。

没有数据的表是没有用的,现在我们存储一些数据。

时间: 2024-08-02 03:06:32

《MapReduce 2.0源码分析与编程实战》一2.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源码分析与编程实战》一1.1 数据管理系统:速成

1.1 数据管理系统:速成 HBase实战关系型数据库系统已经存在几十年了,多年来在解决数据存储.服务和处理问题方面取得了巨大的成功.一些大型公司使用关系型数据库建立了自己的系统,比如联机事务处理系统和后端分析应用系统. 联机事务处理(OLTP)系统用来实时记录交易信息.对这类系统的期望是能够快速返回响应信息,一般是在毫秒级.例如,零售商店的收银机在客户购买和付款时需要实时记录相应信息.银行拥有大型OLTP系统,用来记录客户之间转账之类的交易信息,但OLTP不仅仅用于资金交易,像LinkedIn

《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