从这一篇起,开始介绍HBase相关知识。还是一样,大数据的学习,获取官网知识很重要。官网看这里Apache HBase

HBase简介

Apache HBase is the Hadoop database, a distributed, scalable, big data store.

Use Apache HBase when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.

上面是官网的介绍。从介绍里可以看出,HBase是Apache的顶级项目,可以称为Hadoop的数据库,是一个分布式、可扩展的大数据存储。

HBase跟传统关系型数据库的定位非常不同,它能存储包含十亿级别的行和百万级别的列的表,就算性能强如oracle,在这个规模面前也要歇菜。HBase的理论基础是google的论文Bigtable,这是奠定大数据基础的三篇google论文之一。

泼一盆冷水

准确地讲,HBase更像是一个数据存储,而不是数据库,因为它缺少很多传统关系型数据库的特征。当然,它也不适用于解决所有问题。如果想使用HBase,那么得满足下面几个条件:

  • 首先,你要有足够大的数据量。十亿往上走的数据量,比较适合使用HBase。要是只有几百万条记录,那不如用传统关系型数据库,因为这点数据量太小了,只会使用到HBase集群的一个节点,其他节点都是闲置。
  • 其次,确保你的代码不需要使用传统关系型数据库提供的任何特性依然可以运行。基于关系型数据库开发的应用不可能仅仅替换一下驱动,就能移植到HBase里,这得重新设计。
  • 最后,你还得有足够的服务器。即便是HBase用来存储数据的HDFS,它需要的三副本和NameNode至少要占用5台服务器,更不用说HBase还有自己的组件需要部署了。

虽然HBase在笔记本电脑上也能运行,但那只能作为开发环境,生产环境就不要想了。

HBase架构

不废话,先上图。

从图片里可以看到虚线以上是HBase的组件和角色,虚线以下是HDFS。再看看官网里关于架构描述的目录Architecture

我把几种主要的角色具体做啥事介绍一下。

Zookeeper

一般来说,zookeeper起到高可用选主的作用,但是在HBase架构里,它还负责存储元数据,官方原话——hbase:meta is stored in ZooKeeper。

Client

HBase客户端首先去查询zookeeper中的元数据信息,找到存储所需数据的Region。这里先要明确一些概念,Region相当于关系型数据库中的表,Store相当于列族(列族是HBase管理的最小单元,包含多个相关的列)。

定位到需要的Region后,Client直接连接到对应的RegionServer而不是通过Master来完成读写请求。这些信息会缓存到客户端,随后的请求就不会再有查找的过程了。但是当RegionServer宕机或者是Master根据负载均衡策略来调整region的时候,客户端需要重新通过元数据来决定访问哪个region。

Master

HMaster是Master Server的实现,真的,你启动Master的时候,用jps查看进程,进程名就是HMaster。Master负责监控集群中所有的ReginServer实例,它为元数据变化提供操作接口。在一个分布式集群中,Master往往运行在NameNode节点上。

RegionServer

HRegionServer是RegionServer的实现,不信你用jps看看。它负责管理和服务regions。在一个分布式集群中,RegionServer运行在DataNode节点上。

Regions

Regions存储表的数据,一张表的数据可以分散在多个region中。每个region包含多个用来存储列族的Store。它的结构树长这样:

Table                    (HBase table)
Region (Regions for the table)
Store (Store per ColumnFamily for each Region for the table)
MemStore (MemStore for each Store for each Region for the table)
StoreFile (StoreFiles for each Store for each Region for the table)
Block (Blocks within a StoreFile within a Store for each Region for the table)

HBase数据模型

HBase的数据存储在表里,它也有行和列。这个说法是参照关系型数据库的结构来讲的,这不是一个合适的类比。但这个说法有助于理解HBase是一个多维表格。

Table

HBase的表包含多条记录。

Row

HBase的一行记录包含行键、列名以及与之相关的值。每行记录按照行键的字典序排序。正因为如此,行键的设计就非常重要。设计行键的时候,要尽量保证相关的记录它们的行键近似,这样查询的时候可以利用范围查询。通常的行键模式,使用网站的域名,域名的几个单词要倒着排,这样的好处是,不同的域名不会排在一起。

Column

HBase中的列包含列族和列名,中间用冒号分割。我用中文举个例子,像这样,个人信息:学历,个人信息:姓名。这个例子里,个人信息是列族,学历、姓名、性别、专业这些相关的字段是列名。

Column Family

列族把一系列的字段和值组合起来,这个做法基于性能原因的考虑。每个列族都有一些存储属性,比方说字段的值要不要放在缓存里、数据如何压缩、行键怎么编码等等。每行记录都包含相同的列族,尽管有些列族里啥也没存。

Column Qualifier

列的修饰符,我们可以称之为列名,它是列族之下的具体索引,用来获取某个特定的值。列名和列族之间用冒号分割。列族是在定义表的时候就确定下来了,但是每条记录的列名可变,甚至非常不同。

cells

它是存储数据的最小单位。在HBase中,唯一确定一个单元格,需要行键+时间戳+列族+列名,它里面存放的是无格式的字节数组,如下图。

这个时间戳有4个值,以关系型数据库的观点来看,它有4条记录。但在HBase中,它实际上是一条记录,是同一个行键不同版本的值。

Timestamp

在写入一个值的时候,同时会写入一个时间戳,它是区分同一个版本数据的标识。默认情况下,时间戳反映了写数据时RegionServer的时刻,你也可以指定一个不同值的时间戳。

大数据学习(13)—— HBase入门的更多相关文章

  1. 大数据学习笔记——HBase使用bulkload导入数据

    HBase使用bulkload批量导入数据 HBase可使用put命令向一张已经建好了的表中插入数据,然而,当遇到数据量非常大的情况,一条一条的进行插入效率将会大大降低,因此本篇博客将会整理提高批量导 ...

  2. 《OD大数据实战》HBase入门实战

    官方参考文档:http://abloz.com/hbase/book.html#shell_tricks 1.2.3. Shell 练习 用shell连接你的HBase $ ./bin/hbase s ...

  3. 大数据学习笔记——Hbase高可用+完全分布式完整部署教程

    Hbase高可用+完全分布式完整部署教程 本篇博客承接上一篇sqoop的部署教程,将会详细介绍完全分布式并且是高可用模式下的Hbase的部署流程,废话不多说,我们直接开始! 1. 安装准备 部署Hba ...

  4. 大数据学习(16)—— HBase环境搭建和基本操作

    部署规划 HBase全称叫Hadoop Database,它的数据存储在HDFS上.我们的实验环境依然基于上个主题Hive的配置,参考大数据学习(11)-- Hive元数据服务模式搭建. 在此基础上, ...

  5. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  6. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  7. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  8. 大数据学习系列之—HBASE

    hadoop生态系统 zookeeper负责协调 hbase必须依赖zookeeper flume 日志工具 sqoop 负责 hdfs dbms 数据转换 数据到关系型数据库转换 大数据学习群119 ...

  9. 大数据学习之Hadoop快速入门

    1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效 ...

随机推荐

  1. RobotFramework + Python 自动化入门 一 (从这里开始)

    一.环境搭建 1. 安装Python Python3会自动配置path,安装pip工具(python包安装和管理工具) 2. 安装robotframework library cmd窗口安装命令: p ...

  2. ClickHouse源码笔记6:探究列式存储系统的排序

    分析完成了聚合以及向量化过滤,向量化的函数计算之后.本篇,笔者将分析数据库的一个重要算子:排序.让我们从源码的角度来剖析ClickHouse作为列式存储系统是如何实现排序的. 本系列文章的源码分析基于 ...

  3. js笔记15

    DOM2动态创建节点 1.生成节点的方法 document.createElement("div") 2.插入节点的方法 父元素.appendChild(新节点) 在父节点的子节点 ...

  4. 为什么要使用MongoDB?

    1.Mongo与Mysql简单对比 关系型数据库-MySQL 1.在不同的引擎上有不同的存储方式. 2.查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 3.开源数据库的份额在不断增加 ...

  5. Redis之复制

    1.配置 1.1 建立复制 参与复制的Redis实例划分为主节点(master) 和从节点(slave).默认情况下,Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节点. ...

  6. 04 jumpserver资产管理

    4.资产管理: (1)管理用户: 管理用户是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来 `推送系统用户`.`获取资 ...

  7. 手把手教会你远程Linux虚拟机连接以及配置pytorch环境。

    出一期用于连接远程Ubuntu系统并配置pytorch环境的教学.2021-07-07 13:35:57- 现在的矿难导致显卡大幅度的涨价对很多要做深度学习领域的小伙伴们非常的不友好,配置设备固然要掏 ...

  8. 第二章 - Java与协程

    Java与协程 内核线程的局限 通过一个具体场景来解释目前Java线程面临的困境.今天对Web应用的服务要求,不论是在请求数量上还是在复杂度上,与十多年前相比已不可同日而语,这一方面是源于业务量的增长 ...

  9. ESP-ADF相关学习笔记

    1.makefile:定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作 ...

  10. Nginx的安装和部署

    Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发 ...