201707061229复习-hbase篇-入门篇

一、

  1、hbase 是一种支持随机访问,保存结构化数据,低延迟,支持10亿级别的随机访问的数据库  

    HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。

    HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

    HBASEGoogle 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是排序的,按照字典顺序排序,   后插入的也可以比之前的小,排序排在前面

    

    

    

 

    

posted @ 2017-09-04 17:13  IT豪哥  阅读(174)  评论(0编辑  收藏  举报