专栏首页暴走大数据战斗民族开源 | ClickHouse万亿数据双中心的设计与实践

战斗民族开源 | ClickHouse万亿数据双中心的设计与实践

By 大数据技术与架构

场景描述:Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统。

传统数据库在数据大小比较小,索引大小适合内存,数据缓存命中率足够高的情形下能正常提供服务。但残酷的是,这种理想情形最终会随着业务的增长走到尽头,查询会变得越来越慢。你可能通过增加更多的内存,订购更快的磁盘等等来解决问题(纵向扩展),但这只是拖延解决本质问题。如果你的需求是解决怎样快速查询出结果,那么ClickHouse也许可以解决你的问题。

关键词:Clickhouse OLAP

大数据技术与架构之前分享过《OLAP》的文章,里面提到一个俄罗斯Yandex公司开源的轻量级数据库Clickhouse。这篇文章是来自百分点的赵群分享的关于基于clickhouse构建数据中心的经验。

场景与挑战

数据存储:

数据量:2000亿+/日

高峰:500WRow/s

延时:<30秒 熔断/限流

2地双中心 查询/分析透明访问

查询:

1TB常规查询<10s

1TB聚合查询(排序/分组)<5m

综上所述,业务场景:

  • OLAP引擎评估
  • 超大规模的单表查询/分析
  • 有一定的并发要求
  • 实时性要求

期望OLAP引擎:

  • PB级的数据存储
  • 高性能的查询/分析能力
  • 低延时写入及吞吐能力
  • 数据压缩
  • 跨中心能力

Clickhouse的2地双中心设计

  • ClickHouse跨中心透明访问。性能影响:1/4 ~1/3
  • 禁止分布式写。
  • 经过设计Replication是有稳定保障的
  • Nginx负载均衡,路由分发,安全加固
  • 日志采集、展现、分析

Clickhouse磁盘的Raid选择:

  • Raid5增加磁盘数据可靠性和读取能力
  • 热备盘减少运维压力
  • 控制写入,保障查询性能

相关测试分析表明:

  • 横向扩展对查询性能几乎无影响
  • 可以基于单节点/分区评估查询性能
  • 数据预热对查询有数量级提升
  • 针对缓存更换条件同样生效

Clickhouse的写入稳定性设计

  • 平衡好合并速度和Part数量的关系,一定是需要相对均衡的
  • Part数量,实际代表着提交频率,一定是稳定,且经过估算的
  • ClickHouse的查询和写入共同受限于Query数限制,需要分配好配额
  • 禁止直接写入分布式表
  • 时间窗口保障持续稳定提交频率。(保障对ClickHouse写入的稳定)
  • SparkStreaming 微批处理(控制处理上限),利用反压机制,实现处理能力动态平衡
  • Spark on Yarn 资源可控。
  • 以写入ClickHouse为例,目前一个Executor处理在30000/s 左右。
  • 假设我们需要一个满足300W/s的处理能力。在源读取没有瓶颈的情况下,可以 Executor数 : 300 /3 = 100(个)

Clickhouse的查询优化

  • 限制单条查询内存使用量和单节点查询内存使用量,预防节点Down机。
  • Query数量限制异常:控制好配额/连接池。
  • 集群的Query日志,找出慢查询。我们直接通过Nginx收集了原始日志。
  • 针对热数据进行查询预热。

其他参数优化:

本文分享自微信公众号 - 暴走大数据(zhouqiantanxi),作者:赵群

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你需要的不是实时数仓 | 你需要的是一款强大的OLAP数据库(下)

    场景描述:今年有个现象,实时数仓的建设突然就被大家所关注。我个人在公众号也写过和转载过几篇关于实时数据仓库建设的文章和方案。

    暴走大数据
  • 揭秘大数据时代秒级查询响应引擎的架构设计

    近年来,大数据技术发展迅速,从过去的 Hive、Spark,到现在的 Flink、ClickHouse、Iceberg 等,各种大数据技术推陈出新,不断演进大数...

    暴走大数据
  • 如何做好 Elasticsearch 性能指标监控

    场景描述:本文是较早的一篇关于Elasticsearch性能指标监控的博文,内容总结全面,作者 Emily Chang,原文地址:https://www.dat...

    暴走大数据
  • 战斗民族开源 | ClickHouse万亿数据双中心的设计与实践

    场景描述:Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统。

    王知无
  • 教程 | 如何用PyTorch实现递归神经网络?

    选自Nvidia.devblogs 作者:James Bradbury 参与:Jane W、吴攀 从 Siri 到谷歌翻译,深度神经网络已经在机器理解自然语言方...

    机器之心
  • 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)

    目前,我有一套正常运行的Oracle 11.2.0.4 RAC实验环境。这是一套VirtualBox的虚拟化环境,整套环境均放在我的台式机服务器的D盘(SSD固...

    Alfred Zhao
  • Python笔记(七):字典、类、属性、对象实例、继承

    (一)  简单说明    字典是Python的内置数据结构,将数据与键关联(例如:姓名:张三,姓名是键,张三就是数据)。例如:下面这个就是一个字典 {'姓名':...

    free赖权华
  • 认识UML类关系——依赖、关联、聚合、组合、泛化

    在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合度依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,...

    Dabelv
  • 整合activiti工作流引擎的图形化流程设计器

    所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。工...

    moer12
  • 线程源码分析之信号量(基于linuxthreads2.0.1)

    theanarkh

扫码关注云+社区

领取腾讯云代金券