HBase技术与应用实践 | HBase在爱奇艺的应用实践

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介:

本次分享来自中国HBase技术社区第七届MeetUp成都站,分享嘉宾郑浩南 爱奇艺 资深研发工程师,专注于大数据领域,负责Hadoop服务的运维研究以及DevOps平台开发。
分享主题:HBase在爱奇艺的应用实践

内容概要:随着大数据存储计算对延时吞吐要求越来越高,需求日益复杂化,HBase在爱奇艺中被广泛应用和实践以应对多样化的业务场景。本次演讲将介绍HBase在爱奇艺的部署模式和使用场景,以及在爱奇艺私有云环境下的运维策略。

下载链接:http://hbase.group/slides/168


1.使用现状

  • 概况

c2366efb4f0db56407f70f4805530eebf93397a7
    • HBase版本

      • 1.2.0-CDH5.14.4-qiyi-1

    • 规模

      • 物理机数量6000+,最大集群1500节点

      • 数据总量约3PB(单备份),大表>100TB

      • 离线QPS 50 Mil+,线上QPS 3 Mil+

    • 服务使用架构

      • 私有云环境

      • 大数据平台化服务

      • 大数据产品栈

  • 数据库@iQIYI 产品定位

b46b26e61f85c966cfe878767037b4053367d6e2
    • 按访问模式:NoSQL -> SQL

      • schema

      • 访问接口

      • ACID

    • 按应用场景:OLTP -> HTAP -> OLAP

      • 目的:交易处理 vs 数据分析

      • 延时:ms vs s/m

    • 按分布式系统特点

      • 可扩展性 CAP

      • QPS量级:10K vs 10M

      • 数据量:GB vs TB/PB

  • HBase@iQIYI 产品定位

4ff0c13b4e11087820f2e9aff7ba6719affefff1
    • 大数据产品应用场景

      • QPS量级 100K以上

      • 数据量级 TB ~PB

      • 需要计算资源,计算本地性

    • 选择HBase的理由

      • 大数据场景下的随机访问

      • 稀疏动态表,支持百万列

      • 适应各计算框架

      • 实时跨集群同步

      • 稳定易扩展,现有集群规模大,能支持更大量级

  • 应用场景

1f045f80d8a1f6c7b67f04413f3b9af801971acf


2.架构实践

  • 架构概览

73c6aa82a5d73c36a2d40821595331398d51fa70

    • 3-4个主力DC

      • 业务分流

      • 运营商

      • HA

    • HBase相关集群分类

      • 公共集群

      • Kylin HBase集群

      • HBase专用集群

      • 业务独立集群

  • 公共集群

00c0f2fdbdcb3d9f2a43ac4e6dde730b6de40976
    • 场景

      • 1000+节点

      • 用于大规模数据计算

      • 亚秒延时、单表10M qps

    • 架构

      • 拆分ZooKeeper 

      • 分离Kylin

      • 异构存储 WAL-on-SSD

      • BucketCache 20G offheap

      • 非实时访问禁用BlockCache

  • HBase专用集群

7300785b6fadddedf40d01d1ed8ee2b4f94543de
    • 场景

      • 100节点

      • 线上实时访问,简单OLAP分析

      • 150ms以下延时,均值50ms

    • 架构

      • SSD

两备份(计算本地性要求低,HA)

BucketCache 50G offheap

控制计算任务执行

分离线上访问-计算分析

Phoenix:SQL、二级索引、Salt

调研中:Solr+JanusGraph  Atalas

业务独立集群

1ada453ecce73af1ad205070c3a0a80c34e4288b
    • 场景

      • 10-50节点

      • 用于业务特定需求

    • 案例-Flink流关联

      • 全量消息,数据量大,需5ms以下延时

      • 写入足够分散,无更新特性

      • 91.52%读最近1小时写入的数据

      • 非重复读,每条数据只会访问一次

    • 优化

      • 7天TTL,2备份,压缩后150TB

      • cache索引,cache_data_on_write 缓存最近数据

      • 读不替换缓存,减少缓存置换开销

      • compactionThreshold + compaction.max.size +BloomFilter

        缩小随机访问范围,减少compaction压力

  • 数据同步

3291eaed34cc57f74f9868b74746135795632928
    • 同步管理

      • 表级别控制

      • 定义同步链路

    • 表同步设置

      • export snapshort 

      • 目标表设置purge.deletes(24h)

      • 设置表同步

      • copyTable补数据

    • 定期一致性检查

      • 基于ReplicationCompare改造

      • 迭代多轮比较,验证最终一致性

  • 监控

7b0b6402fa0ea64874f1e4c185caf37ac60d0869
    • 统计型排查

      • 整合关键指标

      • 集群整体->服务器、表

      • 子维度排序、展开详情

    • 拨测

      • 表分布到每个RS,put/get

      • 表RowCounter检查

    • 指标存储

      • OpenTSDB + InfluxDB

      • 长时间、高基数聚合慢

        转型使用Druid

  • 升级策略

61c8a4df4aebea13d30a7cc3b734f8fce6caba4b
    • 需要持续关注社区release、patch

      • 升级历程:5.2.0→5.11.0→5.14.2→5.14.4

      • 5.11.0 HBase bugs:CDH-55446、HBase-17319、17069…

    • 版本管理

      • CDH Major、Minor、Maintenance 升级

      • QIYI Maintenance :5.14.4-qiyi-1

    • 源码开发、发布、部署

      • Gitlab管理源码,比较各release分支

      • 维护QIYI内部版本,发布到maven

      • 复用CDH rpm包

        ansible maven_artifact模块指定jar包版本


3.服务策略

  • 向业务提供服务的策略

    • HBase单集群多租户

      • 硬件资源利用率高

      • 部署管理方便

      • 隔离性差

    • 策略

      • 定义资源:HBase表

      • 集群容量:空间大小、region总数

      • 提供方式:模板化建表

      • 资源隔离性:尽可能确保各表健康

  • 资源与配额

a8fe038fba90eee3a2324a2a9cf5219b269bc9f1
    • HBase表资源

      • Default namespace

      • 未使用RS group

      • 通过平台工单申请,控制建表

      • 线上统一控制DDL、权限操作

      • 健康检查,确保表均匀无热点

    • 配额定义

      • 集群资源总容量

      • 部门配额

      • 资源分配配额

      • 资源实际使用量

  • 压测与容量

36891ca841e234ed1f3f0ecc2c1a41bbd3197fa2
    • 确定Space容量

      • /hbase目录的总Quota

    • 确定Region容量

      • 根据Memstore估算大概范围

      • 单节点压测,HBase pe,估算最佳region数、最佳并发数、读写峰值

        300个region,64并发数

        随机读 78K,  随机写 231K

        顺序读 133K,顺序写 426K

      • 300/RS,每个region容量:5~20GB

        读qps 0.26K~0.6K, 写qps 0.77K~1.5K

  • 模板化建表

aa3b8bfd4ca968ac7d9022ab55cc36840a8abbbf
  • 确定应用场景

    • 选择集群类型

    • 运行计算任务、实时访问、线上业务…

  • 关键表属性设置

    • 用户确定Version、TTL、同步链路

    • 自动设置BlockCache、MOB、分裂策略、压缩等

  • 确定表预分区方法

    • 16进制字符串、10进制字符串、采样

  • 配额

    • 数据量估算+峰值qps,推算Region数量

    • 用户可以只给出数

定期整理与健康度检查
221feff9001bd8ed47daf96861245cc3ccb688a0
    • 表定期整理

      • major compact

      • 自定义normalize

      • balance

    • 表健康度检查

      • 热点

      • 数据倾斜

      • 分区数不匹配


4.问题瓶颈

  • ZooKeeper重选,RS重连超时

    • 问题:

      • ZooKeeper发生重选时,Session重连,RegionServer发生ZK sessionTimeout宕机

      • ZooKeeper Zxid rollover,定期引发重选

    • 连接数过多,单个ZK-server 5000个连接

      • 限制maxClientCnxns,找出错误使用HBase Conn任务

    • Znode过多,25w个

      • 定期清理Replication残留Znode

    • ZooKeeper关闭连接时的瓶颈

      • ZOOKEEPER-1669,HashSet并发瓶颈

    • ZooKeeper Leader session激活(revalidation)瓶颈

      • ZOOKEEPER-3169,未解决,通过调高max session timeout应对

    • 减少对ZooKeeper依赖

      • 调研:ZK-less,AssignmentMananger v2

  • HBase启动恢复慢

    • 问题:

      • 1500节点,25w region

      • clean-startup 15min;主动关闭集群,经常无法正常进入clean-startup

      • 恢复流程需要1 hour左右

    • 错误判定为恢复流程

      • HBASE-14223,清理残留的Meta WALs

      • HBASE-15251,错误判断为failover

    • SplitWAL ZK阻塞

      • 参考HBASE-19290,调节RS遍历Znode停顿时间

    • SplitWAL并发控制,易引起gc问题

      • master.executor.serverops.threads x bulk.assignment.threadpool.size

    • 启动过程中,部分节点阻塞影响恢复

      • 及时处理启动过程中阻塞节点

      • 启动恢复过程中,停止业务访问(需要一种安全模式)

3a3cbfbcc111a752e1fd9989dfbbbf584be8f5c3
343b5b744a4af0fc75361a9152a4356a2b042f43
560e9c4f8f5bee1051f6ae678dfe7d2db70ac6d3
64be6aab7571397ae1069fbc9a84575dbc3a3743
b01bf8c78a1a84d5c424810e4a987f0589ad7969
d6cc23d4ea609e0cb51bbd9947d793ca6f61bb17
18d09a1ce5430e350ab2171126f06286ed9b1a2d
d520a6db892b790b4a0cc69a9c5dd87af668fb79
48f44a13bcb641f096db83c4cb23dae7b20a7dda
0ebe34f696072c671eaeaaa6ba07230d5098ea96
bb5e6e0a3986fb58a5701301d5390658c64dae2d
e2ab832d703f3b861126b779cb18d541730767cf
e57b103377608f14bb00f4386a85cb37f29281a2
536b761180fab94f184e9c4c6b7fb4b50ea6a9bd
996da3b690638754696fb82f18f3027e74de4b8f
a5d92e35bdaa11ff4f0f92cdf240c5eb0783c6e4
2e643893227c030a018ac60935f210fe679f9ee7
35a90efe472a70416cf22436f69760d86f8f806d
68cf654059f46e051f444fc1a9bcf0297cfe4725
9131aa20f6982ed297d7d2bf8bd3f4e80dedd170
ae59101b19ff1c2b7c7ade15cf94c5096033cb51
fc31b9f04c1a8b1d980bdc64465dc12d55963747
9cca8262e4fa8b541d7ba3b6d81f95d2dd8b1e80
9ca3ad324667628865366e8e002a6270e72b9b66
3dd2936a6985d322d3c9a6b704697bb672633ce4
f3a0cd3e1eb6c7fb37ec1782f94e3ee78e751902
955155c51e2fd4a258ae877f002969de9b640acd

d3f2f0da5b6761a64c7049db7719525a2c492a0c

187afc6e323c50e00bfbdfb52cc3327f4b40ce15
HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入: https://dwz.cn/Fvqv066s

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 分布式计算 NoSQL
|
存储 缓存 分布式计算
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
108 0
Hadoop原理与技术——Hbase实操
|
分布式计算 安全 Hadoop
Hadoop原理与技术——Hbase的基本操作
Hadoop原理与技术——Hbase的基本操作
107 0
Hadoop原理与技术——Hbase的基本操作
|
分布式数据库 Hbase
|
分布式数据库 Hbase
《HBase在大搜车金融业务中的应用实践》电子版地址
HBase在大搜车金融业务中的应用实践
58 0
《HBase在大搜车金融业务中的应用实践》电子版地址
|
SQL 存储 分布式计算
HDFS/HBase技术报告·分布式数据库设计架构的全面解析
HDFS/HBase技术报告·分布式数据库设计架构的全面解析
HDFS/HBase技术报告·分布式数据库设计架构的全面解析
|
SQL 存储 分布式计算
Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(三)
Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(三)
179 0
Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(三)
|
SQL JSON 分布式计算
Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(二)
Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(二)
248 0
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
82 0
|
8月前
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
141 0