BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略

目录

Hbase数据管理的简介——基于Hadoop的非结构化、基于列的数据存储的数据库

1、HBase的架构体现及与HDFS、MapReduce、Zookeeper之间关系

2、Hbase的访问接口

3、HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

4、Hbase与传统的mysql、oracle的差别——列式数据与行式数据的区别——NoSql数据库与传统关系型数据的区别

Hbase VS Oracle

列式数据库(Hbase) VS 行式数据库(Oracle)

5、什么时候使用Hbase?

Hbase数据管理的下载

Hbase数据管理的案例应用

1、内部应用


Hbase数据管理的简介——基于Hadoop的非结构化、基于列的数据存储的数据库

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

  • HBase利用Hadoop HDFS作为其文件存储系统;
  • Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据
  • Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
      Hbase是一种No SQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库。

  • Hadoop HDFSHBase提供了高可靠性的底层存储支持;
  • Hadoop MapReduceHBase提供了高性能的计算能力;
  • ZookeeperHBase提供了稳定服务和failover机制。

1、HBase的架构体现及与HDFS、MapReduce、Zookeeper之间关系

HBase位于结构化存储层。Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

  • Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
  • HDFS是Hbase运行的底层文件系统
  • RegionServer,理解为数据节点,存储数据的。
  • Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和Region的切分。

2、Hbase的访问接口

  • (1)、Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据。
  • (2)、HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用。
  • (3)、Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据。
  • (4)、REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制。
  • (5)、Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计。
  • (6)、Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase。

3、HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:

  • (1)、HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
  • (2)、HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File。

4、Hbase与传统的mysql、oracle的差别——列式数据与行式数据的区别——NoSql数据库与传统关系型数据的区别

参考文章:https://blog.csdn.net/yczws1/article/details/19178265#1536434-tsina-1-98976-66a1f5d8f89e9ad52626f6f40fdeadaa

4.1、Hbase VS Oracle

  • (1)、Hbase适合大量插入同时又有读的情况。输入一个Key获取一个value或输入一些key获得一些value。
  • (2)、Hbase的瓶颈是硬盘传输速度。Hbase的操作,它可以往数据里面insert,也可以update一些数据,但update的实际上也是insert,只是插入一个新的时间戳的一行。Delete数据,也是insert,只是insert一行带有delete标记的一行。
           Hbase的所有操作都是追加插入操作。Hbase是一种日志集数据库。它的存储方式,像是日志文件一样。它是批量大量的往硬盘中写,通常都是以文件形式的读写。这个读写速度,就取决于硬盘与机器之间的传输有多快。
            而Oracle的瓶颈是硬盘寻道时间。它经常的操作时随机读写。要update一个数据,先要在硬盘中找到这个block,然后把它读入内存,在内存中的缓存中修改,过段时间再回写回去。由于你寻找的block不同,这就存在一个随机的读。硬盘的寻道时间主要由转速来决定的。而寻道时间,技术基本没有改变,这就形成了寻道时间瓶颈。
  • (3)、Hbase中数据可以保存许多不同时间戳的版本(即同一数据可以复制许多不同的版本,准许数据冗余,也是优势)。数据按时间排序,因此Hbase特别适合寻找按照时间排序寻找Top n的场景。找出某个人最近浏览的消息,最近写的N篇博客,N种行为等等,因此Hbase在互联网应用非常多。
  • (4)、Hbase的局限是只能做很简单的Key-value查询。它适合有高速插入,同时又有大量读的操作场景。而这种场景又很极端,并不是每一个公司都有这种需求。在一些公司,就是普通的OLTP(联机事务处理)随机读写。在这种情况下,Oracle的可靠性,系统的负责程度又比Hbase低一些。而且Hbase局限还在于它只有主键索引,因此在建模的时候就遇到了问题。比如,在一张表中,很多的列我都想做某种条件的查询。但却只能在主键上建快速查询。所以说,不能笼统的说那种技术有优势。
  • (5)、Oracle是行式数据库,而Hbase是列式数据库。列式数据库的优势在于数据分析这种场景。数据分析与传统的OLTP的区别。数据分析,经常是以某个列作为查询条件,返回的结果也经常是某一些列,不是全部的列。在这种情况下,行式数据库反应的性能就很低效。

4.2、列式数据库(Hbase) VS 行式数据库(Oracle)

  • 列式数据库:是以列作为元素存储的。同一个列的元素会挤在一个块。当要读某些列,只需要把相关的列块读到内存中,这样读的IO量就会少很多。通常,同一个列的数据元素通常格式都是相近的。这就意味着,当数据格式相近的时候,数据就可以做大幅度的压缩。所以,列式数据库在数据压缩方面有很大的优势,压缩不仅节省了存储空间,同时也节省了IO。(这一点,可利用在当数据达到百万、千万级别以后,数据查询之间的优化,提高性能,示场景而定)
  • 行式数据库:Oracle为例,数据文件的基本组成单位:块/页。块中数据是按照一行行写入的。这就存在一个问题,当我们要读一个块中的某些列的时候,不能只读这些列,必须把这个块整个的读入内存中,再把这些列的内容读出来。换句话就是:为了读表中的某些列,必须要把整个表的行全部读完,才能读到这些列。这就是行数据库最糟糕的地方。

5、什么时候使用Hbase?

Hbase不适合解决所有的问题:

  • 适合数据库量要足够多的场景——尽可能使所有机器高效利用如果有十亿及百亿行数据,那么Hbase是一个很好的选项。如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态。
  • 适合不需要辅助索引,静态类型的列,事务等特性的场景。一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。
  • 保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。

Hbase数据管理的下载

官方下载地址:http://www.apache.org/dyn/closer.cgi/hbase/
推荐下载地址:https://mirrors.bfsu.edu.cn/apache/hbase/

Hbase数据管理的案例应用

1、内部应用

  • 存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。
  • 存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录等),业务操作日志信息。
  • 存储业务附件:UDFS系统存储图像,视频,文档等附件信息。

参考文章
入门HBase,看这一篇就够了

BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略相关推荐

  1. ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient)、Spearman相关系数的简介、案例应用之详细攻略

    ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient).Spearman相关系数的简介.案例应用之详细攻略 目录 PPMCC皮尔逊相关系数的简介 ...

  2. Python命令行解析:sys.argv[]函数的简介、案例应用之详细攻略

    Python命令行解析:sys.argv[]函数的简介.案例应用之详细攻略 目录 sys.argv[]函数的简介 sys.argv[]函数的案例应用 1.基础测试 2.进阶用法 3.sys.argv[ ...

  3. DL之FAN:FAN人脸对齐网络(Face Alignment depth Network)的论文简介、案例应用之详细攻略

    DL之FAN:FAN人脸对齐网络(Face Alignment depth Network)的论文简介.案例应用之详细攻略 目录 FAN人脸对齐网络(Face Alignment depth Netw ...

  4. CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介、案例应用之详细攻略

    CV之PoseEstimation:Pose Estimation人体姿态估计(AI识人,OpenPose+DeepCut+RMPE+Mask RCNN)的简介.案例应用之详细攻略 目录 Pose E ...

  5. Py之matplotlibseaborn :matplotlibseaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图、密度图、小提琴图等)简介、案例应用之详细攻略

    Py之matplotlib&seaborn :matplotlib&seaborn绘图的高级进阶之高级图可视化(基础图(直方图等),箱线图.密度图.小提琴图等)简介.案例应用之详细攻略 ...

  6. C++:C++编程语言学习之数学运算运算符及其优先级的简介、案例应用之详细攻略

    C++:C++编程语言学习之数学运算&运算符及其优先级的简介.案例应用之详细攻略 目录 1.C++语言的数学运算 1.1.C++ 内置了丰富的数学函数,可对各种数字进行

  7. ML之VC维:VC维(Vapnik-Chervonenkis Dimension)理论的概述(衡量模型复杂度和预测能力的指标)的简介、案例理解之详细攻略

    ML之VC维:VC维(Vapnik-Chervonenkis Dimension)理论的概述(衡量模型复杂度和预测能力的指标)的简介.案例理解之详细攻略 目录 VC维(Vapnik-Chervonen ...

  8. ML:机器学习模型提效之监督学习中概率校准的简介、案例应用之详细攻略

    ML:机器学习模型提效之监督学习中概率校准的简介.案例应用之详细攻略 目录 监督学习中概率校准的简介 监督学习中概率校准的概述 监督

  9. VB.net:VB.net编程语言学习之添加引用打包安装项目的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之添加引用&打包安装项目的简介.案例应用之详细攻略 目录 关于添加引用 1.SW的二次开发,需要引用多个Solidworks库文件即dll文件

  10. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

最新文章

  1. 使用KMeanCluster对多个区域进行聚类,并结合Matplotlib绘制中心点、最大最小距离点
  2. ASP.NET MVC教程:理解模型、视图和控制器(1)
  3. linux之vsftpd配置
  4. 胶囊网络与计算机视觉教程 @CVPR 2019
  5. 从壹开始前后端分离【 .NETCore2.1 +Vue 2 +AOP+DI】框架之一 || 前言
  6. 笨办法学 Linux 4~7
  7. Short, Integer, Long缓存
  8. [DELPHI] 使用mod函数换行
  9. DCMTK各模块说明
  10. 计算机毕业设计Java房产客户信息管理系统(源码+系统+mysql数据库+lw文档)
  11. 基于51单片机ds18b20智能温控风扇Proteus仿真
  12. matlab时域数据转频域,怎么使用IFFT(matlab)将频域转换为时域
  13. Mybatis 插入数据 获取 oracle 自增序列
  14. 利用python多个工作簿合并到一个工作簿
  15. Element-UI + Vue,java面试官常用问题
  16. 腾讯Bugly的使用
  17. java.io.ioexception 设备未就绪_AxisFault faultString: java.io.IOException: 设备未就绪。
  18. win10 系统屏幕黑屏只有鼠标光标在动,问题解决
  19. 听书是怎样的一种体验
  20. CPU负载很低,loadavg很高处理方法

热门文章

  1. printstream java_Java PrintStream
  2. android 变化字体,android 字体修改
  3. 树莓派python实例_使用Python实现树莓派WiFi断线自动重连实例(附代码)
  4. 09-2.部署 dashboard 插件
  5. 因为 Java 和 Php 在获取客户端 cookie 方式不同引发的 bug
  6. Atom编写Markdown
  7. Memcached主从复制+keepalived高可用架构
  8. ICMP Internet控制报文协议(四)
  9. 常见宽带错误解决方法
  10. Java 和操作系统交互,你猜会发生什么?