日期:2014-05-17 浏览次数:20864 次
1.简介?
HBase是 Hadoop 的正式子项目,它是一个面向列的分布式数据库,它在存储数据结构上并非关系型,而是疏松分布式的,持久并按多维排序并索引的map型,其思想源于Google的BigTable论文。(Google BigTable的paper: http://labs.google.com/papers/bigtable-osdi06.pdf)?
由于HBase是一个分布式、大规模的平台,主要安装在类Unix平台上。但是由于其开发语言是Java,因此它同样具有跨平台的特性,同样也可以安装在Windows操作系统上。为了方便起见,使用具有类Unix特性的Cygwin来安装HBase。?
2.目的?
本文主要阐述在伪分布式模式(Pseudo-distributed mode)下,在Windows操作系统上使用Cygwin来安装、运行和测试HBase项目。对于真正的分布式的集群配置,可以参考本文以及HBase项目官网(http://hadoop.apache.org/hbase/)中的讲解。?
3.安装与配置?
软件版本:?
? JDK 1.6(或以上版本)?
? Cygwin 2.5?
? Hadoop 0.20.x?
? HBase 0.20.x?
3.1 Java、Cygwin、SSH?
这里的三个软件的安装过程,可以参考《Hadoop开发者》杂志创刊号中《在Windows 上安装Hadoop 教程》,在此不再赘述。?
3.2 Hadoop?
同样,Hadoop的安装也可以参考《Hadoop开发者》杂志创刊号中《在Windows 上安装Hadoop 教程》一文。但是根据笔者的安装过程,列出以下几点注意:?
1. 在配置hadoop-env.sh中的JAVA_HOME时,Jdk往往安装在C:\Program Files\文件夹下,例如:C:\Program Files\Java\jdk1.6.0_01。JAVA_HOME应配置如下:?
export JAVA_HOME=/cygdrive/c/Progra~1/Java/jdk1.6.0_01?
其中,由于Cygwin无法识别“Program Files”中间的空格,如果不按照上述设置,则系统无法找到Jdk安装目录。?
当然,你也可以在Cygwin的/usr/local目录下添加一个连接,从而方便配置JAVA_HOME。例如:?
ln -s /cygdrive/c/Program\ Files/Java/jdk1.6.0_01 \?
/usr/local/jdk1.6.0_01?
export JAVA_HOME=/usr/local/jdk1.6.0_01?
2. 在core-site.xml配置文件中,属性“fs.default.name”的值与《Hadoop开发者》杂志创刊号中《在Windows 上安装Hadoop 教程》一文中的值保持一致,设置为:“hdfs://localhost:8888”。同样,配置文件mapred-site.xml中的“mapred.job.tracker”属性值设置为:“localhost:9999”。?
3. 在Hadoop分布式文件系统中创建两个目录hbase和tmp,这两个目录将在下面安装HBase的过程中使用,在Shell中输入命令如下:
bin/hadoop dfs –mkdir hbase tmp?
Hadoop的分布式文件系统中将增加hbase和tmp两个目录,如下图所示:?
?
3.3 HBase?
假设HBASE_HOME为HBase的安装目录。?
1. 在$HBASE_HOME/conf/hbase-env.sh中增加如下两个环境变量:?
export JAVA_HOME=/cygdrive/c/Progra~1/Java/jdk1.6.0_01?
export HBASE_IDENT_STRING=localhost?
其中,JAVA_HOME的设置参照上文的说明。?
2. 将$HBASE_HOME/conf/hbase-default.xml中的所有内容,拷贝到$HBASE_HOME/conf/hbase-site.xml文件中。?
3. 修改hbase-site.xml配置文件中的“hbase.rootdir”属性,以及“hbase.tmp.dir”属性,如下所示:?
<property>?
?? <name>hbase.rootdir</name>?
??? <value>hdfs://localhost:8888/hbase</value>?
??? <description>The directory shared by region servers.?
??? Should be fully-qualified to include the filesystem to use.?
??? E.g: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR?
??? </description>?
</property>?
……?
<property>?
??? <name>hbase.tmp.dir</name>?
??? <value>hdfs://localhost:8888/tmp</value>?
<description>Temporary directory on the local filesystem.</description>?
</property>?
…….?
注意,这里设置的两个目录正是上文中在Hadoop的分布式文件系统中建立的两个目录,此外,端口号也与前面保持一致,设置为:“8888”。?
4. 修改hbase-site.xml配置文件中的“hbase.zookeeper.quorum”属性的值为“127.0.0.1”,在Cygwin中,“localhost”有时无法正确识别。如下所示:?
<property>?
<name>hbase.zookeeper.quorum</name>?
??? <value>127.0.0.1</value>?
??? <description>Comma separated list of servers in the ZooKeeper Quorum.?
For example, "host1.mydomain.com,?
host2.mydomain.com,? host3.mydomain.com".?
??? By default this is set to localhost for local and pseudo-distributed modes?
of operation. For a fully-distributed setup, this should be set to a full?
list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK?
is set in hbase-env.sh?
??? this is the list of servers which we will start/stop ZooKeeper on.?
??? </description>?
</property>?
4.测试?
下面测试系统是否正确安装。?
1. 打开Cygwin的终端,执行“ssh localhost”命令。?
2. 在Hadoop安装目录下,执行“bin/start-all.sh”脚本,启动Hadoop。?
3. 在Hbase安装目录下,执行“bin/start-hbase.sh”脚本,启动HBase。?
4. 在Hbase安装目录下,执行“bin/hbase shell”命令,进入Shell命令模式。?
5. 在Shell中输入“create 'test', 'data'”,执行结果通过输入“list”命令进行查看。如下图所示:?
?
6. 在Shell中分别输入“put 'test', 'row1', 'data:1', 'val