ClickHouse

腾讯云ClickHouse如何实现自动化的数据均衡?

£可爱£侵袭症+ 提交于 2020-10-14 20:35:07
​一、引言 ClickHouse 是一个用于联机分析( OLAP )的列式数据库管理系统( DBMS )。它于 2016 年以 Apache 2.0 协议开源,以优秀的查询性能,深受广大大数据工程师欢迎。 为了服务客户业务,腾讯云于 2020 年 4 月正式上线 ClickHouse 服务。 服务上线以来,迅速获得内外客户 广泛支持,服务业务数量成规模增长。与此同时, 运维与管控压力也随之而来,用户对弹性伸缩能力的呼声越来越大。 事实上,ClickHouse 是典型的 Share-Nothing 架构,天然支持弹性伸缩能力。 无论是增加节点数量,还是增加数据分片副本数量都非常容易。 图1 ClickHouse Share-Nothing 架构 但是,ClickHouse 集群在增加节点后,集群上的数据集无法自动均衡分布。需要人工干预,确保数据均衡。 同理,下线集群节点前,也需要人工干预,将被下线节点的机器迁移到其他节点。 在生产环境中,运维工作强度随着集群中表的数量,数据规模增加而急剧增强。 为了缓解云上 ClickHouse 用户运维压力,将 ClickHouse 数据均衡运维工作自动化是非常有价值的。 本文将带大家了解腾讯云 ClickHouse 是如何实现无人值守的数据均衡服务,希望与大家一同交流。 二、ClickHouse集群数据均衡功能缺失 在生产环境中,通常

有赞数据库服务设计与实践-3306π南京站

大憨熊 提交于 2020-10-14 16:35:33
主题 : 「3306π」南京站活动专访 杨奇龙《有赞数据库服务设计与实践》 大纲 : 1、杨老师,一直持续在各个技术方面,为大家输出精彩文章,请问您是如何在工作之余进行的技术总结呢?您的学习方法可否分享给大家? 2、各个企业都在引用开源或者自研数据库服务或平台来进行工作提效,请问杨老师如何量化数据库服务带来的成果呢? 3、请问杨老师,有赞数据库服务的开发团队非常高效,但一般中小企业都会希望DBA本身负责研发相关工作,杨老师可否谈谈您对DBA的定位和发展建议呢? 4、 请问杨老师,一般企业在规划数据库服务平台从0到1过程,您比较推荐哪种模块依次开发的顺序来,实现平台的有效设计和有效推广呢? 分享时间 : 2020年10月17日 13:00-18:00 扫一扫左边二维码, 立刻报名本次活动。 嘉宾自我介绍 杨奇龙 杭州有赞 DBA ,运营公众号yangyidba 。负责有赞数据库架构设计,数据库服务治理,故障诊断等等 01 杨老师,一直持续在各个技术方面,为大家输出精彩文章,请问您是如何在工作之余进行的技术总结呢?您的学习方法可否分享给大家? 关于写文章这件事上可以看出我记得我从2009年5月份在itpub的博客写了第一篇文章,基本一路写到现在,算是兴趣和对技术的坚持吧。平时利用工作的机会收集案例,素材,查看官方文档,网络其他牛人的博客等,利用空余时间 做技术试验测试,然后汇总写写文章

进程在Linux上实际需要多少内存

China☆狼群 提交于 2020-10-14 11:00:09
你经常会在基于Linux的系统上面临的问题之一是管理内存预算。如果程序使用的内存多于可用内存,则可能会发生交换,这常常会对性能造成严重影响,或者激活了内存溢出(OOM),从而完全杀死了进程。 在调整内存使用之前,通过配置优化或者负载管理,有助于了解给定程序实际使用多少内存。 如果你的系统本质上运行单用户程序(总是有很多系统进程),那么这很容易。例如,如果我在具有128GB RAM的系统上运行专用的MySQL服务器,则可以使用“ used”作为已使用内存的标识,并使用“ available”作为仍可以使用的内存。 root@rocky:/mnt/data2/mysql# free -h total used free shared buff/cache available Mem: 125Gi 88Gi 5.2Gi 2.0Mi 32Gi 36Gi Swap: 63Gi 33Mi 63Gi 对于交换(swap),如果系统交换不频繁,即使使用了交换空间,它通常也会保留“不需要的垃圾”,这不需要考虑计算。 如果你使用的是Percona的监控和管理工具(PMM),则会在“Memory Utilization”中看到它: 并在“node summary”面板的的“swap activity”图中: 如果运行的多个进程共享着资源,则事情会变得复杂,因为“used”内存和进程之间没有一一对应的映射

ClickHouse内核分析-MergeTree的Merge和Mutation机制

喜欢而已 提交于 2020-10-12 07:30:06
引言 ClickHouse内核分析系列文章,继上一篇文章 MergeTree查询链路 之后,这次我将为大家介绍MergeTree存储引擎的异步Merge和Mutation机制。建议读者先补充上一篇文章的基础知识,这样会比较容易理解。 MergeTree Mutation功能介绍 在上一篇系列文章中,我已经介绍过ClickHouse内核中的MergeTree存储一旦生成一个Data Part,这个Data Part就不可再更改了。所以从MergeTree存储内核层面,ClickHouse就不擅长做数据更新删除操作。但是绝大部分用户场景中,难免会出现需要手动订正、修复数据的场景。所以ClickHouse为用户设计了一套离线异步机制来支持低频的Mutation(改、删)操作。 Mutation命令执行 ALTER TABLE [db.]table 来源: oschina 链接: https://my.oschina.net/u/4418764/blog/4285576

Flink 1.11.1:jdbc-connector 添加支持Clickhouse

放肆的年华 提交于 2020-10-10 12:52:59
文章目录 解决的问题: 做的代码改动: 编译使用 替换已有的flink-connector-jdbc包 解决的问题: Flink JDBC写数据到Clickhouse默认没有实现,需要自己实现,需新添加ClickhouseJDBCDialect 做的代码改动: 1、修改 flink-release-1.11.1/flink-connectors/flink-connector-jdbc/src/main/java/org/apache/flink/connector/jdbc/dialect/JdbcDialects.java 2、添加ClickhouseJDBCDialect.java package org . apache . flink . connector . jdbc . dialect ; import org . apache . flink . table . types . logical . LogicalTypeRoot ; import org . apache . flink . table . types . logical . RowType ; import org . apache . flink . connector . jdbc . internal . converter . JdbcRowConverter ; import org

ClickHouse和他的朋友们(3)MySQL Protocol和Write调用栈

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-07 14:20:23
原文出处:https://bohutang.me/2020/06/08/clickhouse-and-friends-mysql-protocol-write-stack/ 上篇的 MySQL Protocol和Read调用 里介绍了 ClickHouse 一条查询语句的调用栈,本文继续介绍写的调用栈,开整。 Write请求 建表: mysql> CREATE TABLE test(a UInt8, b UInt8, c UInt8) ENGINE=MergeTree() PARTITION BY (a, b) ORDER BY c; Query OK, 0 rows affected (0.03 sec) 写入数据: INSERT INTO test VALUES(1,1,1), (2,2,2); 调用栈分析 1. 获取存储引擎 OutputStream DB::StorageMergeTree::write(std::__1::shared_ptr<DB::IAST> const&, DB::Context const&) StorageMergeTree.cpp:174 DB::PushingToViewsBlockOutputStream::PushingToViewsBlockOutputStream(std::__1::shared_ptr<DB::IStorage>

面试官:GET和POST两种基本请求方法有什么区别

橙三吉。 提交于 2020-10-07 05:18:06
点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取 来源:r6d.cn/j26B GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻轻松松的给出了一个“标准答案”: GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 GET请求在URL中传送的参数是有长度限制的,而POST么有。 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。 GET参数通过URL传递,POST放在Request body中。 (本标准答案参考自w3schools) “很遗憾,这不是我们要的回答!” 请告诉我真相.

AnalyticDB实现和特点浅析

北慕城南 提交于 2020-10-06 01:39:05
目录 AnalyticDB介绍与背景 AnalyticDB详细解析 架构设计 数据分区 读写分离和读写流程 其他特性介绍 混合(列-行)存储引擎 索引 小结 本篇主要是根据AnalyticDB的论文,来讨论AnalyticDB出现的背景,各个模块的设计,一些特性的解析。可能还会在一些点上还会穿插一些与当前业界开源实现的比对,希望能够有一个更加深入的探讨。OK,那我们开始吧。 AnalyticDB介绍与背景 要说AnalyticDB,那起码得知道它是干什么的。这里直接贴下百度百科的介绍: AnalyticDB是阿里云自主研发的一款实时分析数据库,可以毫秒级针对千亿级数据进行即时的多维分析透视。 简单地说,就是实时OLAP型数据库,它的对标产品是Apache Kylin,Apache Druid,Clickhouse这些。然后AnalyticDB的特点, 包括高并发实时摄入数据,兼容Mysql协议,无需预计算即可有的极快响应时间,多种数据源接入,大规模集群管理等 。好吧,这几个特点都很官方,不急,接下来会逐渐讨论各个点。 然后介绍下AnalyticDB的背景。 首先先说说传统的OLAP型数据仓库,以往构建OLAP型数据仓库通常都是采用离线模式, 即在晚上设置定时任务将前一天的数据同步到数据仓库中,第二天数据分析师或报表工具就可以根据数据产出分析结果 。但这样的问题是数据延迟太高了