一、HBase基本概念:列式数据库

在Hadoop生态体系结构中,HBase位于HDFS(Hadoop分布式文件系统)的上一层,不依赖于MapReduce,那么如果没有HBase这种Nosql数据库会有什么影响呢?传统的关系型数据库由于存储数据有限,且其分布式结构由于本身的特点导致节点数量最大不会超过一百个,例如分布式的oracle数据库只能部署一百个节点等等。那么在当下海量数据的背景下则诞生了列式数据库,而最常见的列式数据库有两种:1、HBase 2、Cassandra。列式数据库,顾名思义是按列来存储数据,意思是HBase表中的字段是可以动态增加的,因此HBase数据库是Nosql数据库。

二、HBase与HDFS、Hive/Pig之间的关系:

由于HDFS作为分布式文件系统,主要用于存储数据,因此它不支持实时访问/随机读写,而HBase数据库支持实施访问/随机读写,因此HBase主要应用于在线数据查询,HDFS主要应用于数据存储,而Hive/Pig作为数据分析引擎,由于底层依赖MapReduce,具有高延迟的特点,因此主要应用于离线数据查询。

三、HBase表的基础知识:

1、表:表是用来存储和管理数据的,表由行和列组成。

2、行键:英文rowkey,不唯一且不为空,作为HBase表的一级索引,特点:相同行键作为一条记录,行键按照字典顺序排序。

3、列族:列的集合,列族是在创建表时定义好的,例:create 'students','info','grade',其中info和grade就是两个列族,而students是这张表的名字,列是在添加记录时动态添加的。

4、时间戳:列的一个属性。

5、单元格:可以存储多个数据,每个数据具有时间戳属性和版本特性(通过时间戳区分数据),这是Hbase表结构独有的特点,而在关系型数据库中,单元格只能存储一个数据。

6、HBase表中的记录按行键拆分形成region,一个行键就是一个region,不同的region分布在不同的regionserver上,对表的查询转换为对多台regionserver的并行查询,通过牺牲存储空间来换取时间性能, 因此Hbase适合海量数据秒级简单查询。

7、region由多个store组成,每个store存储一个列族,store由一个memstore和零到多个storefile组成,memstore保存最近一批数据的更新操作,在HBase写数据的过程中,就是将数据写入memstore中。

(region是分布式存储和负载均衡的最小单元,Hfile是存储的最小单元)

四、Hbase表:

五、Hbase表的特点:

1、大:一张表可以由上亿行,上百万列组成。

2、面向列:HBase表按列保存数据。

3、稀疏:HBase表的空列不占用存储空间。

4、无模式:HBase表中不同行可以有截然不同的列,因为列是在添加记录时动态添加的。

5、数据类型单一:只有字符串这种数据类型。

六、HBase的体系结构:

Hmaster:1、为Regionserver分配region。

2、负责Regionserver的负载均衡。

3、发现失效的Regionserver并重新分配其上的region。

4、接收客户端的请求:对HBase表进行增删改查操作。

Regionserver:1、维护region,处理客户端对region的IO请求。

2、负责切分过大的region。

3、定期向Zookeeper汇报心跳信息。

Zookeeper:1、保存HBase集群的结构信息、root表、meta表。

2、实时监控Regionserver并通知给Hmaster。

3、实现HBase的HA功能

(HBase自带一个Zookeeper)

七、安装和配置HBase:

1、安装:tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training

2、配置HBASE_HOME环境变量:export HBASE_HOME=/root/training/hbase-1.3.1

export PATH=$HBASE_HOME/bin:$PATH

八、HBase的安装模式:与Hadoop相似

1、本地模式:单机没有虚拟出任何节点,只有Hmaster,没有Regionserver,数据存放在本地,修改两个配置文件:hbase-env.sh和hbase-site.xml。

2、伪分布式模式:单机虚拟出多个节点,具备HBase的所有功能,修改两个配置文件:hbase-env.sh和hbase-site.xml。

3、全分布式模式:至少三台机器以上,修改三个配置文件:hbase-env.sh、hbase-site.xml和regionservers。

(比伪分布式模式多一个regionservers)

补充:HBase的http服务端口:16010

九、HBase的读写过程:

1、写过程:HBase表中的记录按行键拆分形成region,不同的region分布在不同的regionserver上,region由多个store组成,每个store保存一个列族,而store又由一个memstore和零到多个storefile组成,数据写入memstore中,memstore保存最近一批数据的更新操作,当memstore保存不下时(128M),会溢写到磁盘中形成storefile文件,当storefile文件数量达到一定阈值时会合并成一个storefile文件,当storefile文件大小大于256M时,region会自动分裂,由Hmaster分配到其他regionserver上,最终storefile文件生成128M的Hfile文件保存到datanode上。

2、读过程:客户端向Hmaster发送请求,从zookeeper中访问root表(-root-)获得表的元信息,访问meta表(.meta.)获得region的元信息,进入region从memstore中寻找数据,如果找不到,则从storefile中寻找数据。

(一句话总结HBase的读写过程:寻址访问zookeeper,数据读写范文Regionserver)

十、HBase上的过滤器:实现复杂查询

十一、HBase上的MapReduce:map的输入是HBase中的一条记录,reduce的输出是HBase中的一条记录。

十二、HBase的HA:单独启动一个Hmaster:hbase-daemon.sh start master。

作者:李金泽AllenLi,清华大学硕士研究生,研究方向:大数据和人工智能。

一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!的更多相关文章

  1. 【转载】HBase 数据库检索性能优化策略

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html 高性能 HBase 数据库 本文首先介绍了 HBase 数据库基本 ...

  2. HBase 数据库检索性能优化策略--转

    https://www.ibm.com/developerworks/cn/java/j-lo-HBase/index.html HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的 ...

  3. phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  4. phoenix客户端连接hbase数据库报错:Traceback (most recent call last): File "bin/sqlline.py", line 27, in <module> import argparse ImportError: No module named argparse

    环境描述: 操作系统版本:CentOS release 6.5 (Final) phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 现象描述: 通过phoenix ...

  5. linux中mysql,mongodb,redis,hbase数据库操作

    .实验内容与完成情况:(实验具体步骤和实验截图说明) (一) MySQL 数据库操作 学生表 Student Name English Math Computer zhangsan lisi 根据上面 ...

  6. HBase 数据库检索性能优化策略

    HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的.主要用于非结构化数据存储用途的开源数据库.其设计思路来源于 Google 的非开源数据库"BigTable" ...

  7. HBase数据库集群配置

    0,HBase简介 HBase是Apache Hadoop中的一个子项目,是一个HBase是一个开源的.分布式的.多版本的.面向列的.非关系(NoSQL)的.可伸缩性分布式数据存储模型,Hbase依托 ...

  8. HBase数据库增删改查常用命令操作

    最近测试用到了Hbase数据库,新建一个学生表,对表进行增删改查操作,把常用命令贴出来分享给大家~ 官方API:https://hbase.apache.org/book.html#quickstar ...

  9. HBase数据库相关基本知识

    HBase数据库相关知识 1. HBase相关概念模型 l  表(table),与关系型数据库一样就是有行和列的表 l  行(row),在表里数据按行存储.行由行键(rowkey)唯一标识,没有数据类 ...

随机推荐

  1. 【代码笔记】iOS-MBProgressHUD-Demo

    一,工程图. 二,代码. ViewController.m #import "ViewController.h" #import "MBProgressHUD.h&quo ...

  2. ionic 项目下 有时候发现select标签用动态数据绑定后点击出不来的情况

    一 第一种方法 在select 标签的父标签加上  data-tap-disabled=”true” 二 找到 ionic.bundle.js文件 下边有个方法 function tapIgnoreE ...

  3. MyBatis与JDBC连接数据库所使用的url之间的差异

    在Windows7 系统上安装了MySQL 8.0,然后创建Maven工程,配置pom.xml文件,添加了如下依赖: <dependency> <groupId>org.myb ...

  4. Linux nohup命令应用简介--让Linux的进程不受终端影响

    nohup命令应用简介--让Linux的进程不受终端影响 by:授客 QQ:1033553122   #开启ping进程 [root@localhost ~]# ping localhost & ...

  5. Python笔记(三):构建发布模块

      (一)     准备工作 1.   新建一个模块(名称自定义),存放要发布的模块代码. 2.   新建一个setup.py的模块(存放模块的元数据,描述相关信息). 3.   新建一个文件夹(名称 ...

  6. WebSocket实现web即时通信(后端nodejs实现)

    WebSocket实现web即时通信 一.首先看一下,HTTP.ajax轮询.long poll和WebSocket的区别: 1.HTTP 协议(短连接):一个 Request 一个 Response ...

  7. Webpack打包报"JavaScript heap out of memory"错误

    问题 开发项目有一段时间了,随着项目越来越大,打包的时间也相应的变长了,打包时的内存也增多了.这时候产生了一个问题,在发布项目的时候,会出现JavaScript heap out of memory错 ...

  8. python常用模块之logging模块

    #日志级别 : noset debug info warning error critical #控制台默认的级别是warning的. import logging logging.basicConf ...

  9. 使用 PowerShell 将数据磁盘附加到 Windows VM

    本文介绍如何使用 PowerShell 将新磁盘和现有磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 若要 ...

  10. SQL Server复制入门(一)----复制简介 (转载)

    简介SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数 ...