《HBase管理指南》一1.7 HBase安装-阿里云开发者社区

开发者社区> 数据库> 正文

《HBase管理指南》一1.7 HBase安装

简介:

本节书摘来异步社区《HBase管理指南》一书中的第1章,第1.7节,作者: 蒋燚峰 译者: 苏南,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.7 HBase安装

完全分布式运行的HBase实例要在HDFS上运行一个或多个主节点(HMaster)和多个从节点(RegionServer)。它使用一个可靠的ZooKeeper仲裁团来协调HBase集群中的所有组件,包括主节点、从节点和客户端。

HMaster并非必须与HDFS NameNode运行在同一服务器上,但对小集群来说,为了便于管理通常会让它们运行在同一台服务器上。RegionServers通常被配置在HDFS的DataNode服务器上运行。在Datanode服务器上运行RegionServer还有数据局部化(data locality)的优势。在同一台服务器上运行DataNode可使服务器拥有一份RegionServer所需数据的完整拷贝。

本节将描述一个完全分布式HBase的安装。我们将在master1上安装HMaster,然后再安装三个区域服务器(slave1到slave3)。我们还要在client1上安装一个HBase客户端。

1.7.1 准备

首先,请确保在集群的所有服务器上都安装好了Java。

我们还是使用hadoop用户来作为所有HBase守护程序和文件的所有者。所有HBase文件和数据将被存储在/usr/local/hbase目录中。请提前在HBase集群的所有服务器上创建好这个目录。

我们将在client1上安装一个HBase客户端。因此,在client1上也要安装Java并准备好hadoop用户和目录。

要确保HDFS处于运行状态。你可以使用如下命令来访问HDFS,以确认其是否已正常启动。

hadoop@client1$ $HADOOP_HOME/bin/hadoop fs -ls /
我们不需要启动MapReduce,因为HBase通常不会使用MapReduce。

我们假设你正管理着自己的一套ZooKeeper,在这种情况下,你可以启动它,并确认是否正常运行。你可以通过向其客户端端口发送ruok命令的方式来确认它是否在正常运行。

hadoop@client1$ echo ruok | nc master1 2181

1.7.2 操作步骤

要安装一个完全分布式的HBase集群,我们需要先在主节点上下载并配置好HBase,然后将其同步到所有从节点和客户端上。

从HBase官方网站(http://www.apache.org/dyn/closer.cgi/hbase/)上,我们可以下载到HBase的最新稳定版本。

在编写本书时,其最新的稳定版本为0.92.1版。

1.下载HBase源码包,然后将其解压缩到我们为HBase准备的根目录中。另外,为了更便于安装,我们要设置一个HBASE_HOME环境变量。

hadoop@master1$ ln -s hbase-0.92.1 current
hadoop@master1$ export HBASE_HOME=/usr/local/hbase/current

2.我们将使用/usr/local/hbase/var作为HBase在本地文件系统中的临时目录。如果你已经在安装独立运行的HBase时创建了该目录,那么请先删除它。

hadoop@master1$ mkdir -p /usr/local/hbase/var

3.在HBase环境设置文件(hbase-env.sh)中设置JAVA_HOME,使HBase可以知道Java的安装位置。

hadoop@master1$ vi $HBASE_HOME/conf/hbase-env.sh
# The java implementation to use. Java 1.6 required.
export JAVA_HOME=/usr/local/jdk1.6

4.设置HBase使用独立的ZooKeeper仲裁团。

hadoop@master1$ vi $HBASE_HOME/conf/hbase-env.sh
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
export HBASE_MANAGES_ZK=false

5.在HBase配置文件(hbase-site.xml)中添加下列这些参数设置。

hadoop@master1$ vi $HBASE_HOME/conf/hbase-site.xml
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master1:8020/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/usr/local/hbase/var</value>
  </property>
  <property>
    <name>hbase.ZooKeeper.quorum</name>
    <value>master1</value>
  </property>
</configuration>

6.配置集群的从节点。

hadoop@master1$ vi $HBASE_HOME/conf/regionservers
slave1
slave2
slave3

7.将HDFS配置文件(hdfs-site.xml)链接至HBase的配置文件夹(conf)中,使HBase可以查看Hadoop集群上HDFS客户端的配置。

hadoop@master1$ ln -s $HADOOP_HOME/conf/hdfs-site.xml $HBASE_HOME/conf/ hdfs-site.xml

8.从Hadoop和ZooKeeper的安装目录中将hadoop-core、Zookeeper及其相关的JAR包复制到$HBASE_HOME/lib/目录中。

hadoop@master1$ rm -i $HBASE_HOME/lib/hadoop-core-*.jar
hadoop@master1$ rm -i $HBASE_HOME/lib/ZooKeeper-*.jar

hadoop@master1$ cp -i $HADOOP_HOME/hadoop-core-*.jar $HBASE_HOME/lib/
hadoop@master1$ cp -i $HADOOP_HOME/lib/commons-configuration-1.6.jar $HBASE _HOME/lib/
hadoop@master1$ cp -i $ZK_HOME/ZooKeeper-*.jar $HBASE_HOME/lib/

9.将/usr/local/hbase目录下的所有HBase文件从主节点同步到各客户端和从节点的同名目录中。

10.在主节点上启动HBase集群。

hadoop@master1$ $HBASE_HOME/bin/start-hbase.sh

11.在客户端节点上连接该HBase集群。

hadoop@client1$ $HBASE_HOME/bin/hbase shell

你也可以通过浏览器来访问HBase的Web用户界面。请确保你的主节点服务器上已经打开了60010端口。如图1-6所示,HBase Web界面的URL是http://master1:60010/master.jsp


6

12.在主节点上关闭HBase集群。

hadoop@master1$ $HBASE_HOME/bin/stop-hbase.sh

1.7.3 运行原理

在配置HBase集群时,我们通过指定hbase.rootdir属性将/hbase目录设定为了它在HDFS上的根目录。在HBase第一次启动时,它会自动创建该目录。你可以客户端机器上看到HBase在HDFS上创建的那些文件。

hadoop@client1$ $HADOOP_HOME/bin/hadoop fs -ls /hbase

我们希望我们的HBase能够运行在分布式模式下,所以我们在hbase-site.xml中将 hbase.cluster.distributed属性设为true。

通过在HBase-env.sh指定HBASE_MANAGES_ZK=false,我们还设定了该集群要使用一个独立的ZooKeeper仲裁团。所使用的ZooKeeper仲裁团由hbase.ZooKeeper.quorum属性来指定。你也可以使用集群模式的ZooKeeper,这时需要在该属性中列出Zookeeper仲裁团的所有服务器(比如zoo1、zoo2、zoo3)。

所有区域服务器都要在$HBASE_HOME/conf/regionservers中登记。在该配置文件中,每台区域服务器各占一行。在启动集群时,HBase会以SSH方式登录到该配置文件所记录的每台区域服务器上,然后启动该服务器上的HRegionServer守护进程。

由于hdfs-site.xml已被链接到了$HBASE_HOME/conf目录下,所以HBase可以访问hdfs-site.xml中的所有HDFS客户端的配置信息,比如dfs.replication设置。

HBase带有一些预构建好的hadoop-core和ZooKeeper的JAR文件。但与我们安装的Hadoop和ZooKeeper中的对应JAR包相比,这些预构建JAR包可能已经过时了。为了避免出现一些意外问题,要确保HBase使用的.jar文件与Hadoop和ZooKeeper所使用的对应文件版本相同。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章