HBase官方网站: http://hbase.apache.org/
官网使用向导:http://hbase.apache.org/book.html
1.上传hbase安装包:
版本:hbase-1.2.4-bin.tar.gz
2.解压:
sudo tar zxvf hbase-1.2.4-bin.tar.gz
sudo mv hbase-1.2.4 /data/
sudo chown hadoop:hadoop hbase-1.2.4/ -R
3.把hadoop的hdfs-site.xml和core-site.xml 放hbase/conf下(zk集群已经安装好了)
cd /data/hadoop-2.7.3/etc/hadoop/
cp core-site.xml /data/hbase-1.2.4/conf/
cp hdfs-site.xml /data/hbase-1.2.4/conf/
4. 修改3个文件:
(1)修改hbase-env.sh
export JAVA_HOME=/usr/local/jdk/jdk1.7.0_51 //修改实际的JAVA_HOME目录地址
export HBASE_MANAGES_ZK=false //告诉hbase使用外部的zk
(2) 修改hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name> <!-- 指定hbase在HDFS上存储的路径 -->
<value>hdfs:///hadoop/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name> <!-- 指定hbase是分布式的 -->
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name> <zk客户端端口>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name> <!-- 指定zk的地址,多个用“,”分割 -->
<value>node1,node2,node3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name> <ZooKeeper的zoo.conf中的配置>
<value>/home/hadoop/zookeeper</value>
</property>
</configuration>
hbase.rootdir:
这个目录是region server的共享目录,用来持久化Hbase。URL需要是'完全正确'的,还要包含文件系统的scheme。例如,要表示hdfs中的'/hbase'目录,namenode 运行在node1的49002端口。则需要设置为hdfs://node1:49002/hbase。默认情况下Hbase是写到/tmp的。不改这个配置,数据会在重启的时候丢失。默认: file:///tmp/hbase-${user.name}/hbase
hbase.cluster.distributed :
Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。默认: false
在hbase-site.xml配置zookeeper:
当Hbase管理zookeeper的时候,你可以通过修改zoo.cfg来配置zookeeper,一个更加简单的方法是在 conf/hbase-site.xml里面修改zookeeper的配置。Zookeeer的配置是作为property写在 hbase-site.xml里面的。对于zookeepr的配置,你至少要在 hbase-site.xml中列出zookeepr的ensemble servers,具体的字段是 hbase.zookeeper.quorum. 该这个字段的默认值是 localhost,这个值对于分布式应用显然是不可以的. (远程连接无法使用)。
hbase.zookeeper.property.clientPort:
ZooKeeper的zoo.conf中的配置。 客户端连接的端口。
hbase.zookeeper.quorum:
Zookeeper集群的地址列表,用逗号分割。例如:"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".默认是localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK,这些ZooKeeper节点就会和Hbase一起启动。默认: localhost
运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就越高,当然只能部署奇数个,偶数个是不可以的。你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。).如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上面。就像DataNodes 和 TaskTrackers一样
hbase.zookeeper.property.dataDir:
ZooKeeper的zoo.conf中的配置。 快照的存储位置把ZooKeeper保存数据的目录地址改掉。默认值是 /tmp ,这里在重启的时候会被操作系统删掉,可以把它修改到 /home/hadoop/zookeeper (这个路径hadoop用户拥有操作权限)
对于独立的Zookeeper,要指明Zookeeper的host和端口。可以在 hbase-site.xml中设置, 也可以在Hbase的CLASSPATH下面加一个zoo.cfg配置文件。 HBase 会优先加载 zoo.cfg 里面的配置,把hbase-site.xml里面的覆盖掉.
我的配置文件如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs:///hadoop/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
</configuration>
(3) 修改集群机器 regionservers
node1
node2
node3
5. 启动所有的hbase:
分别启动zk: ./zkServer.sh start
启动hadoop集群start-dfs.sh
启动hbase,在主节点上运行:start-hbase.sh
6. 通过浏览器访问hbase管理页面:
192.168.11.16:60010(1.0版本后改为16010)
7.为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master
HRegionServer 为hbase进程
QuorumPeerMain为zookeeper进程(使用hbase自带的是HQuorumPeerMain)
8. 启动hbase shell:
报警:
解决方法:Jar包冲突了
hbase-1.2.4/lib/ 下的slf4j-log4j12-1.7.5.jar