4.2 HBase入门
4.2.1 HBase的安装配置
HBase和Hadoop一样支持三种运行模式:单机模式、伪分布模式和完全分布模式。HBase目前的稳定版本为0.90.3,该版本只能运行在Hadoop 0.20.*,无法运行在Hadoop 0.21.*(包括0.22.*)。在安装伪分布模式和完全分布式模式时,务必确保Hadoop也运行在相应的模式下。
1.单机模式
(1)安装HBase。
解压HBase到合适的目录下,如用户的根目录,命令如下:
$ cd $ tar -zxvf hbase-0.90.3.tar.gz
(2)编辑{HBASE_HOME}/conf/hbase-env.sh。
把JAVA_HOME变量设置为Java安装的根目录,如图4-4所示。
图4-4 配置JAVA_HOME
(3)编辑{HBASE_HOME}/conf/hbase-site.xml。
在启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存放位置,此处设置为用户根目录下的hbase-tmp目录,配置如下:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>file:///home/${user.name}/hbase-tmp</value> </property> </configuration>
注意,hbase.rootdir默认为/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据(大部分操作系统重启后会清除/tmp目录下的内容)。
(4)启动HBase。
$ cd ~/hbase-0.90.3/ $ bin/start-hbase.sh starting master, logging to /home/hao/hbase-0.90.3/bin/../logs/hbase-hao-master-UbuntuMaster.out
(5)进入shell模式。
进入shell模式后,通过status命令查看HBase的运行状态,exit命令退出shell。
$ bin/hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands Type "exit<RETURN>" to leave the HBase Shell Version 0.90.3, r1100350, Sat May 7 13:31:12 PDT 2011
hbase(main):001:0> status 1 servers, 0 dead, 2.0000 average load
hbase(main):002:0> exit
(6)停止HBase。
$ bin/stop-hbase.sh stopping hbase.......
如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录下的logs子目录查看错误原因。
2.伪分布模式
(1)编辑{HBASE_HOME}/conf/hbase-env.sh。
添加变量HBASE_CLASSPATH,并将路径设置为{HADOOP_HOME}目录下的conf目录,如图4-5所示。
图4-5 配置HBASE_CLASSPATH
(2)编辑{HBASE_HOME}/conf/hbase-site.xml。
修改hbase.rootdir,将其指向localhost(端口保持一致),并指定HBase在HDFS上的存储路径。将属性hbase.cluster.distributed设置为true。假设当前Hadoop集群运行在伪分布模式下,且NameNode运行在9110端口,详细配置如下:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9110/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
(3)替换Hadoop jar包。
此时启动HBase,会因为Hadoop和HBase的客户端协议不一致而导致HMaster启动异常,需要用{HADOOP_HOME}下的hadoop-0.20.2-core.jar替换掉{HADOOP_HOME}/lib目录下的hadoop-core-0.20-append-r1056497.jar。
$ cd ~/hbase-0.90.3/ $ cp ../hadoop-0.20.2/hadoop-0.20.2-core.jar lib $ rm lib/hadoop-core-0.20-append-r1056497.jar
完成上述操作后,先启动Hadoop然后启动HBase,就可以进行相应的操作了。注意,如果Hadoop的版本是0.20.203.0,可能会遇到找不到Configuration类的错误,导致HMaster无法启动,需要复制{HADOOP_ HOME}/lib下的commons-configuration-1.6.jar到HBase的lib目录下。
3.完全分布模式
(1)集群环境。
如下所示为当前Hadoop集群的运行情况。务必确保在配置Hadoop时已配置好hosts文件的内容,否则在HBase的配置文件中使用主机名代替IP地址时会出现错误,读者需要根据实际情况使用相应的主机名或IP地址。
节点IP 主机名 守护进程 192.168.11.200 UbuntuMaster NameNode、SecondaryNameNode、JobTracker 192.168.11.201 UbuntuSlave1 DataNode、TaskTracker 192.168.11.202 UbuntuSlave1 DataNode、TaskTracker 192.168.11.203 UbuntuSlave1 DataNode、TaskTracker
如下所示为即将安装的HBase集群的运行情况。
节点IP 主机名 守护进程 192.168.11.200 UbuntuMaster HMaster 192.168.11.201 UbuntuSlave1 HQuorumPeer、HRegionServer 192.168.11.202 UbuntuSlave1 HQuorumPeer、HRegionServer 192.168.11.203 UbuntuSlave1 HQuorumPeer、HRegionServer
(2)编辑{HBASE_HOME}/conf/hbase-env.sh。
添加变量HBASE_MANAGES_ZK,并设置为true,表示由HBase负责启动和关闭ZooKeeper,如图4-6所示。
图4-6 配置HBASE_MANAGES_ZK
(3)编辑{HBASE_HOME}/conf/hbase-site.xml。
修改hbase.rootdir,将其指向Hadoop集群的NameNode(端口也要保持一致),同时指定HBase的存储路径。将hbase.zookeeper.quorum设置为所有ZooKeeper节点的主机名或IP地址(以逗号隔开),默认值为localhost。属性hbase.zookeeper.property.dataDir表示ZooKeeper的目录,默认为/tmp,系统重启后会被清空。假设当前Hadoop集群的NameNode运行在8888端口,详细配置如下:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://UbuntuMaster:8888/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>UbuntuSlave1,UbuntuSlave2,UbuntuSlave3</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/${user.name}/tmp/zookeeper</value> </property> </configuration>
(4)编辑${HBASE_HOME}/conf/regionservers。
在regionservers文件中加入所有Region服务器的主机名或IP地址,内容如下:
UbuntuSlave1 UbuntuSlave2 UbuntuSlave3
(5)把HBase复制到其他机器上。
使用的命令如下:
$ scp -r ~/hbase-0.90.3/ UbuntuSlave1:/home/hao/ $ scp -r ~/hbase-0.90.3/ UbuntuSlave2:/home/hao/ $ scp -r ~/hbase-0.90.3/ UbuntuSlave3:/home/hao/
完成上述操作后,即可启动Hadoop和HBase。通过地址http://ubuntumaster:50070可以看到,HBase在HDFS上自动生成了/hbase目录,用于存放相关数据,如图4-7所示。
图4-7 HBase目录
4.2.2 HBase用户界面
1.Master页面
通过地址http://ubuntumaster:60010/master.jsp可以查看HBase的相关信息,如图4-8所示。主要包含的信息如下:
(1)Master属性信息包含了当前集群的详细信息,从上往下依次为HBase的版本及编译信息、Hadoop的版本及编译信息、HBase根目录的路径、Region服务器的平均负载以及ZooKeeper Quorums的地址。
(2)目录表信息包含两个目录表:-ROOT-和.META.。
(3)用户表信息给出了HBase中的表信息及相关属性。
(4)Region服务器信息给出了所有Region服务器的地址。
图4-8 Master页面
2.ZooKeeper页面
通过Master页面中Master属性提供的链接,可以进入ZooKeeper页面,该页面显示了HBase的根目录、当前的主Master地址、保存-ROOT-表的Region服务器的地址、其他Region服务器的地址及ZooKeeper的一些内部信息,如图4-9所示。
图4-9 ZooKeeper页面
3.用户表页面
通过Master页面中用户表信息提供的链接,可以进入用户表页面,如图4-10所示。该页面给出了表当前是否可用以及表在Region服务器上的信息。同时提供了根据行键合并及拆分表的操作。
图4-10 用户表页面
4.Region服务器页面
通过Master页面中Region服务器信息提供的链接,可以进入Region服务器页面,该页面显示了Region服务器的基本属性和其上所有Regions的信息,如图4-11所示。
图4-11 Region服务器页面