本文重点讲解Hbase的安装、配置、问题解决
关于hadoop和zookeeper的安装配置及相关问题,可以参考:
hadoop:
zookeeper:
测试环境
三系统均为 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
必须正确的安装和配置,可参考(要注意:版本问题)
版本问题,这是一个非常重要的问题,一定要重视它,否则会很杯具。我就是因为这个整了好几个小时(当然还包括其他的问题)。
This version of HBase will only run on . 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 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, , on how to build an Hadoop from branch-0.20-append. Recommended.
以上是官方文档中的叙述,只看到了.,所以刚开始用了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的安装配置可参考
其中,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
安装
解压完成后建立链接(好处就不多说了):$ 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的操作可参考网上资料)
因篇幅问题不能全部显示,请点此查看更多更全内容