HBase(1):简介

news2024/9/20 9:41:39

1 Hadoop

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

2 Hadoop的局限

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

3 HBase 与 NoSQL

 

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

        大:一个表可以有上十亿行,上百万列

        面向列:面向列(族)的存储和权限控制,列(族)独立检索

        稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏

4 HBase应用场景

4.1 对象存储

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

4.2 时序数据

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

4.3 推荐画像

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

4.4 时空数据

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

4.5 CubeDB OLAP

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

4.6 消息/订单

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

4.7 Feeds流

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

4.8 NewSQL

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

4.9 其他

  • 存储爬虫数据
  • 海量数据备份
  • 短网址

5 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度量提供内置网页。

7 RDBMS与HBase的对比

7.1 关系型数据库

7.1.1 结构

  • 数据库以表的形式存在
  • 支持FAT、NTFS、EXT、文件系统
  • 使用主键(PK)
  • 通过外部中间件可以支持分库分表,但底层还是单机引擎
  • 使用行、列、单元格

7.1.2 功能

  • 支持向上扩展(买更好的服务器)
  • 使用SQL查询
  • 面向行,即每一行都是一个连续单元
  • 数据总量依赖于服务器配置
  • 具有ACID支持
  • 适合结构化数据
  • 传统关系型数据库一般都是中心化的
  • 支持事务
  • 支持Join

7.2 HBase

7.2.1 结构

  • 以表形式存在
  • 支持HDFS文件系统
  • 使用行键(row key)
  • 原生支持分布式存储、计算引擎
  • 使用行、列、列蔟和单元格

7.2.2 功能

  • 支持向外扩展
  • 使用API和MapReduce、Spark、Flink来访问HBase表数据
  • 面向列蔟,即每一个列蔟都是一个连续的单元
  • 数据总量不依赖具体某台机器,而取决于机器数量
  • HBase不支持ACID(Atomicity、Consistency、Isolation、Durability)
  • 适合结构化数据和非结构化数据
  • 一般都是分布式的
  • HBase不支持事务,支持的是单行数据的事务操作
  • 不支持Join

8 HDFS对比HBase

8.1 HDFS

  • HDFS是一个非常适合存储大型文件的分布式文件系统
  • HDFS它不是一个通用的文件系统,也无法在文件中快速查询某个数据

8.2 HBase

  • HBase构建在HDFS之上,并为大型表提供快速记录查找(和更新)
  • HBase内部将大量数据放在HDFS中名为「StoreFiles」的索引中,以便进行高速查找
  • Hbase比较适合做快速查询等需求,而不适合做大规模的OLAP应用

9 Hive对比Hbase

9.1 Hive

  • 数据仓库工具

        Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询

  • 用于数据分析、清洗

        Hive适用于离线的数据分析和清洗,延迟较高

  • 基于HDFS、MapReduce

        Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行

9.2 HBase

  • NoSQL数据库

        是一种面向列存储的非关系型数据库。

  • 用于存储结构化和非结构化的数据

        适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。

  • 基于HDFS

        数据持久化存储的体现形式是Hfile,存放于DataNode中,被ResionServer以region的形式进行管理

  • 延迟较低,接入在线业务使用

        面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度

9.3 总结Hive与HBase

  • Hive和Hbase是两种基于Hadoop的不同技术
  • Hive是一种类SQL的引擎,并且运行MapReduce任务
  • Hbase是一种在Hadoop之上的NoSQL 的Key/value数据库
  • 这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到HBase,或者从HBase写回Hive

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/466762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全国计算机等级三级网络技术试卷详解(二)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1. 下列属于广域网QoS技术的是() A) RSVP B) PSTN C) MSTP D) ISDN 属于广域网QoS技术的是RSVP。目前宽带城域网保证服务质量QoS要求…

SpringCould+Vue3-Element-Admin 登录接口,用户信息接口以及Token验证的实现【VegePig教育平台】

文章目录 一.SpringCouldVue3-Element-Admin 登录接口,用户信息接口以及Token验证的实现【VegePig教育平台】1.1 背景1.2 数据库 二、登录接口及其Token实现2.1 前端2.2 后端2.2.1 控制层2.2.2 service层2.2.3 工具类:CreateJwt2.2.4 Dao-Mapper 三、用户…

Android NDK 开发入门学习

android ndk技术早已经不是什么新的技术,但是由于工作中没有涉及到,所以一直没有尝试,今天抽空了解学习一下,顺便记录一下,方便后续回顾,由于是刚学习,很多资料也是网上找的,写的不对…

Docker 容器学习【1】

1.容器概述 1.1什么是容器 容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。通过名称空间(Namespace)、控制组&…

vivo 推送系统的容灾建设与实践

作者:vivo 互联网服务器团队 - Yu Quan 本文介绍了推送系统容灾建设和关键技术方案,以及实践过程中的思考与挑战。 一、推送系统介绍 vivo推送平台是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接…

BI实施项目干系人分析案例

最近有在学项目管理,做了个项目干系人分析的小案例 项目背景:BI决策报表实施项目,主要为了甲方公司高层及经理做一些决策报表。 1.识别项目干系人 项目组主要成员: 乙方:王某(技术leader)&am…

关于小波,Morlet,Grossmann,Meyer,Daubechies,Mallat

转自:未来数学家,向大佬致敬。 匈牙利电子工程师丹尼斯加博尔(Dennis Gabor)1946年提出加窗傅里叶变换,开创了在时间-频率平面上分析信号的方法,Gabor还发明了全息摄影术,这项工作让他获得了19…

Clickhouse的数据副本协同原理详解(借助ZK实现)

Clickhouse的数据副本协同原理详解(借助ZK实现) 文章目录 Clickhouse的数据副本协同原理详解(借助ZK实现)Clickhouse数据副本副本的特点 ReplicatedMergeTree原理解析数据结构Zookeeper内的节点结构元数据判断标识操作日志 Entry日…

【AXU3EG】Zynq UltraScale平台启动引导过程

Zynq UltraScale MPSoC(16nm) 的核心是两个 CPU 模块: 应用处理单元(APU):四核 ARM Cortex-A53,适合于 Linux 和裸机应用程序。实时处理单元(RPU):双核 ARM …

Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?

如何从零基础小白成长为 Unity 高级程序员?【全篇学习内容免费!快来白嫖】 高能预警,下文包含从零基础新手到高级程序员一站式技术学习、学习方法、心态等内容,供各个阶段的同学进行参考。 从零基础到高级程序员 上干货 话不多说…

MySQL——存储过程和函数从零基础到入门必学教程(涵盖基础实战)

文章目录 目录 文章目录 前言 一、创建存储过程 二、在存储过程中使用变量 1.定义变量 2.为变量赋值 三、光标的使用 1.打开光标 2.打开光标 3.使用光标 4.关闭光标 四、流程控制的作用 1.IF语句 2.CASE语句 3.LOOP语句 4.LEAVE语句 5.ITERATE语句 6.REPEAT语…

碳酸氢锂硫酸锂溶液除钙镁

#碳酸氢锂硫酸锂溶液除钙镁 随着新能源汽车快速发展,以粗Li2CO3(85-98%)和工业级Li2CO3(98.5-99.0%)为原料制备高纯电池级Li2CO3(99.5-99.9%)的工艺的突破,显得尤为重要,正越来越受到人们的关注。 粗Li2CO3…

智能排班系统

大家好,我是csdn的博主:lqj_本人 担任本次比赛的队长,这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011…

安全技术交底大全

交底内容得过大,过宽,不要造成土建结构缺陷。02)管路敷设完后应立即进行保护其他工种在操作时应注意不要将管子砸扁和踩坏。(3)在碎板,加气板上别洞时,注意不要剔断钢筋,剔洞时应先用钻打孔,再护孔&#xf…

visual stdio c++调用python混合编程

visual stdio2019 c调用python混合编程 1.Python环境的搭建 关于环境创建可以参考https://blog.csdn.net/qq_36559788/article/details/123174309 这里python我用的是anaconda里的python38,并且没有debug库,所以我只用了release库 在vs中设置项目属性…

谈谈JVM的垃圾回收机制

目录 1. 死亡对象的判断算法 1.1 引用计数算法 1.2 可达性分析算法 2. 垃圾回收算法 2.1 标记——清除算法 2.2 复制算法 2.3 标记——整理算法 2.4 分代算法 1. 死亡对象的判断算法 对于支持垃圾回收机制的编程语言来说,常见的死亡对象的判断方法有引用计数…

成功上岸北大!总分418分,数学150分,经验贴+方法论

Datawhale干货 作者:葛云阳,杭州电子科技大学,Datawhale成员 前 言 大家好,我是北海。2023年以总分418分的成绩上岸北京大学信息工程学院计算机应用技术专业,其中初试第三,复试第五,总成绩第三…

《编程思维与实践》1038.排版

《编程思维与实践》1038.排版 题目 思路 分两个步骤进行解决: 1.在给定长度下找到每一行可以容纳的最多单词数(单词长度<M/2保证每行至少有两个单词); 2.输出时补充额外的空格. 其中,第一个步骤可以通过分割字符串将每个字符串存起来,再找到第一个超过给定长度M的单…

Java项目上线之云服务器环境篇(二)——Tomcat的安装与配置

Java项目上线之云服务器环境篇(二)——Tomcat的安装与配置 Tomcat的选择: 云服务器tomcat的选择最好与本机项目运行的tomcat版本号一致,避免一些不必要的问题。 配置步骤: 1、首先进入云服务器创建好放置tomcat的文件…

UE5实现Runtime环境下绘制线功能

文章目录 1.实现目标2.实现过程2.1 C++实现2.2 蓝图调用3.参考资料1.实现目标 UE5在Runtime环境下基于PDI绘制线,GIF动图如下: 2.实现过程 在UE5 Runtime环境下常用的绘制线方法有使用以下几种方式。一是基于SplineMeshComponent,即使用已有的点位去初始化样条线,然后在挂…