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

1.3 你好HBase

HBase实战
HBase搭建在Apache Hadoop和Apache ZooKeeper上面。就像Hadoop家族其他产品一样,它是用Java编写的。HBase可以以3种模式运行:单机、伪分布式和全分布式。下面我们将使用的是单机模式。这意味着在一个Java进程里运行HBase的全部内容。这种访问模式用于研究HBase和做本地开发。

伪分布式模式需要在一台机器上运行多个Java进程。最后的全分布模式需要一个服务器集群。这两种模式需要安装相关联的软件包以及合理地配置HBase。这些内容将在第9章讨论。

HBase设计运行在nix系统上,代码和书中的命令都是为nix系统设计的。如果你使用Windows系统,最好的选择是安装一个Linux虚拟机。

关于Java的解释

HBase基本上用Java编写,只有几个部件不是,最优先支持的语言自然是Java。如果你不是Java开发员,在学习HBase时需要学习一些Java技能。本书的目标是指导你如何有效地使用HBase,很大篇幅内容关于如何使用API,它们都是Java的。所以,辛苦一点儿吧。

1.3.1 快速安装
以单机模式运行HBase,过程很简单。你可以选择Apache HBase 0.92.1版本,使用tar文件包进行安装。第9章会讨论其他各种发行版。如果你选择不同于Apache HBase 0.92.1的其他版本,也是可以使用的。本书的例子基于HBase 0.92.1版本(和Cloudera CDH4),其他API兼容的版本应该都可以正常工作。

HBase需要系统安装Java运行环境(JRE)。生产系统环境我们推荐Oracle的Java软件包。Hadoop和HBase社区测试了一些JRE版本,写作本书时HBase 0.92.1或CDH4的推荐版本是 Java 1.6.0_311。Java 7至今没有测试,因此并不推荐。安装HBase之前先在系统上安装Java。

到Apache HBase网站的下载区下载tar文件包(http:// hbase.apache.org/):

上述步骤从Apache镜像站点下载和解压了HBase的tar文件包。方便起见,创建一个环境变量指向这个目录,后面会比较省事。把它写入环境变量文件,以便每次打开Shell时不用重复设置。书中后面都会用到HBASE_HOME:

如果可以,把$HBASE_HOME/bin放进PATH变量,以便下次你可以直接执行hbase而不是$HBASE_HOME/bin/hb``ase。

全部做完后,单机模式的HBase就安装成功了。HBase的配置信息主要在两个文件里:hbase-env.sh 和 hbase-site.xml。这两个文件存放在/etc/hbase/conf/目录下。单机模式的默认设置里,HBase写数据到目录/tmp 下,但是该目录不是长期保存数据的地方。你可以编辑hbase-site.xml文件,添加下面配置信息来将目录改到你指定的地方:

HBase安装成功后有一个简单管理界面,运行在端口http:// localhost:60010,如图1-2所示。

安装完成,HBase已经启动,现在开始使用HBase。

图1-2 HBase Master状态页面。该页面可以看到HBase的健康状态。也可以了解数据的分布,执行一些基本的管理任务,但是大部分管理任务不是在这个页面完成的。第10章将教你更多HBase运维知识

1.3.2 HBase Shell命令行交互

你可以使用HBase Shell,通过命令行方式和HBase进行交互。本地安装和集群安装都采用同样的Shell方式。HBase Shell是一个封装了Java客户端API的JRuby应用软件,有两种运行方式:交互模式和批处理模式。交互模式用于对HBase进行随时访问交互,批处理模式主要通过Shell脚本进行程序化交互或者用于加载小文件。在本章节我们使用交互模式。

JRuby和JVM语言

不熟悉Java的人可能被JRuby的概念搞迷糊了。JRuby是在Java运行时上面的Ruby编程语言的实现。除了正常的Ruby语法,JRuby支持访问Java对象和函数库。JVM上不仅仅只是Java和JRuby。Jython是JVM上Python的实现,还有一些完全不同的语言,如Clojure和Scala。所有这些语言都可以通过Java客户端API来访问HBase。

让我们开始使用交互模式。在终端中执行hbase shell命令启动Shell。Shell可以支持命令自动补全和命令文档内联访问:

走到这一步,可以确认Java和HBase函数库已经安装成功。为了最终验证,可以试试列出HBase中所有表的命令。这个动作执行了一个全程请求,从客户端应用到HBase服务器,然后返回。在Shell提示符下,输入list然后按下回车键。你应该看到输出0个结果,以及接下来的提示符:

完成安装和验证后,现在创建表并存储一些数据。

1.3.3 存储数据

HBase使用表作为顶级结构来存储数据。写数据到HBase,就是写数据到表。现在开始,创建一个有一个列族的表,名字是 mytable。是的,列族(别着急,后面会解释这个术语)。现在创建表:

1.写数据
表创建后,现在写入一些数据。我们往表里写入字符串hello HBase。按HBase的说法,我们这么说,“在'mytable'表的'first'行中的'cf:message'列对应的数据单元中插入字节数组'hello HBase'”能听懂吗?下一章我们会解释所有这些术语。现在,执行写入命令:

简单吧。HBase存储数字的方式和存储字符串一样。继续多增加几个值,如下:

现在表里有3行和3个数据单元。注意,在使用列的时候你并没有提前定义这些列,你也没有定义往每个列里存储的数据的类型。这就是NoSQL粉丝们所说的,HBase是一种无模式(schema-less)的数据库。如果写入数据后不能读取出来也是没有用的,现在读回数据看看。

2.读数据
HBase有两种方式读取数据:get和scan。你肯定敏锐地注意到了,HBase存储数据的命令是put。和put相对应,读取一行的命令是get。还记得我们说过,HBase除了键值API还有一些特别之处吗?scan就是这个特别所在。第2章会介绍scan是如何工作的以及为什么它很重要,同时会重点关注如何使用它。

现在执行get:

如上所示,你得到了第一行。Shell输出了该行所有数据单元,按列组织,输出值还附带时间戳。HBase可以存储每个数据单元的多个时间版本。存储的版本数量默认值是3个,但可以重新设置。读取的时候,除非特别指定,否则默认返回最新时间版本。如果你不希望存储多个时间版本,可以设置HBase只存储一个版本,但是绝不要禁用这个特性。

使用scan命令,你会得到多行数据。但是要小心,我们必须提醒你,除非特别指定,否则该命令会返回表里的所有行。现在执行scan:

返回了所有数据。注意观察HBase返回行的顺序,是按行的名字排序的。HBase称之谓行键(rowkey)。HBase还有很多技巧,但是所有其他东西都建立在你刚才使用的基本概念上。好好体会一下。

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

《MapReduce 2.0源码分析与编程实战》一1.3 你好HBase的相关文章

《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.1 数据管理系统:速成

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

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

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