【大数据基础】HBase使用场景有哪些

2020-10-21 10:51发布

5条回答
水默
2楼-- · 2020-10-21 10:54

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

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

推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上

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

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

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

Feeds流:典型的应用就是xx朋友圈类似的应用

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

楠楠楠楠
3楼-- · 2020-10-21 14:33

hbase的使用场景比较多,对象存储、时空数据、时间数据、画像数据等。

乐xenia
4楼-- · 2020-10-21 16:14

HBase 解决不了所有的问题,但是针对某些特点的数据可以使用 HBase 高效地解决,如以下的应用场景。

  • 数据模式是动态的或者可变的,且支持半结构化和非结构化的数据。

  • 数据库中的很多列都包含了很多空字段,在 HBase 中的空字段不会像在关系型数据库中占用空间。

  • 需要很高的吞吐量,瞬间写入量很大。

  • 数据有很多版本需要维护,HBase 利用时间戳来区分不同版本的数据。

  • 具有高可扩展性,能动态地扩展整个存储系统。


在实际应用中,有很多公司使用 HBase,如 Facebook 公司的 Social Inbox 系统,使用 HBase 作为消息服务的基础存储设施,每月可处理几千亿条的消息;Yahoo 公司使用 HBase 存储检查近似重复的指纹信息的文档,它的集群当中分别运行着 Hadoop 和 HBase,表中存了上百万行数据;Adobe 公司使用 Hadoop+HBase 的生产集群,将数据直接持续地存储在 HBase 中,并将 HBase 作为数据源进行 MapReduce 的作业处理;Apache 公司使用 HBase 来维护 Wiki 的相关信息。

下面通过几个实际案例来介绍 HBase 的应用场景。

搜索引擎应用

前面讲到 HBase 是 Google Bigtable 的开源实现,而 Google 公司开发 Bigtable 是为了它的搜索引擎应用。Google 和其他搜索引擎是基于建立索引来完成快速搜索服务的。该索引提供了特定词语,包含该词语的所有文档的映射。

搜索引擎的文档库是整个互联网,搜索的特定词语就是用户搜索框里输入的任何信息,Bigtable 和开源的 HBase 为这种文档库提供存储及行级的访问。下面简单地分析 HBase 应用于网络搜索的逻辑过程。

首先,网络爬虫持续不断地从网络上抓取新页面,并将页面内容存储到 HBase 中,爬虫可以插入和更新 HBase 里的内容;然后,用户可以利用 MapReduce 在整张表上计算并生成索引,为网络搜索做准备;接着,用户发起搜索请求;最后,搜索引擎查询建立好的索引列表, 获取文档索引后,再从 HBase 中获取所需的文档内容,最后将搜索结果提交给用户。

捕获增量数据

数据通常是动态增加的,随着时间的推移,数据量会越来越大,例如,网站的日志信息、邮箱的邮件信息等。通常通过采集工具捕获来自各种数据源的增量数据,再使用 HBase 进行存储。

例如,这种采集工具可能是网页爬虫,采集的数据源可能是记录用户点击的广告信息、驻留的时间长度以及对应的广告效果数据,也可能是记录服务器运行的各种参数数据。

下面介绍一些有关该使用场景的成功案例。

存储监控参数

大型的、基于 Web 的产品后台一般都拥有成百上千台服务器,这些服务器不仅为前端的大量用户提供服务,同时还需要提供日志采集、数据存储、数据处理等各种功能。

为了保证产品的正常运行,监控服务器和服务器上运行的软件的健康状态是至关重要的。大规模监控整个环境需要能够采集和存储来自不同数据源的各种参数的监控系统。OpenTSDB 正是这种监控系统,它可以从大规模集群中获取相应的参数并进行存储、索引和服务。

OpenTSDB(Open Time Series Database)是一个开源框架,其含义是开放时间序列数据库。这个框架使用 HBase 作为核心平台来存储和检索所收集的参数,可以灵活地支持增加参数,也可以支持采集上万台机器和上亿个数据点,具有高可扩展性。

OpenTSDB 作为数据收集和监控系统,一方面能够存储和检索参数数据并保存很长时间,另一方面如果需要增加功能也可以添加各种新参数。最终 OpenSTDB 对 HBase 中存储的数据进行分析,并以图形化方式展示集群中的网络设备、操作系统及应用程序的状态。

存储用户交互数据

对基于 Web 的应用,还有一种很重要的数据,即用户交互数据。这一类数据包含了用户的访问网站的行为习惯。通过分析用户交互数据,就可以获取用户在网站上的活动信息。例如,用户看了什么?某个按钮被用户点击了多少次?用户最近搜索了什么?从这些信息就可以了解用户的需求,从而针对不同的用户提供不同的应用。

例如,Facebook 里的 Like 按钮,每次用户 Like —个特定主题,计数器增加一次。FaceBook 使用 HBase 的计数器来计量人们 Like 特定网页的次数。内容原创人或网页主人可以得到近乎实时的、用户 Like 他们网页的数据信息。他们可以据此更敏捷地判断应该提供什么内容。

Facebook 为此创建了一个名为 Facebook Insight 的系统,该系统需要一个可扩展的存储系统。公司考虑了很多种可能,包括关系型数据库、内存数据库和 Cassandra 数据库,最后决定使用 HBase。基于 HBase,Facebook 可以很方便地横向扩展服务规模,提供给数百万用户,也可以继续使用他们已有的运行大规模 HBase 机群的经验。该系统每天处理数百亿条事件,记录数百个参数。

存储遥测数据

软件在运行时经常会岀现异常的情况,这时大部分软件都会生成一个软件崩溃报告,这类软件运行报告会返回软件开发者,用来评测软件质量和规划软件开发路线图。

例如,FireFox 网络浏览器是 Mozilla 基金会旗下的产品,支持各种操作系统,全世界数百万台计算机上都有它的身影。 当 FireFox 浏览器崩溃时,会以 Bug 报告的形式返回一个软件崩溃报告给 Mozilla。

Mozilla 使用一个叫作 Socorro 的系统收集这些报告,用来指导研发部门研制更稳定的产品。Socorro 系统的数据存储和分析建构在 HBase 上,采用 HBase 使得基本分析可以用到比以前多得多的数据。用这些分析数据指导 Mozilla 的开发人员,使其更有针对性地研制出 Bug 更少的版本。

趋势科技(TrendMicro)为企业客户提供互联网安全解决方案,来应对网络上千变万化的安全威胁。安全的重要环节是感知,日志收集和分析对于提供这种感知能力是至关重要的。

趋势科技使用 HBase 来收集和分析日志活动,每天可收集数十亿条记录。HBase 中灵活的模式支持可变的数据结构,当分析流程重新调整时,可以增加新属性。

广告效果和点击流

在线广告是互联网产品的一项主要收入来源。互联网企业提供免费服务给用户,在用户使用服务时投放广告给目标用户。这种精准投放需要针对用户交互数据做详细的捕获和分析,以理解用户的特征;再基于这种特征,选择并投放广告。企业可使用精细的用户交互数据建立更优的模型,进而获得更好的广告投放效果和更多的收入。

但这类数据有两个特点:它以连续流的形式出现,它很容易按用户划分。在理想情况下,这种数据一旦产生就能够马上使用。

HBase 非常适合收集这种用户交互数据,并已经成功地应用在相关领域。它可以增量捕获第 一手点击流和用户交互数据,然后用不同处理方式来处理数据,电商和广告监控行业都已经非常熟练地使用了类似的技术。

例如,淘宝的实时个性化推荐服务,中间推荐结果存储在 HBase 中,广告相关的用户建模数据也存储在 HBase 中,用户模型多种多样,可以用于多种不同场景,例如,针对特定用户投放什么广告,用户在电商门户网站上购物时是否实时报价等。

HBase 已成熟地应用于国内外的很多大公司,总之,HBase 适合用来存储各种类型的大规模的数据,可为用户提供实时的在线查询,同时也支持离线的应用。但对于需要 JOIN 和其他一些关系型数据特性要求时,HBase 就不适用了,因此,还是要根据应用场景合理地使用 HBase,发挥 HBase 的优势。


霸气的名字 - 喜欢晴天
5楼-- · 2020-10-22 18:33

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,使用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Google Bigtable的开源实现,是建立在Hadoop文件系统之上的分布式面向列的数据库。

1、对象存储

比如一些app的海量的图片、网页、新闻等对象,可以存储在HBase中,有些病毒公司的病毒库也可以存储在HBase中。

2、时空数据

主要是轨迹、气象网格之类,比如滴滴打车的轨迹数据主要存在HBase之中,另外大数据量的车联网企业,数据也都是存在HBase中。

比如互联网出行,智慧物流与外卖递送,传感网与实时GIS等场景。

3、时序数据

时序数据就是分布在时间上的一系列数值。HBase之上有OpenTSDB模块,可以满足时序类场景的需求。

比如我们有很多的设备、传感器,产生很多数据,如果规模不是特别大的厂家有几千个风机,每个风机有几百个指标,那么就会有一百万左右的时序数据,如果用采样每一秒会产生一百万个时间点,如果用传统数据库,那么每一秒会产生一百万次,持续地往MQ做一百万次,它会崩裂。并且查询也是个大问题,除了多维查询以外,我们还会额外地增加时间纬度,查看一段时间的数据。这时候HBase很好了满足了时序类场景的需求。

4、推荐画像

特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase上。用户画像有用户数据量大,用户标签多,标签统计维度不确定等特点,适合HBase特性的发挥。

5、消息/订单

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

6、Feed流

Feed流,是RSS中用来接收该信息来源更新的接口,简单的说就是持续更新并呈现给用户的内容。比如微信朋友圈中看到的好友的一条条状态,微博看到的你关注的人更新的内容,App收到的一篇篇新文章的推送,都算是feed流。

7、NewSQL

HBase上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求。从NoSQL到NewSQL,Phoenix或许是新的趋势。


我的网名不再改
6楼-- · 2020-10-25 15:03

一、Hbase出现的缘由及简介

自1970年以来,关系数据库用于数据存储和维护有关问题的解决方案。大数据的出现后,好多公司实现处理大数据并从中受益,并开始选择像  Hadoop  的解决方案。

Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。

Hadoop的限制

Hadoop只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集,即使是最简单的搜索工作。

当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。

Hadoop随机存取数据库

应用程序,如HBase, Cassandra, couchDB, Dynamo 和  MongoDB  都是一些存储大量数据和以随机方式访问数据的数据库。

HBase是什么?

HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。

HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。

人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

HBase 和 HDFS

HDFS    

HBase    

HDFS是适于存储大容量文件的分布式文件系统。    

HBase是建立在HDFS之上的数据库。    

HDFS不支持快速单独记录查找。    

HBase提供在较大的表快速查找    

它提供了高延迟批量处理;没有批处理概念。    

它提供了数十亿条记录低延迟访问单个行记录(随机存取)。    

它提供的数据只能顺序访问。    

HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。    

HBase的存储机制

HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:

  • 表是行的集合。

  • 行是列族的集合。

  • 列族是列的集合。

  • 列是键值对的集合。

下面给出的表中是HBase模式的一个例子。

Rowide    

Column Family    

Column Family    

Column Family    

Column Family    


col1    

col2    

col3    

col1    

col2    

col3    

col1    

col2    

col3    

col1    

col2    

col3    

1    













2    













3    













面向列和面向行

面向列的数据库是存储数据表作为数据列的部分,而不是作为行数据。总之它们拥有列族。

行式数据库    

列式数据库    

它适用于联机事务处理(OLTP)。    

它适用于在线分析处理(OLAP)。    

这样的数据库被设计为小数目的行和列。    

面向列的数据库设计的巨大表。    

下图显示了列族在面向列的数据库:

HBase 和 RDBMS

HBase    

RDBMS    

HBase无模式,它不具有固定列模式的概念;仅定义列族。    

RDBMS有它的模式,描述表的整体结构的约束。    

它专门创建为宽表。 HBase是横向扩展。    

这些都是细而专为小表。很难形成规模。    

没有任何事务存在于HBase。    

RDBMS是事务性的。    

它反规范化的数据。    

它具有规范化的数据。    

它用于半结构以及结构化数据是非常好的。    

用于结构化数据非常好。    

HBase的特点

  • HBase线性可扩展。

  • 它具有自动故障支持。

  • 它提供了一致的读取和写入。

  • 它集成了Hadoop,作为源和目的地。

  • 客户端方便的Java API。

  • 它提供了跨集群数据复制。

在哪里可以使用HBase?

  • Apache HBase曾经是随机,实时的读/写访问大数据。

  • 它承载在集群普通硬件的顶端是非常大的表。

  • Apache HBase是此前谷歌Bigtable模拟非关系型数据库。 Bigtable对谷歌文件系统操作,同样类似Apache HBase工作在Hadoop HDFS的顶部。

HBase的应用

  • 它是用来当有需要写重的应用程序。

  • HBase使用于当我们需要提供快速随机访问的数据。

  • 很多公司,如Facebook,Twitter,雅虎,和Adobe内部都在使用HBase。

二、HBase架构

在HBase中,表被分割成区域,并由区域服务器提供服务。区域被列族垂直分为“Stores”。Stores被保存在HDFS文件。下面显示的是HBase的结构。

注意: 术语“store”是用于区域来解释存储结构。

HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。

主服务器

主服务器是 -

  • 分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。

  • 处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。

  • 通过判定负载均衡以维护集群的状态。

  • 负责模式变化和其他元数据操作,如创建表和列。

区域

区域只不过是表被拆分,并分布在区域服务器。

区域服务器

区域服务器拥有区域如下 -

  • 与客户端进行通信并处理数据相关的操作。

  • 句柄读写的所有地区的请求。

  • 由以下的区域大小的阈值决定的区域的大小。

需要深入探讨区域服务器:包含区域和存储,如下图所示:

存储包含内存存储和HFiles。memstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。

Zookeeper

  • Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等

  • Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器。

  • 除了可用性,该节点也用于追踪服务器故障或网络分区。

  • 客户端通过与zookeeper区域服务器进行通信。

  • 在模拟和独立模式,HBase由zookeeper来管理。

三、Hbase使用场景

    1、基本概念

      HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。

    2、HBase使用场景和成功案例

  • 互联网搜索问题:爬虫收集网页,存储到BigTable里,MapReduce计算作业扫描全表生成搜索索引,从BigTable中查询搜索结果,展示给用户。

  • 抓取增量数据:例如,抓取监控指标,抓取用户交互数据,遥测技术,定向投放广告等

  • 内容服务

  • 信息交互