HBase安装与命令行操作

HBase简介

基于Hadoop的NoSql数据库,适合存储半结构化、非结构化的稀疏数据,提供增删改查能力。因为其底层是hdfs,所以具有存储海量数据,高容错,高可用等特点,可以达到关系型数据库(市面上分布式关系型数据库除外)无法企及的上亿记录毫秒级查询能力。

具备行级别的事务能力。

利用hdfs存储数据,mr处理数据,zk作为协调工具

安装与配置

单机模式

解压:

tar -zxvf xxxxx.tar.gz

修改conf/hbase-site.xml

配置hbase使用的数据文件的位置,默认在/tmp/hbase-[username],此目录是linux的临时目录,可能会被系统清空,所以最好修改一下

        <property>      
            <name>hbase.rootdir</name>  
            <value>file:///<path>/hbase</value>
        </property>

这种模式几乎不采用,建议学习使用伪分布模式

伪分布模式

解压:

tar -zxvf xxxxx.tar.gz

修改conf/hbase-env.sh

找到JAVA_HOME,将java的安装目录配置进去

修改hbase-site.xml

            <property>
                <name>hbase.rootdir</name>
                <value>hdfs://hadoop00:9000/hbase</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>

hbase.rootdir:hbase文件存放的目录,hadoop00是hostname(该值需先在/etc/hosts中配置)

dfs.replication:文件备份数,此配置需与hdfs中保持一致

 

启动:

进入到hbase的安装目录\bin

./start-hbase.sh

进入hbase操作界面:

./hbase shell

完全分布模式

解压:

tar -zxvf xxxxx.tar.gz

修改conf/hbase-env.sh

找到JAVA_HOME,将java的安装目录配置进去

export JAVA_HOME=/home/jionsvolk/proc/jdk1.8.0_65
#如果设置为TRUE会管理配置的ZK集群,这样会导致ZK集群管理的其他分布式组件失效,所以设置为FALSE
export HBASE_MANAGES_ZK false

修改conf/hbase-site.xml

                <property>
                    <name>hbase.rootdir</name>
                    <value>hdfs://hadoop00:9000/hbase</value>
                </property>
                <!-- 副本数一定要和使用的HDFS副本数配置一致,否则可能导致一些不可预料的问题 -->
                <property>
                    <name>dfs.replication</name>
                    <value>1</value>
                </property>
                <property>
                    <name>hbase.cluster.distributed</name>
                    <value>true</value>
                </property>
                <property>
                    <name>hbase.zookeeper.quorum</name>
                    <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
                </property>

修改conf/regionservers文件

此文件中配置所有的regionserver的列表

    hadoop01
    hadoop02
    hadoop03

启动集群:

在启动hbase之前,先要启动zookeeper集群和hadoop集群(或者hadoop的伪分布式模式)

./zkServer.sh ##在zk每个机器上启动zk

./start-all.sh ##在hadoop每个机器上启动hadoop伪分布式模式

./start-hbase.sh ##启动hbase集群,该命令会启动其他机器上的所有regionserver和某一台机器上的HMaster。

可以使用jps查看启动的进程,三台主机中只有一台有HMaster进程

如果要设置HMaster的高可用,需要启动它的备用节点,需在非HMaster机器上的执行

./hbase-daemon.sh start master

关闭集群 stop-hbase.sh

基本操作

	#帮助
	hbase>help
	#创建表,指定表名、列族,列不属于表的元数据,在添加数据的时候指定即可
	#test--表名;'colfam1','colfam2'--两个列族
	hbase>create 'test','colfam1','colfam2'
	#查看table列表
	hbase>list
	#查看表结构
	hbase>describe 'test'
	#插入数据
	#myrow-1 是行键;
	#q1 q2 q3就是列名;
	#value-1 value-2 value-3就是列对应的值
	hbase>put 'test','myrow-1','colfam1:q1','value-1'
	hbase>put 'test','myrow-2','colfam1:q2','value-2'
	hbase>put 'test','myrow-2','colfam1:q3','value-3'
	#查看表的数据
	hbase>scan 'test'
	#更新test表myrow-2行的colfam1:q3列对应的数据
	put 'test','myrow-2','colfam1:q3','value-33'
	#再次查看表的数据
	hbase>scan 'test'
	#根据行键查询数据,与scan的区别是可以查看列的所有版本数据
	hbase>get 'test','myrow-2'
	#删除列数据
	hbase>delete 'test','myrow-2','colfam1:q2'
	#查看表的数据
	hbase>scan 'test'
	#删除表全量数据
	hbase>truncate 'test'
	#使表失效
	hbase>disable 'test'
	#删除表、会将表结构一起删除
	hbase>drop 'test'

	#建表时可以指定VERSIONS,配置的是当前列族在持久化到文件系统中时,要保留几个最新的版本数据,这并不影响内存中的历史数据版本
	hbase>create 'test',{NAME=>'colfam1',VERSIONS=>3},{NAME=>'colfam2',VERSIONS=>1}
	hbase>put 'test','myrow-1','colfam1:q1','value-1'
	#直接使用scan而不加RAW=>true只能查询到最新版本的数据
	hbase>scan 'test'
	hbase>put 'test','myrow-1','colfam1:q1','value-2'
	hbase>scan 'test'
	hbase>put 'test','myrow-1','colfam1:q1','value-3'
	hbase>scan 'test'
	#可以在查询时加上RAW=>true来开启对历史版本数据的查询,VERSIONS=>3指定查询最新的几个版本的数据
	hbase>scan 'test',{RAW=>true,VERSIONS=>3}
	hbase>put 'test','myrow-1','colfam1:q1','value-4'
	hbase>scan 'test'
	hbase>scan 'test',{RAW=>true,VERSIONS=>3}

	hbase>put 'test','myrow-1','colfam2:x1','value-1'
	hbase>scan 'test'
	hbase>put 'test','myrow-1','colfam2:x1','value-2'
	hbase>scan 'test'
	hbase>scan 'test',{RAW=>true,VERSIONS=>3}

猜你喜欢

转载自my.oschina.net/u/3049601/blog/1820242