201707061229复习-hbase篇-入门篇
一、
1、hbase 是一种支持随机访问,保存结构化数据,低延迟,支持10亿级别的随机访问的数据库
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。
2、hbase内部使用hashtable提供算法
3、hbase存储:
面向列族,定义列族,
表是行的集合,行是列族的集合,列族是列的集合,列是kv对的集合
4、面向行,适合于OLTP, on line transaction Processing 在线事务处理, 各种关系型数据库都是这样的
面向列,适合于OLAP, Online Analytical Processing 在线分析处理,各种列式数据库,如hbase
5、hbase本身的性质,用一个类比来看:
文件 --> 记录各种数据 --> 保存在本地文件系统 --> 通过打开文件查询或编辑数据
mysql --> 记录各种结构化数据 --> 保存在本地文件系统 --> 通过sql语句查询或编辑数据
hbase --> 记录各种结构化数据 --> 保存在分布式文件系统 --> 通过hql语句查询或编辑数据
以上3中都可称为数据库,只要用来记录数据的容器都是数据库,只不过是保存数据的格式不同而已,不同的保存格式,查询编辑速度不同,也就有不同的工作范围。
虽然也叫数据库,但是并没有像mysql那样有丰富的数据类型,在hbase中只有一个类型,那就是字符串
hdfs 相对于hbase只是一个存储数据的地方,但是在hdfs上怎么存储,存几份,hbase并不关心,hbase只知道有了一个数据表,然后存到hdfs上即可。因此,hdfs怎么存储数据的对于hbase是透明的,就好比本地文件系统对于mysql,mysql不关心本地怎么存,只知道有了数据往本地文件系统发即可,读取数据向本地文件系统读取即可。
6、hbase 是master/slavers 的架构,
一台机器作为master,启动进程HMaster
另外几台作为slaver,称为regionServer,启动进程HRegionServer
还需要有一个zk集群,给hbase 集群提供 “配置服务”
7、hbase 的安装,初始化,启动start-hbase.sh
8、启动了hbase ,进入hbaseshell ,输入hbase help ,显示hbase的shell帮助信息,帮助信息分为13组:
` 也可以自己写个配置文件,然后使用指定的配置文件,配置文件中只需要有一个属性就行,那就是zk,有这一个属性就完全可以了。客户端根本不会和master打交道
常用命令:见hbase的shell命令篇
9、创建了一个库:在hdfs上对应的目录(这个目录在hbase-site.xml中配置)下创建了一个文件夹
10、创建一个表:在上面的文件夹下创建了一个文件夹
11、增加一条记录:这是第一条记录,所有的记录都是被regionserver管理的,创建一个文件夹,文件件名是region名,region名是由库名和表名经过运算得到的一个编码。在region的文件夹下创建文件夹:每一个列族对应一个文件夹,文件夹名就是列族名,然后文件夹下有文件,这个文件就是该列族下面的数据文件,且文件名也是编码的。文件内容是二进制格式的,无法被查看。
12、上面简单描述了一下创建表后在hdfs上的表现。后续介绍hbase时,hdfs就作为一个透明的文件存储系统,不在解释hdfs上怎么存数据。以后介绍的内容全是hbase的内容,与hdfs就无关了。
13、hbase 的shell命令见hbase shell篇
14、hbase的 api 见hbase api篇
15、问1:rowkey是顺序的吗?后插入的只能比以前的大?rowkey怎么比大小?
答:hbase中的rowkey是排序的,按照字典顺序排序, 后插入的也可以比之前的小,排序排在前面