HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库。它是面向列的,并适合于存储超大型松散数据。HBase适合于实时,随机对Big数据进行读写操作的业务环境。
@hbase单机环境的搭建
1.首先配置好JDK,准备好hbase-0.98.12.1-hadoop2-bin.tar的压缩包,然后解压到相应目录中
2.进入conf/hbase-env.sh.文件,进行JDK的配置,将其中的JAVA_HOME
指向到你Java的安装目录
3.编辑conf/hbase-site.xml文件,添加如下代码:
<configuration> <property> <name>hbase.rootdir</name> <value>file:///home/testuser/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/testuser/zookeeper</value> </property> </configuration>
4.使用bin/start-hbase.sh命令来启动hbase
shell练习参考:http://abloz.com/hbase/book.html#quickstart
停止hbase的运行:./bin/stop-hbase.sh
以上运行的是单机模式的Hbaes。所有的服务都运行在一个JVM上,包括HBase和Zookeeper。HBase的日志放在logs
目录,当你启动出问题的时候,可以检查这个日志。
@完全分布式Hbase集群安装配置
分布式模式分两种。伪分布式模式是把进程运行在一台机器上,但不是一个JVM.而完全分布式模式就是把整个服务被分布在各个节点上了
伪分布式模式参考:http://abloz.com/hbase/book.html#notsoquick
1.编辑/conf下的hbase-site.xml去配置hbase.rootdir
,来选择HBase将数据写到哪个目录,编辑conf/hbase-env.sh
,将其中的JAVA_HOME
指向到你Java的安装目录。
<configuration> ... <property> <name>hbase.rootdir</name> <value>hdfs://namenode.example.org:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://xiaotian/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value>
</property>
</configuration>
2.vi regionservers
修改这个配置文件为所以regionserver的主机名
3.让HBase使用一个已有的不被HBase托管的Zookeep集群,需要设置 conf/hbase-env.sh
文件中的HBASE_MANAGES_ZK
属性为 false
export HBASE_MANAGES_ZK=false
运行一个zookeeper也是可以的,但在生产环境中,最好部署3,5,7个节点,部署的越多,可靠性就越高。需要给每个zookeeper至少1G左右的内存,如果可能的话,最好有独立的磁盘
4.在hbase下的conf目录下:cp -a /home/hadoop-2.5/etc/hadoop/hdfs-site.xml .,将hadoop下的hdfs-site.xml文件拷贝到当前目录下
5.首先确认你的HDFS是运行着的。你可以运行HADOOP_HOME
中的 bin/start-hdfs.sh
来启动HDFS.你可以通过put命令来测试放一个文件,然后有get命令来读这个文件。通常情况下HBase是不会运行mapreduce的。所以比不需要检查这些。
如果你自己管理ZooKeeper集群,你需要确认它是运行着的。如果是HBase托管,ZoopKeeper会随HBase启动。
用如下命令启动HBase:
bin/start-hbase.sh
这个脚本在HBASE_HOME
目录里面。
在哪一台机器上使用bin/start-hbase.sh脚本,哪一台机器就是HMaster,而Regionserver则是在regionservers配置文件里配置好的
如果在另一台机器上启动HMaster,可以使用脚本:./bin/hbase-daemon.sh start maste
你现在已经启动HBase了。HBase把log记在 logs
子目录里面. 当HBase启动出问题的时候,可以看看Log.
HBase也有一个界面,上面会列出重要的属性。默认是在Master的60010端口上H (HBase RegionServers 会默认绑定 60020端口,在端口60030上有一个展示信息的界面 ).如果Master运行在 master.example.org
,端口是默认的话,你可以用浏览器在 http://master.example.org:60010
看到主界面. .
一旦HBase启动,可以看到如何建表,插入数据,scan你的表,还有disable这个表,最后把它删掉。
flush 't_person'可进行溢写操作
手动合并:major_compact 't_person'
可以在HBase Shell停止HBase
$ ./bin/stop-hbase.sh stopping hbase...............
停止操作需要一些时间,你的集群越大,停的时间可能会越长。如果你正在运行一个分布式的操作,要确认在HBase彻底停止之前,Hadoop不能停.