全部博文(436)
分类: 云计算
2011-10-31 00:20:04
HBase is the database. Use it when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware.
第一阶段:相关资料查找:
一、初步认识:
HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。
HBase不同于一般的关系数据库,它是一个适合于非结构化松散数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
仅能通过主键(row key)和主键的range来检索数据
仅支持单行事务
Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
HBase定位:
HBase在整个Hadoop系统中的位置。与MapReduce紧密连接,建立在HDFS之上。
二、HBase的重要属性(简要说明):
1、Row key行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。
2、存储时,数据按照Row key的字典序排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。
三、HBase特性小总结
1 大:一个表可以有上亿行,上百万列
2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
第二阶段:环境搭建:
系统:Windows7 Utimate Edition
虚拟机:Cygwin 3.1
Hadoop 0.21+HBase 0.90.4
参考:
《Hadoop + HBase + Cygwin + Windows 7》
《Windows安装hadoop》
《实战Hadoop》
《Windows下基于Cygwin和Eclipse的Hadoop开发环境完全配置》
《Eclipse下hadoop插件的配置》
《Hadoop学习笔记-入门伪分布式配置》
《Hadoop权威指南》
《Hadoop开发者(期刊)》
等网上及图书资料
因考虑到本机电脑内存较小(2G),有可能带不动虚拟机上的linux平台同时运行Hadoop和Hbase故大胆尝试windows cygwin模拟linux环境配置hadoop,理论基础是:Hadoop虽然没有在windows下真正部署,但可以windows可以作为其开发平台
经过安装配置cygwin环境,ssh服务器,hadoop环境后运行结果如下:
启动hadoop
确认启动:
NameNode
Hadoop Map
HBase
PS:国内网友普遍抱怨Hbase与Hadoop0.21不支持,而作者抱着重在尝试的态度没想到配置成功。理论支持是国外有人用Hadoop0.21+Hbase 0.20.6配置成功
启动hbase
确认Master运行:
基本命令提示符下的Shell操作:
存在的问题
第一阶段问题:
eclipse插件Hadoop小象图标点击后没反应(以解决)
解决方案:
1、按照论坛的方法,将hadoop0.21插件包bug处修改论坛分析原因是0.21版本一个文件的引用名延续了0.20时的hadoopcore而非hadoop0.21的hadoop-common,hadoop-hdfs和hadoop-mapred
在修改后,尝试失败,小象图标消失:
2、经过小组讨论后,发现补充其它安装包,而保留原来的设置能达到效果,而非摒弃原来设置不用。修改后的文件如下:
运行成功:
第二阶段问题:
Eclipse 3.6下运行hadoop程序没反应
推断:eclispe hadoop.jar插件版本不支持正在查找资料研究中
目前我们的研究阶段到了用eclipse运行Hadoop及hbase程序,修改例子代码阶段
全组人员正在通力合作,探究解决问题。
预计下面我们将进行HBase API使用与构建MapReduce Hbase索引的任务。
感谢老师与同学们的支持,我们会尽我所能完成任务的!
吴宇航 2011年10月31日