2021年大数据HBase(一):HBase基本简介

2021-10-11 15:37:42 浏览数 (1)

HBase基本简介

一、HBase产生的背景介绍

  • 从 1970 年开始,大多数的公司数据存储和维护使用的是关系型数据库
  • 大数据技术出现后,很多拥有海量数据的公司开始选择像Hadoop的方式来存储海量数据
  • Hadoop使用分布式文件系统HDFS来存储海量数据,并使用 MapReduce 来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理

但是Hadoop存在的局限:

  • Hadoop主要是实现批量数据的处理,并且通过顺序方式访问数据
  • 要查找数据必须搜索整个数据集, 如果要进行随机读取数据,效率较低(压根就不支持)

总结: HADOOP仅适合存储大批量的数据, 进行顺序化读取数据, 并不支持随机读取数据操作

二、HBase的基本介绍

  • NoSQL是一个通用术语,泛指一个数据库并不是使用SQL作为主要语言的非关系型数据库
  • HBase是BigTable的开源java版本。是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写NoSQL的数据库系统
  • HBase仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务
  • 主要用来存储结构化和半结构化的松散数据
  • Hbase查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务),从技术上来说,HBase更像是一个「数据 存储」而不是「数据库」,因为HBase缺少RDBMS中的许多特性,例如带类型的列、二级索引以及高级查询语言等
  • Hbase中支持的数据类型:byte[]
  • 与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加存储和处理能力,例如,把集群从10个节 点扩展到20个节点,存储能力和处理能力都会加倍
  • HBase中的表一般有这样的特点
  1. 大:一个表可以有上十亿行,上百万列
  2. 面向列:面向列(族)的存储和权限控制,列(族)独立检索
  3. 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏

三、HBase的应用场景

1、对象存储

◼ 不少的头条类、新闻类的新闻、网页、图片存储在Hbase之中, 一些病毒公司的病毒库也是存储在Hbase中

2、时序数据

◼ HBase之上有openTSDB模块, 可以满足时序类场景的需求

3、推荐画像

◼ 用户画像, 是一个比较大的稀疏矩阵, 蚂蚁金服的风控就是构建在Hbase之上

4、时空数据

◼ 主要是轨迹, 气象网格之类, 滴滴打车的轨迹数据主要存在Hbase之中, 另外在所有大一点的数据量的车联网企业, 数据也是存储在HBase

5、CubeDb OLAP

◼ kylin 一个cube分析工具, 底层的数据就是存储在Hbase之中, 不少客户自己基于离线计算构建cube存储在hbase之中, 满足在线报表查询的需求

6、消息/订单

◼ 在电信领域、银行领域, 不少的订单查询底层的存储, 另外不少通信、消息同步的应用构建HBase之上

7、Feeds流

◼ 典型的应用就是xx朋友圈类型的应用, 用户可以随时发布新内容, 评论、点赞

8、NewSQL

◼ 之上有Phoenix的插件, 可以满足二级索引, SQL的查询, 对接传统数据需要SQL非事务的需求

9、其他

◼ 存储爬虫数据

◼ 海量数据备份

◼ 短网址

◼ ………..

四、HBase的发展历程

五、HBase的特点

  • 强一致性读/写: HBASE不是“最终一致的”数据存储 , 它非常适合于诸如高速计数器聚合等任务
  • 自动分块: HBase表通过Region分布在集群上,随着数据的增长,区域被自动拆分和重新分布
  • 自动RegionServer故障转移
  • Hadoop/HDFS集成: HBase支持HDFS开箱即用作为其分布式文件系统
  • MapReduce : HBase通过MapReduce支持大规模并行处理,将HBase用作源和接收器
  • Java Client API: HBase支持易于使用的 Java API 进行编程访问
  • Thrift/REST API
  • 块缓存和布隆过滤器 : HBase支持块Cache和Bloom过滤器进行大容量查询优化
  • 运行管理: HBase为业务洞察和JMX度量提供内置网页。

六、HBase与RDBMS、HDFS 、Hive的区别