hbase初接触

hbase是什么

HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的,多版本的,面向列的存储模型。它存储的是松散型数据。

HBase 数据模型

这里写图片描述

Row Key:Table主键 行键 Table中记录按照Row Key排序
Timestamp: 每次对数据操作对应的时间戳,也即数据的version
Number Column Family:列簇,一个table在水平方向有一个或者多个列簇,列簇可由任意多个Column组成,列簇支持动态扩展,无须预定义数量及类型,二进制存储,用户需自行进行类型转换

具体概念参考博客

http://www.cnblogs.com/shitouer/archive/2012/06/04/2533518.html

hbase使用

1、安装:略~
2、启动:切换到bin/ 目录下

./start-hbase.sh

3、命令行调用:

./hbase shell

4、测试
创建table名称为user,同时创建三个列族 name、age、sex

create ‘user’,’name’,’age’,’sex’
列出已有的表:
list
查看表的描述
describe

记住对一个表进行操作的时候需要先 disable这个表。

添加pass列族:add可以省略method=’add’;enable 是启用这个表

disable ‘user’
alter’user’,{name=>’className’,method=’add’}
alter ‘user’,name=>’pass’

启用查看
 enable 'user'
 describe 'user'

删除字段

disable ‘user’
alter ‘user’,NAME=>’pass’,METHOD=>’delete’

启用查看
enable 'user'
 describe 'user'

删除表:
drop ‘user’

给表添加记录
表名称,行数,列族名:列名称,value

put ‘user’,’1’,’name:name’,’gaoguangjin’
put ‘user’,’1’,’name:name’,’gaoguangjin’

查看列的值

整个列的值:
get ‘user’,’1’
指定列的值:
get ‘user’,’1’,’name:name’
获取总记录数
count ‘user’
查看表中所有记录
scan ‘user’

删除数据:

删除某一行的值
deleteall ‘user’,’1’
删除某一列的值
delete ‘user’,’1’,’sex:name’

hbase与关系型数据库的区别

关系型数据库有列和行的概念,hbase也有行列的概念,但如果把我们对关系型数据库行列的理解转换到nosql行列,那是走不通的。

比如:我们用mysql创建一个student表,有三列(id,name,age)
那么插入数据的时候。 会直接插入一行,带有这三列属性的数据。

如果用hbase,我们也创建同样的表,但是这时候列的概念就转换成了列族的概念了,(id,name,age)三个列族,一个列族下面可以有n个列。
那么插入数据的时候,我们插入一行,然后是在所有列族里面插入列和列的值。也就是说。 hbase每一行同一个列族下面的列都可以不一样。

比如 第一行row1 列族 name 可以有列 name:test1,name:test2
第二行row2 列族 name 可以有列 name:test3,name:test4

hbase 代码调用

1、配置注意
因为hbase自带zookeeper,在配置项里面可以使用默认的,也可以使用自带的。条件有限就不用集群方式了。如果提示找不到master,

java.net.UnknownHostException: unknown host: master

那就需要把电脑ip映射修改下:
C:\Windows\System32\drivers\etc \hosts:
新增 123.56.118.135 master

hbase-env.sh
export HBASE_CLASSPATH=/usr/java/hadoop-1.0.3/conf
这个是是否使用自带的zookeeper
export HBASE_MANAGES_ZK=true

hbase-site.xml

<property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    </property>
     <property>
    <name>hbase.master</name>
    <value>master:60000</value>
  </property>

regionservers文件

master

需要把hadoop-core-1.0.3.jar的架包(我服务器安装的是hadoop.0.31)从服务器hadoop安装目录里面拷贝到hbase安装目录/lib下面

hadoop-core-1.0.3.jar

java代码调用注意事项。
服务器上面的hbase安装的版本 和你Java代码里面调用的版本一定要一样,hbase提供hbase-client架包让我们调用,但是今天就遇到一个情况,定位半天才找到。我的服务器上面安装的是hbase-0.94.26,但是maven仓库里面没有0.94.26版本的架包,于是我就用了0.95.1-hadoop1版本的,于是乎问题来了,运行似乎一直提示zookeeper没有/hbase/meta-region-server 节点!!!!!!!!!!!让我找了半天有木有啊啊啊啊 啊!

我们把服务器上面hbase安装目录/lib/hbase-0.94.26.jar 拷贝到eclipse项目里面

pom.xml

<dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>0.95.1-hadoop1</version>
            <exclusions>
                <exclusion>
                    <artifactId>hbase-common</artifactId>
                    <groupId>org.apache.hbase</groupId>
                </exclusion>
            </exclusions>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值