入门大数据---Hbase是什么?
一、Hbase是什么?
Hbase属于NoSql的一种。 NoSql数据库分为如下几类:
Key-Value类型数据库
这类数据库主要会使用到一个哈希表,这个表有一个特定的键和一个指针指向特定的数据。key/value模型对IT系统来说简单、易部署。但是对DBA只对部分值进行查询和更新的时候,key/value就显得效率低下了。举例如:Tokyo Cabinet,Redis,Voldemort,Oracle BDB。
面向列的数据库
这部分数据库用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向多个列。这些列由列家族来安排。如: Cassandra ,HBase,Riak。
文档型数据库
文档型数据库来自于Lotus Notes办公软件的,而且它同第一种键值存储类似。该类型的数据是版本化的文档,半结构化的文档以及特定的 格式存储,比如JSON。文档数据库可以看作是键值对数据库的升级版,允许之间嵌套值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB,MongoDb.国内也有文档型数据库 SequoiaDB ,已经开源。
图形数据库
图形结构的数据库同其它行列以及结构化的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要定制数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。 如:Neo4J, InfoGrid, Infinite Graph。
二、为什么会产生HBase?
要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,批量访问和流式访问都做了优化,同时也通过多副本解决了容灾问题。
但是 Hadoop 的缺陷在于它只能执行批处理,并且只能以顺序方式访问数据,这意味着即使是最简单的工作,也必须搜索整个数据集,无法实现对数据的随机访问。实现数据的随机访问是传统的关系型数据库所擅长的,但它们却不能用于海量数据的存储。在这种情况下,必须有一种新的方案来解决海量数据存储和随机访问的问题,HBase 就是其中之一 (HBase,Cassandra,couchDB,Dynamo 和 MongoDB 都能存储海量数据并支持随机访问)。
三、Hbase架构
Hbase依赖于Zookeeper和HDFS,如下图所示:
从图中可以看到一个Region由多个Store组成,一个Store对应着一个列族(Column Family)。一个store包括位于磁盘的storefile和位于内存的memstore。写入数据的时候会先写入memstore,当超过一定阈值后,会写入storefile,当storefile达到一定数量后,会进行一次版本删除和合并工作,形成更大的storefile。当region中所有的storefile超过一定阈值后,region会分割成两个,由HRegionMaster分配到相应的region server服务器,实现负载均衡。
找数据的时候会先在memstore找,找不到再找filestore。
HRegion是实现负载均衡的最小单元,不同的HRegion可以分到不同的HRegion Server上。
StoreFile以HFile的格式保存在HDFS上。
HBase最重要的设计是RowKey,RowKey是一个列的唯一标识。
插入列的时候要指定列族和表名,列名不重要,它是伴随着数据插进去的。
timestamp用于标识我们的版本。
zookeeper负责高可用,存储region的API。
四、Phoenix
Phoenix
是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据。在 Phoenix
之前,如果你要访问 HBase,只能调用它的 Java API,但相比于使用一行 SQL 就能实现数据查询,HBase 的 API 还是过于复杂。Phoenix
的理念是 we put sql SQL back in NOSQL
,即你可以使用标准的 SQL 就能完成对 HBase 上数据的操作。同时这也意味着你可以通过集成 Spring Data JPA
或 Mybatis
等常用的持久层框架来操作 HBase。
其次 Phoenix
的性能表现也非常优异,Phoenix
查询引擎会将 SQL 查询转换为一个或多个 HBase Scan,通过并行执行来生成标准的 JDBC 结果集。它通过直接使用 HBase API 以及协处理器和自定义过滤器,可以为小型数据查询提供毫秒级的性能,为千万行数据的查询提供秒级的性能。同时 Phoenix 还拥有二级索引等 HBase 不具备的特性,因为以上的优点,所以 Phoenix
成为了 HBase 最优秀的 SQL 中间层。
参考资料
入门大数据---Hbase是什么?的更多相关文章
- 入门大数据---HBase Shell命令操作
学习方法 可以参考官方文档的简单示例来 点击查看 可以直接在控制台使用help命令查看 例如直接使用help命令: 从上图可以看到,表结构的操作,表数据的操作都展示了.接下来我们可以针对具体的命令使用 ...
- 入门大数据---Hbase 过滤器详解
一.HBase过滤器简介 Hbase 提供了种类丰富的过滤器(filter)来提高数据处理的效率,用户可以通过内置或自定义的过滤器来对数据进行过滤,所有的过滤器都在服务端生效,即谓词下推(predic ...
- 入门大数据---Hbase协处理器详解
一.简述 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立"二级索引",难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hbase 中,统计数 ...
- 入门大数据---Hbase容灾与备份
一.前言 本文主要介绍 Hbase 常用的三种简单的容灾备份方案,即CopyTable.Export/Import.Snapshot.分别介绍如下: 二.CopyTable 2.1 简介 CopyTa ...
- 入门大数据---Hbase的SQL中间层_Phoenix
一.Phoenix简介 Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据.在 Phoenix 之前,如果你要访问 HBase,只能 ...
- 入门大数据---Hbase搭建
环境介绍 tuge1 tuge2 tuge3 tuge4 NameNode NameNode DataNode DataNode ZooKeeper ZooKeeper ZooKeeper ZooKe ...
- 第五章:大数据 の HBase 进阶
本课主题 HBase 读写数据的流程 HBase 性能优化和最住实践 HBase 管理和集群操作 HBase 备份和复制 引言 前一篇 HBase 基础 (HBase 基础) 简单介绍了NoSQL是什 ...
- 第四章:大数据 の HBase 基础
本课主题 NoSQL 数据库介绍 HBase 基本操作 HBase 集群架构与设计介紹 HBase 与HDFS的关系 HBase 数据拆分和紧缩 引言 介绍什么是 NoSQL,NoSQL 和 RDBM ...
- 大数据hbase分布式安装及其部署。
大数据hbase分布式安装及其部署. 首先要启动Hadoop以及zookeeper,可以参考前面发布的文章. 将hbase的包上传至master节点 这里我使用的是1.3.6的版本,具体的根据自己的版 ...
随机推荐
- 50个SQL语句(MySQL版) 问题十四
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- Cypress系列(9)- Cypress 编写和组织测试用例篇 之 钩子函数Hook
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Hook 就是常说的钩子函数,在 pyt ...
- Java实现 LeetCode 686 重复叠加字符串匹配
686. 重复叠加字符串匹配 给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1. 举个例子,A = "abcd&q ...
- Java实现 LeetCode 278 第一个错误的版本
278. 第一个错误的版本 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. ...
- java实现第二届蓝桥杯地铁换乘(C++)
地铁换乘. 为解决交通难题,某城市修建了若干条交错的地铁线路,线路名及其所属站名如stations.txt所示. 线1 苹果园 .... 四惠东 线2 西直门 车公庄 .... 建国门 线4 .... ...
- Linux 独立服务管理
RPM包安装在默认位置 /etc/init.d/:启动脚本位置 /etc/sysconfig/:初始化环境配置文件位置 /etc/:配置文件位置 /etc/xinetd.conf/:xinetd配置文 ...
- (十)DVWA之SQL Injection--测试分析(Impossible)
DVWA之SQL Injection--测试分析(Impossible) 防御级别为Impossible的后端代码:impossible.php <?php if( isset( $_GET[ ...
- Android拍照相关知识总结
1.调用系统的照相机程序 Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(inte ...
- Dedecms 目标仿站的学习视频
目标网站首页的初步仿制(实站仿站)http://vodcdn.video.taobao.com/player/ugc/tb_ugc_bytes_core_player_loader.swf 目标网站首 ...
- (六)POI-操作Excel的poi的字体设置
原文链接:https://blog.csdn.net/class157/article/details/92817286 package com.java.poi; import org.apache ...