不要以为山寨的就是低端货,君不见BigTable的山寨版HBase就发展的如火如荼;山寨也是有技术含量的,从HADOOP下面的一个子项目发展为APACHE基金会的顶级项目,如今在开源业内的影响力更是与日俱增。
HBase应该可以算是NoSQL产品线中的一员,最起码不属于关系型数据库。在设计上属于结构化与非结构化的集合,其最大优势在于能够弹性伸缩,使其可以通过简单的增加节点的方式,来扩展支撑能力。今天我们先快速接触一下安装和使用,以加深对其的理解。
1、安装HBase
HBase的安装很像HADOOP,也分为单机模式,伪分布模式以及分布式模式,难易度也是依次排列。单机模式咱们就不讲了,忒没技术含量,一步到位,试一试分布式模式的安装和使用呗。
HBase的发展非常快,目前最新稳定版已经到了0.96.4。不过据说每种hadoop版本都对应有适合的HBase版本,若版本选择不匹配,则运行过程中可能出现各种异常。三思手头上的hadoop环境版本号为0.20.2,这里选择HBase-0.90.5版本,因为这是号称唯一一个能够良好支持0.2x版本的HBase。
下载/解压/修改用户属主,一条龙操作如下:
# wget http://mirror.bit.edu.cn/apache/hbase/hbase-0.90.5/hbase-0.90.5.tar.gz
# tar xvfz hbase-0.90.5.tar.gz -C /usr/local/
# mv /usr/local/hbase-0.90.5/lib/hadoop-core-0.20-append-r1056497.jar /usr/local/hbase-0.90.5/lib/hadoop-core-0.20-append-r1056497.bak
# cp /usr/local/hadoop-0.20.2/hadoop-0.20.2-core.jar /usr/local/hbase-0.90.5/lib/
# chown grid:grid /usr/local/hbase-0.90.5 -R
注意前面那个cp操作,从hadoop目录中复制hadoop-0.20.2-core.jar文件到hbase目录下,替换hbase下自带的core.jar文件,据说如不进行这个替换,那么HBase在启动过程中就会报错(有可能,hbase自带的核心版本号与本地hadoop版本号不同,为避免麻烦,替换最好),我没有做测试,反正参考网上文档时,别人说让替换,我就信了。
接下来的操作都是在grid用户(即运行hadoop的操作系统帐户)下进行,切换至grid用户下,并将HBase目录导入到PATH环境变量,方便我们调用命令:
修改hbase的环境变量文件,配置JAVA_HOME的值到正确的路径下。
$ vi /usr/local/hbase-0.90.5/conf/hbase-env.sh
增加两行内容(或者说设定两个环境变量):
修改hbase站点配置文件,配置hbase在hdfs中的存储路径。
$ vi /usr/local/hbase-0.90.5/conf/hbase-site.xml
增加下列配置:
<property>
<name>hbase.rootdir</name>
<value>hdfs://hdnode1:9000/hbase</value>
<description>The directory shared by region servers.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. </description>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://hdnode1:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdnode1,hdnode2,hdnode3,hdnode4,hdnode5</value>
<description>Comma separated list of servers in the ZooKeeper Quorum. </description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase-0.90.5/logs/zookeeper</value>
<description>Property from ZooKeeper¨s config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
编辑regionservers文件,类似hadoop中的conf/slaves文件,这里是用来指定HReginServers的服务器列表:
$ vi /usr/local/hbase-0.90.5/conf/regionservers
我们把5个节点都加进去:
hdnode1
hdnode2
hdnode3
hdnode4
hdnode5
将hbase-0.90.5文件夹打包并复制到其它四个节点,操作步骤如下:
$ tar cvfz hbase-0.95.tar.gz /usr/local/hbase-0.90.5
$ scp hbase-0.95.tar.gz hdnode2:~/
$ scp hbase-0.95.tar.gz hdnode3:~/
$ scp hbase-0.95.tar.gz hdnode4:~/
$ scp hbase-0.95.tar.gz hdnode5:~/
各个节点分别解压这个文件到/usr/local目录。
启动hbase服务(若要停止则用stop-hbase.sh脚本):
$ /usr/local/hbase-0.90.5/bin/start-hbase.sh
hdnode1节点被配置为hmaster,则该节点查询当前的进程,将能够看到:
[grid@hdnode1 ~]$ jps
13695 HMaster
13933 Jps
664 NameNode
818 SecondaryNameNode
13637 HQuorumPeer
13807 HRegionServer
895 JobTracker
而在其它结点上,应该能够看到HReginServer和HQuorumPeer进程:
[grid@hdnode3 ~]$ jps
2974 HQuorumPeer
3048 HRegionServer
16471 DataNode
16529 TaskTracker
3138 Jps
通过URL方式访问:http://192.168.30.203:60010/master.jsp,可以查看HBase的一些基础信息,日志等等。这样,如果过程中都没有报错,HBase就算安装好了。
HBase提供的接口方式非常多
下面我们就来逐个介绍一下。 |