HBase的基础介绍

HBase基础简介

HBase产生的背景介绍

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

Hadoop的局限

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

结论:Hadoop仅适合促进处大批量的数据,进行顺序化读取数据,不支持随机读取数据相关的操作。

HBase的基本介绍

  • NoSQL是一个通用术语,泛指一个数据库并不是使用SQL作为主要语言的非关系型数据库

  • HBase是Big Table的开源Java版本。是建立在HDFS之上,提供高可靠、高性能、列存储、可伸缩、实时读写NoSQL的数据库系统

  • HBase仅能通过主键(rowkey)和主键的range来检索数据,仅支持单行事务

  • 主要用来存储结构化和半结构化的松散数据

  • HBase查询数据很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务),从技术上来说,HBase更像是一个数据存储,而不是数据库,因为HBase缺少RDBMS的许多特性,例如带类型的列、二级索引以及高级查询语言等

  • HBase中支持的数据类型:byte[]

    与Hadoop意义,HBase主要依靠横向扩展,通过不断增加廉价的商用服务器来增加存储和处理能力,例如,把集群从10个节点扩展到20个节点,存储和处理能力都会加倍

  • HBase中的表一般有以下特点

    • 大:一个表可以有十亿行,百万列
    • 面向列:面向列(族)的存储和权限控制,列(族)独立检索
    • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏

HBase的应用场景

  • 对象存储
    • 不少的头条、新闻类的消息、网页、图片都存储在HBase中,一些病毒公司的病毒库也存储在HBase中
  • 时序数据
    • HBase上有openTSDB模块,可以满足时序类场景的需求
  • 推荐画像
    • 用户画像,是一个比较大的稀疏矩阵,蚂蚁金服的风控就是构建在HBase之上
  • 时空数据
    • 主要是轨迹、气象网格之类的数据,滴滴打车的轨迹数据就主要存储在HBase中,另外在一些数据量大一些的车联网企业,数据也存储在HBase中
  • CubeDb OLAP
    • 分析工具Kylin的底层cube的数据就是存储在HBase之中,不少用户自己基于离线计算构建cube存储在HBase之中,满足在线报表查询的需求
  • 消息/订单
    • 在电信、银行领域,不少的订单查询底层的存储,不少通讯、消息同步的应用都构建在HBase之上
  • Feeds流
    • 典型的应用就是xx朋友圈类型的应用,用户可以随时发布新内容、评论、点赞等
  • NewSQL
    • HBase之上有Phoenix的插件,可以满足二级索引,SQL的查询,对接传统数据库需要SQL非事务的需求
  • 其他
    • 存储爬虫数据
    • 海量数据备份
    • 短网址

HBase的发展历程

年份重大事件
2006年11月Google发布Big Table论文
2007年10月发布第一个可用的HBase版本,基于Hadoop 0.15.0
2008年1月HBase成为Hadoop的一个子项目
2010年5月HBase成为Apache的顶级项目

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的区别

HBaseRDBMS
结构1.以表形式存在
2.支持HDFS文件系统
3.使用行键(row key)
4.使用原生支持分布式存储、计算引擎
5.使用行、列、列族和单元格
1.数据库以表的形式存在
2.支持FAT、NTFS、EXT、文件系统
3.使用主键(PK)
4.通过外部中间件可以支持分库分表,但底层还是单机引擎
5.使用行、列、单元格
功能1.支持向外扩展
2.使用API和MapReduce、Spark、Flink来访问HBase表数据
3.面向列族,即每一个列族都是一个连续的单元
4.数据总量不依赖具体某台机器,而取决于机器数量
5.HBase不支持ACID(Atomicity、Consistency、Isolation、Durability)
6.适合结构化和非结构化数据
7.一般都是分布式的
8.HBase不支持事务,支持的是单行数据的事务操作
9.不支持join
1.支持向上扩展(买更好的服务器)
2.使用SQL查询
3.面向行,即每一行都是一个连续单元
4.数据总量依赖于服务器配置
5.具有ACID支持
6.适合结构化数据
7.传统关系型数据库一般都是中心化的
8.支持事务
9.支持join
HBaseHDFS
1.HBase构建在HDFS上,并为大型数据表提供快速记录查找(更新)
2.HBase内部将大量数据放在HDFS中名为StoreFiles的索引中,以便进行高速查找
3.HBase比较适合做快速查询等需求,而不适合做大规模的OLAP应用
1.HDFS是一个非常适合存储大型文件的分布式文件系统
2.HDFS它不是一个通用的文件系统,也无法在文件中快速查询某个数据
HBaseHive
1.NoSQL数据库
2.是一种面向列存储的非关系型数据库
3.用于存储结构化和非结构化的数据
4.适用于单表非关系型数据的存储,不适合做关联查询,类似join等操作
5.基于HDFS
6.数据持久化存储的体现形式是Hfile,存放于DataNode中,被RegionServer以Region的形式进行管理
7.延迟较低,接入在线业务使用
8.面对大量的企业数据,HBase可以实现单表大量数据的存储,同时提供了高效的数据访问速度
1.数据仓库工具
2.Hive的本质其实就相当于将HDFS中已经存储的文件在MySQL中做了一个双射关系,以方便使用HQL去管理查询
3.用于数据分析、清洗
4.Hive适用于离线的数据分析和清洗,延迟较高
5.基于HDFS、MapReduce
6.Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行

HBase与hive总结:

  • Hive和HBase是两种基于Hadoop的不同技术
  • Hive是一种类SQL的引擎,并且运行MapReduce任务
  • HBase是一种在Hadoop之上的NoSQL的key/value数据库
  • 这两种工具是可以同时使用的。就像用Google来搜索,用Facebook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到HBase,或者从HBase写回Hive
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值