数仓选型必列入考虑的OLAP列式数据库ClickHouse(中)

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

实战

案例使用

背景

ELK作为老一代日志分析技术栈非常成熟,可以说是最为流行的大数据日志和搜索解决方案;主要设计组件及架构如下:

image-20220521230300714

而新一代日志监控选型如ClickHouse、StarRocks特别是近年来对ELK地位发起较大的挑战,不乏有许多的大公司如携程,快手已开始把自己的日志解决方案从 ES 迁移到了 Clickhouse,将日志从ES迁移到ClickHouse可以节省更多的服务器资源,总体运维成本更低,优化日志查询性能提升了查询速度,特别是当用户在紧急排障的时候,这种查询速度的成倍提升,对用户的使用体验有明显的改善,让ClickHouse在日志分析领域为用户提供更大的价值。Clickhouse在大部分的查询的性能上都明显要优于Elastic ,在聚合场景下,Clickhouse表现异常优秀,充分发挥了列存引擎的优势;但是个人认为ClickHouse毕竟不是ES,在某些业务场景中ES仍然不可替代,ES全文检索的倒排索引是建立在内存全文检索查询较快但也比较耗内存;同样对于ClickHouse来说也不仅处理日志,ClickHouse还有更多的使用场景,这个在上一篇文章已经详细介绍过了。本篇我们先从一个简单日志采集的场景拉开ClickHouse在日志分析场景下的使用,以便于后续更深入学习ClickHouse的其他使用场景和技术。前面文章我们也清楚知道ClickHouse基于分片和副本实现了水平扩展和高可用。

  • ES集群架构自己实现

image-20220521230414909

  • ClickHouse集群架构依赖Zookeeper实现

image-20220521230653392

  • Elasticsearch VS Clickhouse
    • Clickhouse 在大部分的查询的性能上都明显要优于 Elastic。
    • 在正则查询(Regex query)和单词查询(Term query)等搜索常见的场景下,也并不逊色。
    • 在聚合场景下,Clickhouse 表现异常优秀,充分发挥了列式引擎的优势。且在Clickhouse在没有任何优化和没有打开布隆过滤器。可见 Clickhouse 确实是一款非常优秀的数据库,可以用于某些搜索的场景。
    • Clickhouse 在基本场景表现非常优秀,性能优于 ES。
    • Elasticsearch仅支持Json格式的数据,Elasticsearch有独自生态和语言,学习成本相对较高。
    • Elasticsearch最擅长的主要是完全搜索场景(where过滤后的记录数较少),在内存充足运行环境下可以展现出非常出色的并发查询能力。但是在大规模数据的分析场景下(where过滤后的记录数较多),ClickHouse凭借极致的列存和向量化计算会有更加出色的并发表现,并且查询支持完备度也更好。ClickHouse的并发处理能力立足于磁盘吞吐,而Elasticsearch的并发处理能力立足于内存Cache,这使得两者的成本区间有很大差异,ClickHouse更加适合低成本、大数据量的分析场景,它能够充分利用磁盘的带宽能力。数据导入和存储成本上,ClickHouse更加具有绝对的优势。

需求简述

满足业务系统的业务监控需求,达到业务实时监控、实施告警、监控可视化、高效运维的目的,涵盖对外部系统的各种业务数据的ftp文件上报的实现简单业务监控机制,本篇先解决日志的入库,后续有时间再讨论基于Clickhouse日志分析。

总体流程

为了可用于生产设计,我们使用带有副本机制MergeTree家族的ReplicatedMergeTree表引擎(如果单表数据量很大再考虑使用分布表,利用shard),其中shard和replica在前面文章部署ClickHouse作为macros定义配置在每一个clickhouse-server的配置文件里。我们先尝试一个从FileBeat采集日志->Logstash(解析日志)->Kafka->clickhouse_sinker(housepower)->ClickHouse(当然也可以采用FileBeat采集日志->Kafka->Logstash(解析日志)>logstash-clickhouse->ClickHouse,这样更合理,可以用其他技术栈实现对于Kafka流式数据的日志实时监控需求)。

  • 日志采集采用Beats平台的Beat工具,本篇主要先基于日志的Filebeat采集组件,很轻量,性能也高,不影响核心服务,将日志文件打上标签全量上报给Logstash;Beat工具部署在程序模块和需要采集日志的服务器上。也可以在Java程序直接引入logstas
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值