网易视频云技术分享HBase优化实战


名称
数量Βιβλιοθήκη 备注服务器数量17
配置不同,HBase、HDFS 都部署在这些机器上
表数量
30+
只有部分表的数据量比较大,其他基本没多少数据
Region 数量
600+
基本上都是数据量较大的表划分的 region 较多
请求量
50000+
服务器请求分布极其不均匀
应用反应经常会过段时间出现数据写入缓慢,导致应用端数据堆积现象,是否可以通过增加机器数 量来解决?
其实,那个时候,我们本身对 HBase 也不是很熟悉,对 HBase 的了解,也仅仅在做过一些测试, 了解一些性能,对内部结构,实现原理之类的基本上都不怎么清楚。于是刚开始几天,各种问题,每天 晚上拉着一男一起摸索,顺利的时候,晚上 8,9 点就可以暂时搞定线上问题,更多的时候基本要到 22 点甚至更晚(可能那个时候流量也下去了),通过不断的摸索,慢慢了解 HBase 在使用上的一些限制,也 就能逐渐解决这一系列过程中发现的问题。后面挑几个相对比较重要,效果较为明显的改进点,做下简 单介绍。
调优 首先根据目前 17 台机器,50000+的 QPS,并且观察磁盘的 I/O 利用率和 CPU 利用率都相当低来 判断:当前的请求数量根本没有达到系统的性能瓶颈,不需要新增机器来提高性能。如果不是硬件资源 问题,那么性能的瓶颈究竟是什么? Rowkey 设计问题 现象 打开 HBase 的 Web 端,发现 HBase 下面各个 RegionServer 的请求数量非常不均匀,第一个想到 的就是 HBase 的热点问题,具体到某个具体表上的请求分布如下: HBase 表请求分布
背景 Datastream 一直以来在使用 HBase 分流日志,每天的数据量很大,日均大概在 80 亿条,10TB 的数据。对于像 Datastream 这种数据量巨大、对写入要求非常高,并且没有复杂查询需求的日志系统 来说,选用 HBase 作为其数据存储平台,无疑是一个非常不错的选择。 HBase 是一个相对较复杂的分布式系统,并发写入的性能非常高。然而,分布式系统从结构上来讲, 也相对较复杂,模块繁多,各个模块之间也很容易出现一些问题,所以对像 HBase 这样的大型分布式系 统来说,优化系统运行,及时解决系统运行过程中出现的问题也变得至关重要。正所谓:“你”若安好, 便是晴天;“你”若有恙,我便没有星期天。 历史现状 HBase 交接到我们团队手上时,已经在线上运行有一大段时间了,期间也偶尔听到过系统不稳定的、 时常会出现一些问题的言论,但我们认为:一个能被大型互联网公司广泛采用的系统(包括 Facebook, twitter,淘宝,小米等),其在性能和可用性上是毋庸置疑的,何况像 Facebook 这种公司,是在经过严 格选型后,放弃了自己开发的 Cassandra 系统,用 HBase 取而代之。既然这样,那么,HBase 的不稳 定、经常出问题一定有些其他的原因,我们所要做的,就是找出这些 HBase 的不稳定因素,还 HBase 一个“清白”。“查案”之前,先来简单回顾一下我们接手 HBase 时的现状(我们运维着好几个 HBase 集群,这里主要介绍问题最多那个集群的调优):
解决的方法可以让 SA 释放些空间出来便于数据写入。当然,最直接有效的就是把 HDFS 的预留空 间调整至 100G 以上,我们也正是这样做的,通过调整后,异常不再出现,HBase 层面的 slow log 也 没有再出现。同时我们也开启了 HDFS 层面的 balance,使数据自动在各个服务器之间保持平衡。
网易视频云技术分享:HBase 优化实战
网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流 畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的 PAAS 服务,在线教育、远程医 疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网 易视频云的技术专家给大家分享一则技术文:HBase 优化实战。
WARN - (responseTooSlow): {“processingtimemsrpc version=1, client version=29, methodsFingerPrintstarttimems”:1440239670790, “queuetimems”:42081, “class”:” HRegionServer”, “responsesize”:0, “method”:”multi”}
资源分配不均匀,造成部分机器压力较大,部分机器负载较低,并且部分 Region 过大过热,导致 请求相对较集中。
解决 迁移部分老的 RegionServer 上的 region 到新加入的机器上,使每个 RegionServer 的负载均匀。 通过 split 切分部分较大 region,均匀分布热点 region 到各个 RegionServer 上。 HBase region 请求分布 对比前后两张截图我们可以看到,Region 总数量从 1336 增加到了 1426,而增加的这 90 个 region 就是通过 split 切分大的 region 得到的。而对 region 重新分布后,整个 HBase 的性能有了大幅度提高。 建议 Region 迁移的时候不能简单开启自动 balance,因为 balance 主要的问题是不会根据表来进行 balance,HBase 的自动 balance 只会根据每个 RegionServer 上的 Region 数量来进行 balance,所 以自动 balance 可能会造成同张表的 region 会被集中迁移到同一个台 RegionServer 上,这样就达不 到分布式的效果。 基本上,新增 RegionServer 后的 region 调整,可以手工进行,尽量使表的 Region 都平均分配到 各个 RegionServer 上,另外一点,新增的 RegionServer 机器,配置最好与前面的一致,否则资源无 法更好利用。 对于过大,过热的 region,可以通过切分的方法生成多个小 region 后均匀分布(注意:region 切 分会触发 major compact 操作,会带来较大的 I/O 请求,请务必在业务低峰期进行) HDFS 写入超时 现象 HBase 写入缓慢,查看 HBase 日志,经常有慢日志如下:
并且伴有 HDFS 创建 block 异常如下: INFO – Exception in createBlockOutputStream (HdfsProtoUtil.java:171) $DataStreamer.createBlockOutputStream(DFSOutputStream.java:1105) $DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1039) $DataStreamer.run(DFSOutputStream.java:487) 一般地,HBase 客户端的写入到 RegionServer 下某个 region 的 memstore 后就返回,除了网络 外,其他都是内存操作,应该不会有长达 30 多秒的延迟,外加 HDFS 层抛出的异常,我们怀疑很可能 跟底层数据存储有关。 原因 定位到可能是 HDFS 层出现了问题,那就先从底层开始排查,发现该台机器上 10 块盘的空间利用 率都已经达到 100%。按理说,作为一个成熟的分布式文件系统,对于部分数据盘满的情况,应该有其 应对措施。的确,HDFS 本身可以设置数据盘预留空间,如果部分数据盘的预留空间小于该值时,HDFS 会自动把数据写入到另外的空盘上面,那么我们这个又是什么情况? 最终通过多方面的沟通确认,发现了主要原因:我们这批机器,在上线前 SA 已经经过处理,每块 盘默认预留 100G 空间,所以当通过 df 命令查看盘使用率为 100%时,其实盘还有 100G 的预留空间, 而 HDFS 层面我们配置的预留空间是 50G,那么问题就来了:HDFS 认为盘还有 100G 空间,并且多于 50G 的预留,所以数据可以写入本地盘,但是系统层面却禁止了该写入操作,从而导致数据写入异常。 解决
网络问题,联系机房解决,机房的反馈也验证了我们的想法:由于 HBase 的机器后面进行了扩展, 后面加入的机器有一台跟其他机器不在同一个交换机下,而这台机器正是我们找出的有较大 ping 延时 这台,整个 HBase 物理结构如下:
HBase 物理拓扑结构 跟机房协调,调整机器位置,使所有的 HBase 机器都位于同一个交换机下,问题迎刃而解。 建议 对于分布式大流量的系统,除了系统本身,物理机的部署和流量规划也相当重要,尽量使集群中所 有的机器位于相同的交换机下(有容灾需求的应用除外),集群较大,需要跨交换机部署时,也要充分考 虑交换机的出口流量是否够用,网络硬件上的瓶颈诊断起来相对更为困难。 JVM 参数调整 解决了网络上面的不稳定因素,HBase 的性能又得到进一步的提高,随之也带来了另外的问题。 现象 根据应用反应,HBase 会阶段性出现性能下降,导致应用数据写入缓慢,造成应用端的数据堆积, 这又是怎么回事?经过一系列改善后 HBase 的系统较之以前有了大幅度增长,怎么还会出现数据堆积的 问题?为什么会阶段性出现? HBase 流量统计 从上图看,HBase 平均流量 QPS 基本能达到 12w,但是每过一段时间,流量就会下降到接近零点, 同时这段时间,应用会反应数据堆积。 原因 这个问题定位相对还是比较简单,结合 HBase 的日志,很容易找到问题所在: – We slept 41662ms instead of 3000ms, this is likely due to a long garbage collecting pause and it’s usually bad
建议 磁盘满了导致的问题很难预料,HDFS 可能会导致部分数据写入异常,MySQL 可能会出现直接宕机 等等,所以最好的办法就是:不要使盘的利用率达到 100%。 网络拓扑 现象 通过 rowkey 调整,HDFS 数据 balance 等操作后,HBase 的确稳定了许多,在很长一段时间都没 有出现写入缓慢问题,整体的性能也上涨了很多。但时常会隔一段时间出现些 slow log,虽然对整体的 性能影响不大,但性能上的抖动还是很明显。 原因 由于该问题不经常出现,对系统的诊断带来不小的麻烦,排查了 HBase 层和 HDFS 层,几乎一无 所获,因为在大多数情况下,系统的吞吐量都是正常的。通过脚本收集 RegionServer 所在服务器的系 统资源信息,也看不出问题所在,最后怀疑到系统的物理拓扑上,HBase 集群的最大特点是数据量巨大, 在做一些操作时,很容易把物理机的千兆网卡都吃满,这样如果网络拓扑结构存在问题,HBase 的所有 机器没有部署在同一个交换机上,上层交换机的进出口流量也有可能存在瓶颈。网络测试还是挺简单的, 直接 ping 就可以,我们得到以下结果:共 17 台机器,只有其中一台的延迟存在问题,如下: 网络延迟测试:Ping 结果 同一个局域网内的机器,延迟达到了毫秒级别,这个延迟是比较致命的,因为分布式存储系统 HDFS 本身对网络有要求,HDFS 默认 3 副本存在不同的机器上,如果其中某台机器的网络存在问题,这样就 会影响到该机器上保存副本的写入,拖慢整个 HDFS 的写入速度。 解决
合集下载

网易视频云:网易HBase基准性能测试之准备篇

网易视频云:网易HBase基准性能测试之准备篇

网易视频云:网易HBase基准性能测试之准备篇网易视频云是网易推出是PAAS级视频云服务,致力于为客户提供真正易用的视频云服务,目前已经广泛应用于在线教育、秀场直播、游戏直播、远程医疗等领域,在网易内部,也有广泛运用视频云的产品,比如网易新闻直播、网易BOBO、网易青果等。

而网易视频云的技术团队全部来自网易杭州研究院十多年的技术骨干,现在,由网易视频云的技术专家给大家分享一则技术文:网易HBase基准性能测试之准备篇。

本次测试主要评估线上HBase的整体性能,量化当前HBase的性能指标,对各种场景下HBase性能表现进行评估,为业务应用提供参考。

本篇文章主要介绍此次测试的基本条件,测试结果和分析可以阅读文章《网易HBase基准性能测试之结果篇》测试环境测试环境包括测试过程中HBase集群的拓扑结构、以及需要用到的硬件和软件资源,硬件资源包括:测试机器配置、网络状态等等,软件资源包括操作系统、HBase相关软件以及测试工具等。

集群拓扑结构本次测试中,测试环境总共包含4台SA5212H2物理机作为数据存储。

生成数据的YCSB 程序与数据库并不运行在相同的物理集群。

单台机器主机硬件配置软件版本信息测试工具YCSB全称Yahoo! Cloud Serving Benchmark,是Yahoo公司开发的专门用于NoSQL测试的基准测试工具。

github地址:https:///brianfrankcooper/YCSB YCSB支持各种不同的数据分布方式1. Uniform:等概论随机选择记录2. Zipfian:随机选择记录,存在热记录3. Latest:近期写入的记录为热记录测试场景YCSB为HBase提供了多种场景下的测试,本次测试中,我们导入10亿条数据,并对如下场景进行测试:YCSB并没有提供Increment相关的测试功能,但是部分业务有这方面的需求,因此对YCBS进行了改造,加入了Increment模块。

网易视频云技术分享:HBase BlockCache系列 - 探求BlockCache实现机制

网易视频云技术分享:HBase BlockCache系列 - 探求BlockCache实现机制

网易视频云技术分享:HBaseBlockCache系列-探求BlockCache实现机制网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。

现在,网易视频云的技术专家给大家分享一篇技术性文章,本文在上文的基础上深入BlockCache内部,对各种BlockCache方案具体工作原理进行详细分析。

Note:因为SlabCache方案在0.98版本已经不被建议使用,因此本文不针对该方案进行讲解;至于LRU方案和Bucket方案,因为后者更加复杂,本文也会花更多篇幅详细介绍该方案的实现细节。

LRUBlockCacheLRUBlockCache是HBase目前默认的BlockCache机制,实现机制比较简单。

它使用一个ConcurrentHashMap管理BlockKey到Block的映射关系,缓存Block只需要将BlockKey和对应的Block放入该HashMap中,查询缓存就根据BlockKey从HashMap 中获取即可。

同时该方案采用严格的LRU淘汰算法,当Block Cache总量达到一定阈值之后就会启动淘汰机制,最近最少使用的Block会被置换出来。

在具体的实现细节方面,需要关注三点:1. 缓存分层策略HBase在LRU缓存基础上,采用了缓存分层设计,将整个BlockCache分为三个部分:single-access、mutil-access和inMemory。

需要特别注意的是,HBase系统元数据存放在InMemory区,因此设置数据属性InMemory = true需要非常谨慎,确保此列族数据量很小且访问频繁,否则有可能会将hbase.meta元数据挤出内存,严重影响所有业务性能。

2. LRU淘汰算法实现系统在每次cache block时将BlockKey和Block放入HashMap后都会检查BlockCache总量是否达到阈值,如果达到阈值,就会唤醒淘汰线程对Map中的Block进行淘汰。

hbase案例

hbase案例

hbase案例HBase案例。

HBase是一个开源的分布式非关系型数据库,它建立在Hadoop文件系统之上,提供了对大型数据集的随机、实时的读/写访问。

在实际的应用场景中,HBase有着广泛的应用,下面我们将介绍几个HBase的案例,以便更好地理解其在实际中的应用。

1. 电商行业。

在电商行业中,HBase被广泛应用于用户行为分析、推荐系统和实时数据分析等领域。

通过HBase存储用户的点击、购买、浏览等行为数据,可以实时分析用户的偏好,为用户推荐个性化的商品。

同时,HBase还可以支持实时的交易数据处理,保证交易数据的一致性和可靠性。

2. 在线广告系统。

在在线广告系统中,HBase可以用于存储海量的广告点击数据、用户画像数据等。

通过HBase的快速读写能力,广告系统可以实时地根据用户的兴趣和行为进行广告投放,提高广告的转化率和用户体验。

3. 物联网领域。

在物联网领域,HBase可以用于存储传感器数据、设备状态数据等。

通过HBase的高可靠性和实时性,可以支持对物联网设备的监控和实时数据分析,为智能城市、智能家居等场景提供数据支持。

4. 游戏行业。

在游戏行业中,HBase可以用于存储玩家的游戏数据、排行榜数据等。

通过HBase的高性能和可扩展性,游戏系统可以实时地处理玩家的游戏行为数据,并支持实时的排行榜计算和展示。

5. 金融行业。

在金融行业中,HBase可以用于存储交易数据、风险控制数据等。

通过HBase 的高可靠性和实时性,金融系统可以实时地监控交易数据,进行风险控制和实时报警。

总结。

通过以上案例的介绍,我们可以看到HBase在各个行业都有着广泛的应用。

它的高性能、高可靠性和实时性能够满足不同行业的数据存储和实时分析需求,为企业提供了强大的数据支持。

随着大数据和实时分析的需求不断增长,HBase作为一款优秀的分布式数据库,将在未来得到更广泛的应用和发展。

hbase的刷写策略

hbase的刷写策略

hbase的刷写策略HBase的刷写策略1. 介绍在HBase中,刷写策略决定了数据何时被写入到磁盘中。

HBase 是一个分布式的NoSQL数据库,其基于Hadoop架构,并采用了数据刷写的方法,以实现高可靠性和高性能。

本文将介绍HBase中常见的刷写策略类型,以及它们的优缺点。

2. 刷写策略类型写前日志(Write-Ahead Log, WAL)WAL是HBase中的一种刷写策略,它在数据写入之前,首先将数据写入到日志文件中。

在写入数据到磁盘之前,HBase会将数据在内存中的修改应用到磁盘上的日志文件中。

这样可以确保数据的安全性,因为即使在写入磁盘过程中发生故障,数据仍然可以从日志文件中恢复。

优点: - 数据可靠性高,即使发生故障也可以恢复数据。

- 写入性能较好,因为数据首先写入到内存中的日志文件。

缺点: - 写入操作需要额外的磁盘空间和I/O开销,会对写入性能产生一定的影响。

异步刷写(Asynchronous Flush)异步刷写是另一种常见的刷写策略,它采用了异步写入的方式。

在写入数据时,HBase会将数据直接写入到磁盘,而不需要使用WAL机制。

然后,HBase会自动将数据异步刷新到内存和其他数据节点上。

优点: - 写入性能高,因为不需要写入到日志文件。

- 对于某些应用场景,可以获得较好的写入性能提升。

缺点: - 数据可靠性较低,如果在写入过程中发生故障,数据有可能丢失。

同步刷写(Synchronous Flush)同步刷写是一种保守的刷写策略,在写入数据时,会等待数据刷新到磁盘后再返回操作结果。

与异步刷写相比,同步刷写可以提供更高的数据可靠性,但也会对写入性能产生一定的影响。

优点: - 数据可靠性高,确保数据已经写入磁盘再返回操作结果。

- 适用于对数据可靠性要求较高的场景。

缺点: - 写入性能较低,因为需要等待数据刷新到磁盘。

3. 如何选择刷写策略选择合适的刷写策略要根据具体的应用场景和需求来决定。

hbase 案例

hbase 案例

hbase 案例HBase案例:实时日志分析系统1. 简介HBase是一个分布式、可伸缩、面向列的NoSQL数据库,适用于海量数据的存储和实时读写。

下面将介绍一个基于HBase的实时日志分析系统的案例。

2. 案例背景假设我们有一个大型网站,每天产生海量的日志数据,我们需要对这些日志进行实时的分析和查询,以了解用户行为、优化网站性能等。

3. 架构设计该系统的架构如下:- 数据采集:使用Flume等工具将日志数据实时采集到HBase集群中。

- 数据存储:HBase作为底层存储,支持高并发、高吞吐的实时写入和读取。

- 数据处理:使用Hadoop生态系统中的工具,如MapReduce、Spark等,对HBase中的数据进行批处理和实时处理。

- 数据查询:通过HBase提供的API或使用Phoenix等工具进行数据查询和分析。

4. 数据模型设计在HBase中,我们可以将每条日志数据存储为一个行记录,其中每个字段作为列族(列族可以理解为一组相关的列)中的列。

5. 数据采集使用Flume等工具,配置数据源为日志文件,将日志数据实时采集到HBase集群中。

可以根据需要的粒度和格式对数据进行预处理,如提取关键字段、过滤无效数据等。

6. 数据存储在HBase中,我们可以根据数据特点和查询需求进行表设计。

将不同类型的日志数据存储在不同的表中,并根据字段的重要性和查询频率进行列族设计和列修饰符设计,以提高查询性能。

7. 数据处理使用Hadoop生态系统中的工具,如MapReduce、Spark等,对HBase中的数据进行批处理和实时处理。

可以利用MapReduce进行大规模数据的离线分析,通过Spark Streaming等工具进行实时数据处理和计算。

8. 数据查询通过HBase提供的API或使用Phoenix等工具进行数据查询和分析。

根据查询需求,可以使用HBase的过滤器来提高查询性能,如前缀过滤器、范围过滤器等。

网易视频云技术分享:HBase BlockCache系列-性能对比测试报告

网易视频云技术分享:HBase BlockCache系列-性能对比测试报告

网易视频云技术分享:HBaseBlockCache系列-性能对比测试报告网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PAAS 服务,在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。

HBaseBlockCache系列文章到了终结篇,几个主角的是是非非也该有个了断了,在SlabCache被早早地淘汰之后,站在华山之巅的也就仅剩LRU君(LRUBlockCache)和CBC君(binedBlockCache)。

谁赢谁输,我说了不算,你说了也不算,那就来让数据说话。

这篇文章主要对比LRU君和CBC君(offheap模式)分别在四种场景下几种指标(GC、Throughput、Latency、CPU、IO等)的表现情况。

四种场景分别是缓存全部命中、少大部分缓存命中、少量缓存命中、缓存基本未命中。

需要注意的是,本文的所有数据都来自社区文档,在这里分享也只是给大家一个参考,更加详细的测试数据可以阅读文章《paring BlockCache Deploys》和HBASE-11323附件报告。

说明:本文所有图都以时间为横坐标,纵坐标为对应指标。

每X图都会分别显示LRU 君和CBC君的四种场景数据,总计八种场景,下面数据表示LRU君的四种场景分布在时间段21:36:39~22:36:40,CBC君的四种场景分布在时间段23:02:16~00:02:17,看图的时候需要特别注意。

LRU君:Tue Jul 22 21:36:39 PDT 2014 run size=32, clients=25 ; lrubc time=1200 缓存全部命中Tue Jul 22 21:56:39 PDT 2014 run size=72, clients=25 ; lrubctime=1200 大量缓存命中Tue Jul 22 22:16:40 PDT 2014 run size=144, clients=25 ;lrubc time=1200 少量缓存命中Tue Jul 22 22:36:40 PDT 2014 run size=1000, clients=25 ; lrubc time=1200 缓存基本未命中CBC君:Tue Jul 22 23:02:16 PDT 2014 run size=32, clients=25 ; buckettime=1200 缓存全部命中Tue Jul 22 23:22:16 PDT 2014 run size=72, clients=25 ; bucket time=1200 大量缓存命中Tue Jul 22 23:42:17 PDT 2014 run size=144, clients=25 ; bucket time=1200 少量缓存命中Wed Jul 23 00:02:17 PDT 2014 run size=1000, clients=25 ; bucket time=1200 缓存基本未命中GCGC指标是HBase运维最关心的指标,出现一次长时间的GC就会导致这段时间内业务方的所有读写请求失败,如果业务方没有很好的容错,就会出现丢数据的情况出现。

网易视频云技术分享:HBase - 建表语句解析

网易视频云技术分享:HBase -建表语句解析网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。

现在,网易视频云的技术专家给大家分享一篇技术性文章:HBase -建表语句解析。

像所有其他数据库一样,HBase也有表的概念,有表的地方就有建表语句,而且建表语句还很大程度上决定了这张表的存储形式、读写性能。

比如我们熟悉的MySQL,建表语句中数据类型决定了数据的存储形式,主键、索引则很大程度上影响着数据的读写性能。

虽然HBase没有主键、索引这些概念,但在HBase的世界里,有些东西和它们一样重要!废话不说,直接奉上一条HBase建表语句,来为各位看官分解剖析:create'NewsClickFeedback',{NAME=>'Toutiao',VERSIONS=>1,BLOCKCACHE=>true,BLOOMFILTER=> 'ROW',COMPRESSION=>'SNAPPY',TTL => ' 259200 '},{SPLITS =>['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']}上述建表语句表示创建一个表名为“NewsClickFeedback”的表,该表只包含一个列簇“Toutiao”。

接下来重点讲解其他字段的含义以及如何正确设置。

Note:因为篇幅有限本文并不讲解具体的工作原理,后续会有相关专题对其进行分析。

hbase数据库特点及应用场景

hbase数据库特点及应用场景HBase是一个基于Hadoop的分布式、面向列的NoSQL数据库,被设计用来存储大规模的结构化和半结构化数据。

以下是HBase数据库的特点及其应用场景的相关参考内容。

特点:1. 高可靠性:HBase使用了Hadoop的HDFS作为底层文件系统,数据会被自动复制到集群中其他节点上,可以保证数据的可靠性和容错性。

2. 高扩展性:HBase具有横向扩展的特性,可以通过增加节点来实现更高的吞吐量和存储容量。

3. 高性能:HBase使用了内存和硬盘结合的方式进行数据存储,同时支持数据的并发读写操作,可以满足实时性要求较高的应用场景。

4. 面向列的存储:HBase将数据按列族进行存储,可以灵活地增加、删除和修改列,提供了更好的灵活性和可扩展性。

5. 灵活的数据模型:HBase的数据模型类似于一个稀疏的多维表格,可以方便地存储和查询具有不同列的数据。

6. 复杂查询:HBase提供了强大的查询功能,支持复杂的过滤器和多维范围查找,可以进行高效的数据分析和计算。

应用场景:1. 日志处理:由于HBase具有高可靠性和高扩展性的特点,适合用于大规模日志的存储和分析。

可以存储各种类型的日志数据,并通过HBase提供的查询功能进行实时分析和统计。

2. 个性化推荐系统:个性化推荐系统通常需要存储大量的用户行为数据和物品数据,HBase的高性能和高扩展性使其成为一个理想的选择。

可以将用户的行为日志和个人信息存储在HBase中,并通过数据分析算法进行实时的推荐计算。

3. 时序数据存储:HBase对于时序数据的存储和查询有着很好的支持,适用于物联网、电力、金融等领域的实时监控和分析。

可以将具有时间属性的数据存储在HBase中,通过按时间范围进行查询和聚合分析。

4. 在线教育平台:在线教育平台通常需要存储大量的学生课程数据和学习行为数据,HBase的高性能和灵活的数据模型适合存储和查询这些数据。

可以将学生的课程信息和学习记录存储在HBase中,并通过数据分析提供个性化的学习推荐和统计报表。

网易视频云技术分享:HBase优化实战

网易视频云技术分享:HBase优化实战网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PAAS 服务,在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。

现在,网易视频云的技术专家给大家分享一则技术文:HBase 优化实战。

背景Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据。

对于像Datastream这种数据量巨大、对写入要求非常高,并且没有复杂查询需求的日志系统来说,选用HBase作为其数据存储平台,无疑是一个非常不错的选择。

HBase是一个相对较复杂的分布式系统,并发写入的性能非常高。

然而,分布式系统从结构上来讲,也相对较复杂,模块繁多,各个模块之间也很容易出现一些问题,所以对像HBase这样的大型分布式系统来说,优化系统运行,及时解决系统运行过程中出现的问题也变得至关重要。

正所谓:“你”若安好,便是晴天;“你”若有恙,我便没有星期天。

历史现状HBase交接到我们团队手上时,已经在线上运行有一大段时间了,期间也偶尔听到过系统不稳定的、时常会出现一些问题的言论,但我们认为:一个能被大型互联网公司广泛采用的系统(包括Facebook,twitter,淘宝,小米等),其在性能和可用性上是毋庸置疑的,何况像Facebook这种公司,是在经过严格选型后,放弃了自己开发的Cassandra系统,用HBase取而代之。

既然这样,那么,HBase的不稳定、经常出问题一定有些其他的原因,应用反应经常会过段时间出现数据写入缓慢,导致应用端数据堆积现象,是否可以通过增加机器数量来解决?其实,那个时候,我们本身对HBase也不是很熟悉,对HBase的了解,也仅仅在做过一些测试,了解一些性能,对内部结构,实现原理之类的基本上都不怎么清楚。

HBase性能优化方法总结

HBase性能优化方法总结本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。

1. 表的设计1.1 Pre-Creating Regions默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。

一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。

有关预分区,详情参见:Table Creation: Pre-Creating Regions,下面是一个例子:[html]view plain copy1.public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits)2.throws IOException {3. try {4. admin.createTable(table, splits);5. return true;6. } catch (TableExistsException e) {7. ("table " + table.getNameAsString() + " already exists");8. // the table already exists...9. return false;10. }11.}12.13.public static byte[][] getHexSplits(String startKey, String endKey, int numRegions) {14. byte[][] splits = new byte[numRegions-1][];15. BigInteger lowestKey = new BigInteger(startKey, 16);16. BigInteger highestKey = new BigInteger(endKey, 16);17. BigInteger range = highestKey.subtract(lowestKey);18. BigInteger regionIncrement = range.divide(BigInteger.valueOf(numRegions));19.lowestKey = lowestKey.add(regionIncrement);20. for(int i=0; i <numRegions-1;i++) {21. BigInteger key = lowestKey.add(regionIncrement.multiply(BigInteger.valueOf(i)));22. byte[] b = String.format("%016x", key).getBytes();23. splits[i] = b;24. }25. return splits;26.}1.2 Row KeyHBase中row key用来检索表中的记录,支持以下三种方式:•通过单个row key访问:即按照某个row key键值进行get操作;•通过row key的range进行scan:即通过设置startRowKey和endRowKey,在这个范围内进行扫描;•全表扫描:即直接扫描整张表中所有行记录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档