全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

深入浅析hbase的优点

hbase是运行在Hadoop上的NoSQL数据库,它是一个分布式的和可扩展的大数据仓库,也就是说HBase能够利用HDFS的分布式处理模式,并从Hadoop的MapReduce程序模型中获益。这意味着在一组商业硬件上存储许多具有数十亿行和上百万列的大表。除去Hadoop的优势,HBase本身就是十分强大的数据库,它能够融合key/value存储模式带来实时查询的能力,以及通过MapReduce进行离线处理或者批处理的能力。总的来说,Hbase能够让你在大量的数据中查询记录,也可以从中获得综合分析报告。

谷歌曾经面对过一个挑战的问题:如何能在整个互联网上提供实时的搜索结果?答案是它本质上需要将互联网缓存,并重新定义在这样庞大的缓存上快速查找的新方法。为了达到这个目的,定义如下技术:

·谷歌文件系统GFS:可扩展分布式文件系统,用于大型的、分布式的、数据密集型的应用程序。

·BigTable:分布式存储系统,用于管理被设计成规模很大的结构化数据:来自数以千计商用服务器的PB级别的数据。

·MapReduce:一个程序模型,用于处理和生成大数据集的相关实现。

在谷歌发布这些技术的文档之后,不久以后我们就看到了它们的开源实现版本,就在2007年,MikeCafarella发布了BigTable开源实现的代码,他称其为HBase,自此,HBase成为Apache的顶级项目,并运行在Facebook,Twitter,Adobe……仅举几个例子。

HBase不是一个关系型数据库,它需要不同的方法定义你的数据模型,HBase实际上定义了一个四维数据模型,下面就是每一维度的定义:

·行键:每行都有唯一的行键,行键没有数据类型,它内部被认为是一个字节数组。

·列簇:数据在行中被组织成列簇,每行有相同的列簇,但是在行之间,相同的列簇不需要有相同的列修饰符。在引擎中,HBase将列簇存储在它自己的数据文件中,所以,它们需要事先被定义,此外,改变列簇并不容易。

·列修饰符:列簇定义真实的列,被称之为列修饰符,你可以认为列修饰符就是列本身。

·版本:每列都可以有一个可配置的版本数量,你可以通过列修饰符的制定版本获取数据。


Figure1.HBaseFour-Dimensional Data Model

如图1中所示,通过行键获取一个指定的行,它由一个或多个列簇构成,每个列簇有一个或多个列修饰符(图1中称为列),每列又可以有一个或多个版本。为了获取指定数据,你需要知道它的行键、列簇、列修饰符以及版本。当设计HBase数据模型时,对考虑数据是如何被获取是十分有帮助的。你可以通过以下两种方式获得HBase数据:

·通过他们的行键,或者一系列行键的表扫描。

·使用map-reduce进行批操作

这种双重获取数据的方法使得HBase变得十分强大,典型地,在Hadoop中存储数据意味着它对离线或批处理方式分析是有益的(尤其是批处理分析),但是,对实时获取是不必要的。HBase通过key/value存储来支持实时分析,以及通过map-reduce支持批处理分析。让我们首先来看实时数据获取,作为key/value存储,key是行键,value是列簇的集合,如图2所示。


Figure2.HBaseas a Key/Value Store

如你在图2中看到的,key是我们所提到过的行键,value是列簇的集合。你可以通过key检索到value,或者换句话说,你可以通过行键“得到”行,或者你能通过给定起始和终止行键检索一系列行,这就是前面提到的表扫描。你不能实时的查询一个列的值,这就引出了一个重要的话题:行键的设计。

有两个原因令行键的设计十分重要:

·表扫描是对行键的操作,所以,行键的设计控制着你能够通过HBase执行的实时/直接获取量。

·当在生产环境中运行HBase时,它在HDFS上部运行,数据基于行键通过HDFS,如果你所有的行键都是以user-开头,那么很有可能你大部分数据都被分配一个节点上(违背了分布式数据的初衷),因此,你的行键应该是有足够的差异性以便分布式地通过整个部署。

你定义行键的方式取决于你想怎样存取那些行。如果你想以用户为基础存储数据,那么一个策略是利用字节队列在HBase中存储行键,所以我们可以创建一个用户ID的哈希(例如MD5或SHA-1),然后在哈希后面附上时间(long类型)。使用哈希有两个重点:(1)是它能够将value分散开,数据能够分布式地通过簇,(2)是它确保key的长度是一致的,以更加容易在表扫描中使用。

讲了足够多的理论,下面部分向你展示如何搭建HBase环境,并如何通过命令行使用。

你可以从Apache网站下载HBase,在写本文时,最新的版本是0.98.5,HBase团队推荐你在UNIX/Linux环境下安装HBase,如果你想在Windows下运行,你需要先安装Cygwin,并在这上运行HBase。当你下载完这些文件,解压到硬盘上。此外,你还需要安装Java环境,如果你还没有,从Oracle网站下载Java环境。在环境配置中添加名为HBASE_HOME的变量,值为你解压HBase文件的根目录,随后,执行bin文件夹下的start-hbase.sh脚本,它会在下面目录输出日志文件:

$HBASE_HOME/logs/

你可以在浏览器中输入下面URL测试是否安装正确:

http://localhost:60010

如果安装正确,你应该看到下面界面。


Figure3.HBaseManagement Screen

让我们开始用命令行操作HBase,在HBasebin目录下执行下面命令:

./hbase shell

你应该看到如下类似的输出:

HBase Shell; enter'help' for list of supported commands.
Type "exit" toleave the HBase Shell
Version0.98.5-hadoop2, rUnknown, MonAug4 23:58:06 PDT2014
hbase(main):001:0>

创建一个名为PageViews的表,并具有名为info的列簇:

hbase(main):002:0> create'PageViews', 'info'
0 row(s) in 5.3160seconds
=> Hbase::Table- PageViews

每张表至少要有一个列簇,因此我们创建了info,现在,看看我们的表,执行下面list命令:

hbase(main):002:0>list
TABLE
PageViews
1 row(s) in 0.0350seconds
=>["PageViews"]

如你所见,list命令返回一个名为PageViews的表,我们可以通过describe命令得到表的更多信息:

hbase(main):003:0> describe'PageViews'
DESCRIPTIONENABLED
'PageViews',{NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER=> 'ROW',
REPLICATION_SCOPE=> '0', VERSIONS => '1', COMPRESSION => 'NONEtrue
',MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS=> 'false',
BLOCKSIZE=> '65536', IN_MEMORY => 'false', BLOCKCACHE =>'true'}
1 row(s) in 0.0480seconds

Describe命令返回表的详细信息,包括列簇的列表,这里我们创建的仅有一个:info,现在为表添加以下数据,下面命令是在info中添加新的行:

hbase(main):004:0> put'PageViews', 'rowkey1', 'info:page', '/mypage'
0 row(s) in 0.0850seconds

Put命令插入一条行键为rowkey1的新纪录,指定在info下的page列,插入值为/mypage的记录,我们随后可以通过get命令通过行键rowkey1查询到这条记录:

hbase(main):005:0> get'PageViews', 'rowkey1'
COLUMNCELL
info:pagetimestamp=1410374788088, value=/mypage
1 row(s) in 0.0250seconds

你可以看到列info:page,或者更多具体的列,其值为/mypage,并带有时间戳表明该条记录是什么时候插入的。让我们在做表扫描之前再添加一行:

hbase(main):006:0> put'PageViews', 'rowkey2', 'info:page', '/myotherpage'
0 row(s) in 0.0050seconds

现在我们有两行记录了,让我们查询出PageViews表的所有记录:

hbase(main):007:0> scan'PageViews'
ROWCOLUMN+CELL
rowkey1column=info:page, timestamp=1410374788088, value=/mypage
rowkey2column=info:page, timestamp=1410374823590,value=/myotherpage
2 row(s) in 0.0350seconds

如前面所提到的,我们不能查询本身,但是我们可以对表进行scan操作,如果你执行scantable命令,它会返回表中所有行,这很有可能不是你想要做的。你可以给出行的范围来限制返回的结果,让我们插入一带有s开头行键的新记录:

hbase(main):012:0> put'PageViews', 'srowkey2', 'info:page', '/myotherpage'

现在,如果我增加点限制,想查询行键在r和s之间的记录,可以使用如下结构:

hbase(main):014:0> scan'PageViews', { STARTROW => 'r', ENDROW => 's' }
ROWCOLUMN+CELL
rowkey1column=info:page, timestamp=1410374788088, value=/mypage
rowkey2column=info:page, timestamp=1410374823590,value=/myotherpage
2 row(s) in 0.0080seconds

这个scan返回了仅有s开头的记录,这个类比是基于全行键上的,所以rowkey1比r大,所有它被返回了。另外,scan的结果包含了所指范围的STARTROW,但不包含ENDROW,注意,ENDROW不是必须指定的,如果我们执行相同查询只给出了STARTROW,那么我们会得到行键比r大的所有记录。

hbase(main):013:0> scan'PageViews', { STARTROW => 'r' }
ROWCOLUMN+CELL
rowkey1column=info:page, timestamp=1410374788088, value=/mypage
rowkey2column=info:page, timestamp=1410374823590,value=/myotherpage
srowkey2column=info:page,timestamp=1410375975965, value=/myotherpage
3 row(s) in 0.0120seconds

HBase是一种NoSQL,通常被称为Hadoop Database,它是开源并基于Google BigTable白皮书,HBase运行在HDFS之上,因此使它具有高度可扩展性,并支持Hadoopmap-reduce程序设计模型。HBase有两种访问方式:通过行键进行随机访问;通过map-reduce脱机或批访问。

本文讲述了HBase的特征和它的优点,并简要回顾了行键设计的重点之处,它还向你展示了如何在本地配置HBase环境,使用命令创建表、插入数据、检索指定行以及最后如何进行scan操作

总结

以上所述是小编给大家介绍的hbase的优点,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# hbase  # 优点  # 通用MapReduce程序复制HBase表数据  # Hadoop+HBase+ZooKeeper分布式集群环境搭建步骤  # 10大HBase常见运维工具整理小结  # Hbase入门详解  # hbase 简介  # Hbase列式存储入门教程  # 详解HBase表的数据模型  # 你可以  # 让我们  # 你想  # 批处理  # 修饰符  # 多个  # 我们可以  # 有一个  # 离线  # 如果你  # 开源  # 值为  # 要有  # 你在  # 它是  # 你应该  # 如图  # 所示  # 向你  # 它会 


相关文章: 建站之星如何防范黑客攻击与数据泄露?  c++怎么用jemalloc c++替换默认内存分配器【性能】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  盐城做公司网站,江苏电子版退休证办理流程?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站之星收费标准详解:套餐费用及年费价格表一览  制作网站的模板软件,网站怎么建设?  如何用PHP快速搭建CMS系统?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  建站之星安装失败:服务器环境不兼容?  非常酷的网站设计制作软件,酷培ai教育官方网站?  javascript中对象的定义、使用以及对象和原型链操作小结  公司网站的制作公司,企业网站制作基本流程有哪些?  如何用wdcp快速搭建高效网站?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何通过虚拟主机快速搭建个人网站?  宝塔新建站点报错如何解决?  临沂网站制作企业,临沂第三中学官方网站?  PHP 500报错的快速解决方法  如何通过主机屋免费建站教程十分钟搭建网站?  个人网站制作流程图片大全,个人网站如何注销?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何高效配置IIS服务器搭建网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何选择可靠的免备案建站服务器?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  已有域名如何免费搭建网站?  网站专业制作公司有哪些,做一个公司网站要多少钱?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在Tomcat中配置并部署网站项目?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  手机网站制作与建设方案,手机网站如何建设?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  C#如何在一个XML文件中查找并替换文本内容  公众号网站制作网页,微信公众号怎么制作?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何通过可视化优化提升建站效果?  如何选择适配移动端的WAP自助建站平台?  如何在云虚拟主机上快速搭建个人网站?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何登录建站主机?访问步骤全解析  如何自定义建站之星模板颜色并下载新样式?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何挑选最适合建站的高性能VPS主机?  北京制作网站的公司,北京铁路集团官方网站?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。