列名无效如何解决_XSKY ClickHouse如何实现存算分离

在介绍ClickHouse之前,说一下OLAP。OLAP也叫联机分析处理(Online Analytical Processing)。OLAP系统以维度模型来存储历史数据,其主要存储描述性的数据并且在结构上都是同质的。

01ClickHouse

OLAP应用有如下特点:

1、大多数的请求是读请求;

2、每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列;

3、宽表,即每个表包含着大量的列;

4、处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行);

5、每一个查询除了一个大表外都很小;

6、查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中。

OLAP引擎的痛点:

· SparkSQL & Hive性能不够快;

· Impala对内存要求高,需要依赖Hadoop生态软件和基础。

综上,市面上的OLAP引擎不够理想,这时,ClickHouse来了。ClickHouse由俄罗斯yandex公司开发,专为在线数据分析而设计,能够使用SQL查询生成实时数据报告,在2016年开源。

首先,也是ClickHouse最突出的优点:"快"。ClickHouse官方测试对比,1亿的数据集测试中,ClickHouse的性能,比Hive快259倍,比MySQL快801倍

8d5de6542a3f77d87eff8a94d0652d0c.png

ClickHouse vs Vertica vs Greeplum

其次,ClickHouse足够轻量,不依赖Hadoop生态。除了解决上述的问题,ClickHouse还有如下优点:

1、列式存储+数据压缩;

2、并行和分布式查询;

3、支持SQL;

4、实时数据更新。

02存储需求

ClickHouse作为OLAP的新宠备受关注,国内大厂也纷纷跟进大规模使用。那么ClickHouse对存储有什么需求?

ClickHouse早期并没有走Hadoop生态,而是采用Local attached storage(本地存储)的存储方式,其可靠性通过原生支持shard + replication来保障。也可以通过RAID 5方式,来提高磁盘数据的可靠性和读取能力。

但ClickHouse存储毕竟不是专业存储,面临着以下几个问题:

1、在ClickHouse众多的表引擎中,又属合并树(MergeTree)表引擎及其家族系列(*MergeTree)最为强大,在生产环境绝大部分场景中都应该使用此系列的表引擎。ReplicatedMergeTree实现了ClickHouse的replication特性,需要依赖ZooKeeper实现分布式系统的协作,当并发写入量较大时,ZooKeeper对表元数据同步有延迟,会成为集群的瓶颈,降低集群整体性能;

2、当数据写入ClickHouse某个节点异常,导致副本间的数据不一致;

3、难扩容,难维护。

针对上述问题,XSKY为用户的ClickHouse需求打造了高可用的软件定义存储解决方案:

· 本身高可用的存储,去中心化设计,不会出现单个瓶颈的情况;

· 强一致性存储系统,保证数据一致性;

· 支持无限制横向扩展,使存储性能与容量同步线性增长,同时配合图形化的管理界面,解决运维问题。

03ClickHouse on S3

上面提到了MergerTree,这里说一下MergeTree在ClickHouse存储方式。默认情况下ClickHouse的数据存储在/var/lib/clickhouse/data目录下:

5ca8e64e9423b389873db49d3ac51145.png

说明:

1、default:数据库名;

2、hdfs_engine_table:表名;

3、2a1dedbe81258ce26f3c450185e5550811_0:其中的一个part,每次插入数据就会生成一个part,part会不定时的merge成更大的一个part,每个part里的数据都是按照主键排序存储;

4、checksums.txt:校验值文件;

5、columns.txt:列名文件,记录了表中的所有列名;

6、x.bin:每一列的真实数据;

7、x.mrk2:每一列的mrk文件;

8、primary.idx:主键文件,存储了主键值。

早在去年的时候,ClickHouse社区就进了一个PR:https://github.com/ClickHouse/ClickHouse/pull/7946,关于支持S3&HDFS 的计划,并在之后陆续合入了DiskS3,终于在ClickHouse v20.4.2.9版本正式合入PR: https://github.com/ClickHouse/ClickHouse/pull/9646,MergeTree全面支持S3。

那么,怎么让ClickHouse的数据存储在S3上?仅需如下两个步骤即可:

一、创建存储配置

在/etc/clickhouse-server/config.d目录下创建配置文件并添加如下配置:

234cbf3444e891ad7d92192cdd0af610.png

说明:

1、YOUR_ENDPOINT:对象存储的endpoint,如:10.0.x.x:8060;

2、BUCKET_NAME:桶名;

3、OBJECT_PREFIX:对象名前缀;

4、AK:对象用户的访问密钥;

5、SK:对象用户的秘密密钥。

二、创建MergeTree表

在创建表时设置上一步骤中创建的存储策略SETTINGS storage_policy = 's3'即可。

32f10d0fdbe6c123830da20b89bc2828.png

经过上述两个步骤就可以进行插入删除操作。

我们先来看看s3_table是怎么存储到对象存储上的?

如下,这么看跟普通的MergeTree没有区别?

067bd10e1e45bfb6ba6693425f89a2ad.png

其实真实的数据已经存储在对象存储上,比如:1_2_2_0/count.txt文件中记录着真正的位置。

ef82cb405420d144014e405966f09470.png

可通过S3 Browser查看到指定目录下已存了真实数据。

669bec0b44781255283315d9c7155326.png

04应用测试

如上讲述了如何使用对象存储存储ClickHouse的数据,下面就做一个简单的测试。这里使用航班飞行的真实数据。

说明:该ClickHouse环境为虚机测试环境,16G的内存,4核CPU,不能体现出性能,仅做功能测试。

1、通过如下命令下载2017年的飞行数据:

56d2d00c203ea3dceff1b5e4e7e56a14.png

2、创建ontime数据库:

16a6fa2a24ed7953691aca9f4d5d6049.png

3、将下载好的数据导入到ClickHouse:

a823e93c605fbcb0003f0b149c5c69e5.png

4、进行数据查询:

· 查看导入的数据量:

094e3ea9846f6cde4d194f4c0748fd2d.png

· 查询2017最受欢迎的目的地:

093be8f4319b52ad89da3ff08607971c.png

· 查询最受欢迎的出发城市:

a65c0a4d7c0823c42ef7abafc8fd989a.png

05总结

近年来ClickHouse发展迅猛,除了其丰富的功能,优秀的性能,还有就是在当下不可忽视的数据量增长。XSKY对象存储可为企业提供全面的云存储安全服务,其可扩展的性能、先进的数据存储和管理功能,更重要的是能够实现ClickHouse的存算分离,让应用更加专注于应用。

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word List 46

word List 46 如果存在什么问题,欢迎批评指正!谢谢!

.NET Core开发实战(第6课:作用域与对象释放行为)--学习笔记(下)

06 | 作用域与对象释放行为接下来&#xff0c;把服务切换为单例模式&#xff0c;通过工厂的方式services.AddSingleton<IOrderService>(p > new DisposableOrderService());启动程序&#xff0c;输出如下&#xff1a;1 2 接口请求处理结束可以看到代码实际上不会被释放…

C++实现邻接表存储的图及bfs遍历

#include <iostream> #include <queue> using namespace std; typedef char VerTexType; #define MVNum 100 typedef char OtherInfo; bool vis[MVNum];//邻接表 typedef struct ArcNode {int adjvex;struct ArcNode *nextarc;OtherInfo info; } ArcNode;//弧(边)t…

cmd小游戏_使用pygame制作Flappy bird小游戏

原文链接&#xff1a;【Python】使用Pygame做一个Flappy bird小游戏&#xff08;一&#xff09;​mp.weixin.qq.com最近看到很多大佬用强化学习玩Flappy bird。所以打算也上手玩一玩&#xff0c;但是苦于没找到pc上的这个游戏&#xff0c;找了点资料&#xff0c;发现并不是很难…

word List 47

word List 47 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

使用BeetleX构建基础的SSL网络通讯

BeetleX的使用非常简单&#xff0c;通过Stream的数据流模式可以让你轻松处理网络数据&#xff1b;在处理SSL加密通讯的时候组件的使用也是非常方便&#xff0c;只需要简单的配置证书即可完成基于SSL的网络安全通讯&#xff0c;接下来介绍一下通过组件快速构建一个安全可靠的网络…

调用其他app 的lib_ButterKnife执行效率为什么比其他注入框架高?它的原理是什么...

面试官: ButterKnife为什么执行效率为什么比其他注入框架高&#xff1f;它的原理是什么心理分析&#xff1a; ButterKnife框架一直都是使用&#xff0c;很少又开发者对butterknife深入研究的&#xff0c;既然你是面试Android高级岗位&#xff0c;自然需要有相应被问到原理的准备…

算法---会议最大安排问题

算法—会议最大合理安排问题 参考&#xff1a;趣学算法 代码&#xff1a; #include <stdio.h> #include <stdlib.h> typedef struct meet {int beg;//开始int end;//结束int num;//会议编号 }meet; int cmp44(meet m1,meet m2) {//越早结束的越优先&#xff0c;…

小cookie,大智慧

Cookie是什么&#xff1f;cookies是你访问网站时创建的数据片段文件&#xff0c;通过保存浏览信息&#xff0c;它们使你的在线体验更加轻松。使用cookies&#xff0c;可以使你保持在线登录状态&#xff0c;记录你的站点偏好&#xff0c;并为你提供本地化支持。First-party cook…

java 最少使用(lru)置换算法_LRU算法详解及最简单的Java实现

更多内容&#xff0c;欢迎关注微信公众号&#xff1a;全菜工程师小辉~LRU(Least recently used&#xff0c;最近最少使用)算法根据数据的历史访问记录来进行淘汰数据&#xff0c;其核心思想是“如果数据最近被访问过&#xff0c;那么将来被访问的几率也更高”。LRU算法的表现新…

word List 48

word List 48 如果存在什么问题&#xff0c;欢迎批评指正!谢谢&#xff01;

一文读懂常用开源许可证

社区时常为流行产品中有争议的开源许可证而感到震惊&#xff0c;这引起各方关注&#xff0c;纷纷争论何为真正的开源许可证。去年&#xff0c;Apache 基金会&#xff08;Apache Foundation&#xff09;禁止使用 Facebook React 那些具有争议的专利组件&#xff0c;这引发了轩然…

[蓝桥杯2015初赛]手链样式-思维+next_permutation枚举(好题)

题目描述 小明有3颗红珊瑚&#xff0c;4颗白珊瑚&#xff0c;5颗黄玛瑙。 他想用它们串成一圈作为手链&#xff0c;送给女朋友。 现在小明想知道&#xff1a;如果考虑手链可以随意转动或翻转&#xff0c;一共有多少不同的组合样式&#xff1f; 输出 请你输出该整数。不要输出任…

word List 49

word List 49 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢!

(四)开源C# WPF控件库《AduSkin – UI》

微信公众号&#xff1a;【Dotnet9的博客】&#xff0c;网站&#xff1a;【Dotnet9】&#xff0c;问题或建议&#xff1a;【请网站留言】&#xff0c; 如果对您有所帮助&#xff1a;【欢迎赞赏】。https://dotnet9.com追求极致&#xff0c;永臻完美A Beautiful WPF Control UI一…

python输入数据爬取_python根据用户需求输入想爬取的内容及页数爬取图片方法详解...

本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。 主要步骤&#xff1a; 1.提示用户输入爬取的内容及页码。 2.根据用户输入&#xff0c;获取网址列表。 3.模拟浏览器向服务器发送请求&#xff0c;获取响应。 4.利用xpath方法找到图片的标签。 5.保存数据。 代码…

word List 50

word List 50 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

单点突破,击穿阈值,DevOps转型你需要这样做

在上篇文章里&#xff0c;我提到了如何通过对价值流进行分析、拆解关键要素指标&#xff0c;并通过缩减处理时间PT、降低前置时间LT、提高完成&准确的百分比&#xff08;C&A%&#xff09;&#xff0c;实现企业研发效能10倍速提升。大家点击回看这篇文章《以埃隆马斯克“…

双向dcdc变换器simulink仿真_二极管箝位五电平变换器Simulin仿真

● 本期为二极管箝位五电平变换器的基本Simulink仿真&#xff0c;只包含其SPWM调制。感谢公众号一位好友“一叶知秋”提供Simulink模型并分享。01二极管箝位五电平变换器调制方法传统的变换器存在高的电压变化率和共模电压&#xff0c;且波形谐波含量较大&#xff0c;使得输出滤…

在.NET Core中使用MachineKey

在.NET Core中使用MachineKey在上篇文章中&#xff0c;我介绍了 Cookie是基于 MachineKey生成的&#xff0c; MachineKey决定了 Cookie生成的算法和密钥&#xff0c;并如果使用多台服务器做负载均衡时&#xff0c;必须指定一致的 MachineKey。但在 .NETCore中&#xff0c;官方似…