本文重点讲解Hbase的安装、配置、问题解决

关于hadoop和zookeeper的安装配置及相关问题,可以参考:

hadoop:http://blog.csdn.net/FranklySun/archive/2011/05/13/6417984.aspx

zookeeper:http://blog.csdn.net/FranklySun/archive/2011/05/16/6424582.aspx

 

测试环境

三系统均为  Ubuntu11.04,分别是:

 

frank-1(主机名:即hostname):192.168.0.100   masters-----namenode
frank-2(主机名:即hostname):192.168.0.102   slaves-------datanode

frank-3(主机名:即hostname):192.168.0.103   slaves-------datanode

 

 

 

要求

 

以下是安装使用hbase所要遵守的要求,如果不这样做的话,会产生不可预知的异常、错误、数据丢少等问题(当然,有可能会成功)。

 

1、JDK

     这个不用说了,必须的(jdk6以上)

2、hadoop

     必须正确的安装和配置,可参考http://blog.csdn.net/FranklySun/archive/2011/05/13/6417984.aspx(要注意:版本问题)

 

     版本问题,这是一个非常重要的问题,一定要重视它,否则会很杯具。我就是因为这个整了好几个小时(当然还包括其他的问题)。

     This version of HBase will only run on Hadoop 0.20.x. It will not run on hadoop 0.21.x (nor 0.22.x). HBase will lose data unless it is running on an HDFS that has a durable sync. Currently only the branch-0.20-append branch has this attribute[]. No official releases have been made from this branch up to now so you will have to build your own Hadoop from the tip of this branch. Michael Noll has written a detailed blog, Building an Hadoop 0.20.x version for HBase 0.90.2, on how to build an Hadoop from branch-0.20-append. Recommended.

     以上是官方文档http://hbase.apache.org/book/notsoquick.html中的叙述,只看到了Hadoop 0.20.x.,所以刚开始用了hadoop-0.20.0,经测试是不可以的,hadoop-0.20.2测试成功(当然这里的hbase版本是0.90.2,其他的版本的情况就不清楚了)。

3、SSH

    也是必须的,上面hadoop的安装过程中提到。

4、DNS

     即:各节点的主机名与IP设置,在hadoop配置中也提到。

     如果,不是hosts中配置的服务器,还可以通过hbase.regionserver.dns.nameserver来另外指定。(这是在hbase-site.xml中配置)

5、NTP

    所有节点的时间校准。(网上有很多资料,这里省略)

6、ulimit and nproc(所有节点均要设置)

    默认的大小是1024,以Ubuntu为例:

    在/etc/security/limits.conf文件中增加以下配置:

    hadoop      -            nofile      32768

    hadoop      hard      nproc      32000

    hadoop      soft       nproc      32000

    在/etc/pam.d/common-session文件中增加下面配置,否则上面的配置不启作用:

    session      required       pam_limits.so

7、在/home/frank/HadoopInstall/hadoop-config/hdfs-site.xml文件中增加配置:

     <property>

<name>dfs.datanode.max.xcievers</name>

<value>4096</value>

</property>

8、ZooKeeper(使用单独的zookeeper,并非hbase自带的zookeeper)

zookeeper的安装配置可参考http://blog.csdn.net/FranklySun/archive/2011/05/16/6424582.aspx

     其中,zoo.cfg的配置如下:

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial 

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between 

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

dataDir=/home/frank/ZooKeeperInstall/data

# the port at which the clients will connect

clientPort=2222

 

server.1=192.168.0.100:2888:3888

server.2=192.168.0.102:2888:3888

server.3=192.168.0.103:2888:3888

 

 

安装

 

    很简单,下载hbase-0.20.2.tar.gz, 解压到预设目录即可。我的目录:/home/frank/HBaseInstall/

    解压完成后建立链接(好处就不多说了):$ ln -s hbase-0.20.2 hbase

 

配置(以下是按照集群的方式配置的,单机的配置可参考网上资料)

 

1、修改conf/hbase-env.sh

export JAVA_HOME=/home/frank/JavaInstall/jdk

export HBASE_CLASSPATH=/home/frank/HadoopInstall/hadoop/conf

export HBASE_MANAGES_ZK=false

 

2、修改hbase-site.xml,增加以下内容

<property>

    <name>hbase.rootdir</name>

    <value>hdfs://frank-1:9000/hbase</value>

</property>

<property>

    <name>hbase.cluster.distributed</name>

    <value>true</value>

</property>

    <property>

      <name>hbase.zookeeper.property.clientPort</name>

      <value>2222</value>

      <description>Property from ZooKeeper's config zoo.cfg.

      The port at which the clients will connect.

      </description>

    </property>

其中:

 

hbase.rootdir:“hdfs://frank-1:9000”这部分必须和hadoop-config/core-site.xml中的fs.default.name保持一致;

hbase.zookeeper.property.clientPort,是由于我在zoo.cfg中修改了默认的clientPort,所以在这里要设置,缺省是2181

 


3、把/home/frank/HadoopInstall/hadoop-config/hdfs-site.xml文件拷贝至hbase的conf文件夹下

 

4、把${ZOOKEEPER_HOME}/conf/zoo.cfg拷贝至hbase的conf文件夹下

 

5、在conf/regionservers中添加hadoop-config/conf/slaves中所有的datanode节点。

 

6、删除/hbase-0.90.2/lib/hadoop-core-0.20-append-r1056497.jar

     拷贝/hadoop-0.20.2/hadoop-0.20.0-core.jar到/hbase-0.90.2/lib/

 

7、最后,把配置好的hbase-0.20.2,拷贝到其它节点 scp

 

运行

 

Hadoop、ZooKeeper和HBase之间应该按照顺序启动和关闭:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集群—>停止Hadoop。

执行bin/start-hbase.sh和bin/stop-hbase.sh 脚本启动和停止HBase服务。

 

测试

 

可进入hbase shell,测试:


list  列出所有表

create 建表,如 create 'test','data'

put 插入数据

...(关于hbase的操作可参考网上资料)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐