HBase学习
HBase学习(一)
前言:
毕业这几年 一直从事java 工作,接触的数据存储 SQL产品类似于Oracle,Mysql,Oracle是付费级的产品 既而接触的就少了 大部分工作时间都是和MySql和打交道,存储数据和良好的设计表 优化慢sql 不能说很足的经验,基本的问题都是ok的吧,接触的NoSql产品 Redis,为了给数据库做保护,业务数据大部分都缓存在了redis中,但是随着公司sdk的业务越来越庞大,传统的关系型数据库已经满足不了sdk存储数据需求,此时就需要找替代的存储方案,由于公司sdk级别的数据,每天达到了几个G,此时CTO 开始着手搭建公司级别的大数据平台 。技术选型也就选择了开源社区比较成熟的大数据技术,Hadoop Hbase,Hive,从0到1是一个缓慢的过程。我们也就慢慢开始搭建自己公司级别的数据平台,这个过程虽然很辛苦,我负责的是研究Hbase,但是研究新技术这个过程是个开心的事情。前面说了点啰嗦,开始咱们的正题吧。
简单的先介绍一下HBase:
HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。类似于redis中的散列存储数据。
Hbase中有几个术语 大家理解了 基本操作就不是什么问题了。
行键Row Key:主键是用来检索记录的主键,访问hbasetable中的行。
列族Column Family:Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
列column:由Hbase中的列族ColumnFamily +列的名称(cell)组成列。
单元格cell:HBase中通过row和columns确定的为一个存贮单元称为cell。
版本version:每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。
Hbase的表结构组成:
1)每行都有row key。
2)每条记录分隔成列族集合。
3)每个列族由若干列组成
Hbase在linux下安装请见网址:http://www.yiibai.com/hbase/hbase_installation.html
下面我通过shell 命令 来简单的演示一下HBase的基本操作吧
进入hbase的安装目录:
执行 ./bin/hbase shell 命令 进入操作界面

list 命令:列出hbase下存储的表

创建数据库表:create ‘table_name’,'column family'

添加数据:put‘table name’,’row’,'Column family:column name',’value’

获取某个行键的数据:
get ‘table_name’,'row_key'

获取表下所有的数据:
scan 'table_name'

删除表下某列的数据:
delete ‘table_name’, ‘row_key’, ‘column_name’;

删除表下的某行数据:
deleteall ‘table_name’,‘row_key’

更新数据:
put‘table name’,’row’,'Column family:column name',’new_value’

说到这 基本的操作命令已经讲完了 是不是很简单 其实HBase基本的操作还是很简单的,大家装一下体验一下 一下子就明白了,后续我还会给大家介绍用java-Client 操作Hbase 以及spirng-hadoop asynchbase 等开源的框架二次封装成独立的共有的jar包来操作基本的hbase。 这些都是很好的开源东西 大家有时间可以去学习一下。
写的有点粗糙,望大家见谅,后面我还会继续出hbase个人学习记录,也是激励自己 同样也给大家分享 有什么不对的地方 希望大家提出来。
我是小志码字,一个简单码代码的小人物。