转自:http://blog.csdn.net/FranklySun/article/details/6443027
本文重点讲解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的操作可参考网上资料)