------------------------------------------------
一、前言
二、环境
三、配置
1.解压hbase安装包
2.配置系统环境变量
3.修改conf/hbase-env.sh脚本,设置环境变量
4.编辑hbase-site.xml进行配置
5.修改regionservers,添加所有slave主机
6.修改hadoop下的hdfs-site.xml
7.分发到各个slave主机
8.启动Hbase
9.验证Hmaster已经启动
四、测试
-----------------------------------------------
一、前言
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase在完全分布式环境下,由Master进程负责管理RegionServers集群的负载均衡以及资源分配,ZooKeeper负责集群元数据的维护并且监控集群的状态以防止单点故障,每个RegionServer会负责具体数据块的读写,HBase所有的数据存储在HDFS系统上。
二、环境
系统:CentOS6.4 32位
hadoop版本:hadoop-0.20.2.tar.gz (已安装)
HBase版本:hbase-0.90.5.tar.gz
请注意hadoop与hbase版本兼用问题。
在上一篇博客基础上做,已安装hadoop,新增slave3主机
http://yinuoqianjin.blog.51cto.com/8360868/1424948
IP规划:
192.168.2.101 master
192.168.2.102 slave1
192.168.2.103 slave2
192.168.2.104 slave3
三、配置
- 解压hbase安装包(先在master主机上安装及配置hbase,然后再分发给所有slave主机)
# tar -zxvf hbase-0.90.5.tar.gz -C /usr/ # mv /usr/hbase-0.90.5 /usr/hbase # cd /usr/hbase/ # chown -R hadoop:hadoop /usr/hbase/
2.配置系统环境变量(所有节点都要配置)
# vim /etc/profile //仿照JDK及hadoop的环境变量进行设置 JAVA_HOME=/usr/java/jdk1.7.0_45 HADOOP_HOME=/usr/hadoop HBASE_HOME=/usr/hbase PATH=$PATH:$JAVA_HOME/bin PATH=$PATH:$HADOOP_HOME/bin PATH=$PATH:$HBASE_HOME/bin export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME HADOOP_HOME HBASE_HOME # . /etc/profile
3.修改conf/hbase-env.sh脚本,设置环境变量
# su - hadoop $ mkdir /usr/hbase/tmp $ mkdir /usr/hadoop/tmp/pids
$ cd /usr/hbase/conf/ $ vim hbase-env.sh 25 export JAVA_HOME=/usr/java/jdk1.7.0_45 28 export HBASE_CLASSPATH=/usr/hadoop/conf 68 export HBASE_PID_DIR=/usr/hadoop/tmp/pids 76 export HBASE_MANAGES_ZK=true
4.编辑hbase-site.xml进行配置
$ vim hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/usr/hbase</value> //不要使用主机IP,使用主机名。 </property> <property> <name>hbase.tmp.dir</name> <value>/usr/hbase/tmp</value> </property> <property> <name>hbase.master</name> //如果是多台master主机,使用hbase.master.port <value>master:60000</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>slave1,slave2,slave3</value> //一定要是单数,这就是为何添加slave3主机目的 </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/hbase/tmp/zookeeper</value> </property> </configuration>
5.修改regionservers,添加所有slave主机
$ vim regionservers 192.168.2.102 192.168.2.103 192.168.2.104
6.修改hadoop下的hdfs-site.xml
$ vim /usr/hadoop/conf/hdfs-site.xml <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property>
$ cp /usr/hadoop/hadoop-0.20.2-core.jar /usr/hbase/lib/
hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机
hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群
hbase.master设置hbase的master主机名和端口
hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数
7.将master主机的hbase配置文件分发到各个slave主机
$ scp -r /usr/hbase/ slave1:/usr/ //分发到slave主机后一定要查看所属关系。 $ scp -r /usr/hbase/ slave2:/usr/ $ scp -r /usr/hbase/ slave3:/usr/
8.启动Hbase
[[email protected] ~]# su - hadoop [[email protected] ~]$ start-all.sh [[email protected] ~]$ start-hbase.sh
9.验证Hmaster已经启动
[[email protected] ~]$ jps 4575 JobTracker 7113 Jps 5777 HMaster 4510 SecondaryNameNode 4763 NameNode
[[email protected] ~]$ jps 3929 Jps 3509 HRegionServer 3693 HQuorumPeer 3246 TaskTracker
[[email protected] ~]$ jps 3649 HQuorumPeer 3465 HRegionServer 3211 TaskTracker 3872 Jps
[[email protected] ~]$ jps 3887 Jps 3481 HRegionServer 3230 TaskTracker 3671 HQuorumPeer
四、测试
1.登录hbase客户端
$ hbase shell HBase Shell; enter ‘help<RETURN>‘ for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011 hbase(main):001:0> version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011 hbase(main):002:0> status 3 servers, 0 dead, 0.6667 average load
2.新建数据表,并插入3条记录
hbase(main):003:0> create ‘test1‘,‘cf‘ 0 row(s) in 0.4900 seconds hbase(main):004:0> list TABLE test1 1 row(s) in 0.0370 seconds hbase(main):006:0> put ‘test1‘,‘row1‘,‘cf:a‘,‘values1‘ 0 row(s) in 0.2470 seconds hbase(main):007:0> put ‘test1‘,‘row2‘,‘cf:b‘,‘values2‘ 0 row(s) in 0.0210 seconds hbase(main):008:0> put ‘test1‘,‘row3‘,‘cf:c‘,‘values3‘ 0 row(s) in 0.0190 seconds
3.查看插入的数据
hbase(main):009:0> scan ‘test1‘ ROW COLUMN+CELL row1 column=cf:a, timestamp=1402895980002, value=values1 row2 column=cf:b, timestamp=1402895988854, value=values2 row3 column=cf:c, timestamp=1402895997772, value=values3 3 row(s) in 0.0710 seconds
4.读取单条记录
hbase(main):010:0> get ‘test1‘,‘row1‘ COLUMN CELL cf:a timestamp=1402895980002, value=values1 1 row(s) in 0.0310 seconds
5.停用并删除数据表
hbase(main):012:0> disable ‘test1‘ 0 row(s) in 2.1270 seconds hbase(main):013:0> drop ‘test1‘ 0 row(s) in 1.2400 seconds hbase(main):014:0> list TABLE 0 row(s) in 0.0260 seconds
6.退出
hbase(main):015:0> quit
PS:在此肯定会遇到多种错误,即使按照我的步骤,也不见得能完全正常,我琢磨了两天,看了各种文档,修改了太多的地方,比如master主机的hmaster进程无法启动,一切正常后插入数据报错等等,生活不就在于折腾吗,以上步骤只是大概步骤,祝好运!
HBase安装与配置(完全分布式),布布扣,bubuko.com