OLAP分析型数据库clickhouse的选型、安装与试用

news2024/11/19 7:44:01

一、背景:

目前,在做项目时,遇到使用oracle数据库进行大表查询分析时,查询比较慢,而且随着表数据逐渐积累,数据量过亿(按月估计)。架构师针对几个关键要点(非实时数据核心场景查询分析对事务要求低数据量极大结构化数据)分析后建议考虑数据仓库的建设思路,考虑选择一种OLAP分析型数据替代现有的oracle来解决项目问题;同时也增强项目可扩展性,能做到无缝对接数据仓库。

二、技术选型:

针对架构师提到的几个核心考虑要素,对比了市场现有的OLAP数据库特点,最终选择clickhouse作为本次实验数据库。

ClickHouse的优势:

  • ClickHouse最大的特点就是快,快,快,重要的话说三遍!
  • 与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:
  1. 列式存储数据库,数据压缩
  2. 关系型、支持SQL
  3. 分布式并行计算,把单机性能压榨到极限
  4. 高可用
  5. 数据量级在PB级别
  6. 实时数据更新
  7. 索引

ClickHouse的限制:

  1. 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据。
  2. 没有完整的事务支持
  3. 不支持二级索引
  4. 有限的SQL支持,join实现与众不同
  5. 不支持窗口功能
  6. 元数据管理需要人工干预维护

ClickHouse的使用现状:

ClickHouse 是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各个大厂纷纷跟进大规模使用:

  • 今日头条内部用 ClickHouse 来做用户行为分析,内部一共几千个 ClickHouse 节点,单集群最大 1200 节点,总数据量几十 PB,日增原始数据 300TB 左右。
  • 腾讯内部用 ClickHouse 做游戏数据分析,并且为之建立了一整套监控运维体系。
  • 携程内部从 18 年 7 月份开始接入试用,目前 80% 的业务都跑在 ClickHouse 上。每天数据增量十多亿,近百万次查询请求。
  • 快手内部也在使用 ClickHouse,存储总量大约 10PB, 每天新增 200TB, 90% 查询小于 3S。

在 1 亿数据集体量的情况下,ClickHouse 的平均响应速度是 Vertica 的 2.63 倍、InfiniDB 的 17 倍、MonetDB 的 27 倍、Hive 的 126 倍、MySQL 的 429 倍以及Greenplum 的 10 倍。详细的测试结果可以查阅:https://clickhouse.tech/benchmark/dbms/。
ClickHouse 非常适用于商业智能领域(也就是我们所说的 BI 领域),除此之外,它也能够被广泛应用于广告流量、Web、App 流量、电信、金融、电子 商务、信息安全、网络游戏、物联网等众多其他领域。

三、环境准备:

1台linux服务器,CentOS6.7,4核16G

四、安装包下载:

登录官网下载:https://packages.clickhouse.com/tgz/lts/

安装包列表如下:

clickhouse-common-static-22.8.9.24-amd64.tgz
clickhouse-common-static-dbg-22.8.9.24-amd64.tgz
clickhouse-server-22.8.9.24-amd64.tgz
clickhouse-client-22.8.9.24-amd64.tgz

五、单机部署启动:

安装步骤说明:

# 1、创建安装用户
# -- 创建用户组
groupadd clickhouse
# -- 创建用户
useradd -m -d /home/clickhouse -g clickhouse clickhouse
# -- 修改密码
passwd clickhouse

# 2、设置clickhouse执行sudo权限
# -- root用户下开放编辑文件权限
chmod u+w /etc/sudoers
# -- 编辑sudoers文件,找到rootALL=(ALL)ALL在它下面添加XXXALL=(ALL)ALL**(XXX是你的用户名)**
vim /etc/sudoers
clickhouse      ALL=(ALL)       ALL
# -- root用户下收回编辑文件权限
chmod u-w /etc/sudoers

# 3、下载安装包 https://packages.clickhouse.com/tgz/lts/
clickhouse-common-static-22.8.9.24-amd64.tgz
clickhouse-common-static-dbg-22.8.9.24-amd64.tgz
clickhouse-server-22.8.9.24-amd64.tgz
clickhouse-client-22.8.9.24-amd64.tgz

# 4、上传至108服务器目录/home/clickhouse

# 5、切换至clickhouse用户
su - clickhouse

# 6、安装应用
cd /home/clickhouse

tar -xzvf clickhouse-common-static-22.8.9.24-amd64.tgz
sudo clickhouse-common-static-22.8.9.24/install/doinst.sh

tar -xzvf clickhouse-common-static-dbg-22.8.9.24-amd64.tgz
sudo clickhouse-common-static-dbg-22.8.9.24/install/doinst.sh

tar -xzvf clickhouse-server-22.8.9.24-amd64.tgz
sudo clickhouse-server-22.8.9.24/install/doinst.sh
## 根据提示设置数据库用户密码 123456
## 根据提示设置允许所有网络连接

tar -xzvf clickhouse-client-22.8.9.24-amd64.tgz
sudo clickhouse-client-22.8.9.24/install/doinst.sh

# 7、修改配置文件
# -- (1) 修改/etc/clickhouse-server/config.xml监听地址,如果没权限就修改权限后修改
vim /etc/clickhouse-server/config.xml

<< BLOCK
把  
<!-- <listen_host>0.0.0.0</listen_host> -->  
修改为  
<listen_host>0.0.0.0</listen_host>
BLOCK
 
# -- (2) 修改文件/etc/clickhouse-server/config.d/listen.xml,修改为以下配置
vim /etc/clickhouse-server/config.d/listen.xml
<clickhouse>  
    <listen_host>0.0.0.0</listen_host>  
</clickhouse>


# 8、启动服务 切换至clickhouse用户
# -- Start clickhouse-server with:
sudo clickhouse start

# -- Start clickhouse-client with:
clickhouse-client --password
 
# 9、状态查询
sudo service clickhouse-server status

# 10、日志查询(日志目录设置见config.xml)
tail -100f /var/log/clickhouse-server/clickhouse-server.err.log

# 11、卸载服务
rm -fr /etc/clickhouse*
rm -fr /var/lib/clickhouse*
rm -fr /var/log/clickhouse*
rm -fr /usr/bin/clickhouse*
rm -fr /var/run/clickhouse*

六、服务启动验证:

clickhouse-client登录后,可以通过命令查看 select * from system.clusters

七、数据库管理工具访问:

推荐使用DBeaver工具访问,工具安装参考文章无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse-易微帮

八、安装常见问题:

错误1

Code: 210. DB::NetException: Connection refused (localhost:9000). (NETWORK_ERROR)

错误2
<Error> Application: DB::Exception: Listen [::]:8123 failed: Poco::Exception. Code: 1000, e.code() = 0, DNS error: EAI: Address family for hostname not supported (version 23.3.2.37 (official build))

错误基本都是由于配置信息错误引起,如果服务器不支持IPV6,请详细参考章节第五部分安装步骤7修改配置文件。

附录-参考文献资料:

OLAP数据库_xishilife的博客-CSDN博客

ClickHouse 介绍 - 知乎

六千字呕心沥血深度总结,为您揭秘ClickHouse为什么查询这么快! - 知乎

ClickHouse高可用集群搭建(离线安装) - 简书

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

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

相关文章

谷粒商城二十四springCloud之Sleuth+Zipkin 服务链路追踪

为什么用 微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位。 主要体现在&#xff0c;一个请求可能需要调…

进程同步及经典问题

目录 1、基本概念 1.1两种形式的制约关系 1.2临界资源 1.3临界区 1.4同步机制应遵循的规则 2、硬件同步机制 3、信号量机制(重要) 3.1整型信号量 3.2记录型信号量 3.3AND型信号量 3.4信号量集 4、信号量的应用 4.1利用信号量实现进程互斥 4.2利用信号量实现前趋关系 …

【Spring】初识MyBatis (一)

MyBatis概述 MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架&#xff0c;它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索&#xff0c;并使用简单的XML或注解进行配置和原始映射&#xff0c;用以将接口和Java的POJO&#xff08;Plain Old Ja…

Qt libqrencode二维码——QtWidgets

前言 之前写过二维码的程序&#xff0c;但是在U盘上&#xff0c;没带&#xff0c;又重新找的网上资料写的。 网上二维码的生成&#xff0c;大多用到是第三方库libqrencode,这也一样&#xff1a; 效果图 本来是个动图的&#xff0c;都被和谐了&#xff0c;所以换成截图&…

2023年必学的一款测试工具,10 分钟上手

近两年有一款 UI 测试工具非常火爆&#xff0c;名字叫 cypress, 官方号称超越 selenium, 是面向下一代的测试工具。 那 cypress 到底要不要学呢&#xff1f;学起来容易吗&#xff1f;我们一起来看一下。 资料传送门&#xff1a;《软件测试全套基础/进阶/转行资料》 安装 cy…

【计算机视觉】最强 Zero-Shot 视觉应用:Grounding DINO + Segment Anything + Stable Diffusion

文章目录 一、前言二、功能介绍2.1 功能一2.2 功能二2.3 其他有趣的功能 三、总结 一、前言 用 Midjourney 花一个小时做的项目 logo 图&#xff1a; 解释一下 logo 的含义&#xff1a;一只坐在地上的马赛克风格的熊。 坐在地面上是因为 ground 有地面的含义&#xff0c;然后分…

数据流传输适配器系列产品设计资料保存:220-基于光纤的数据流传输适配器系列产品

220-基于光纤的数据流传输适配器系列产品 一、产品概述 光纤传输适配器为公司主力产品&#xff0c;主要包括10Gbps传输&#xff0c;40Gbps传输和100Gbps光纤传输&#xff0c;适配CameraLink&#xff08;双base或者1路Full&#xff09;、HDMI、HD-SDI&#xff1b;多路AD&#x…

TikTok数据报告要怎么看?

TikTok数据报告是一种分析和汇总TikTok平台上数据的报告&#xff0c;包含TikTok平台上的用户数据、视频数据、广告数据等。TK卖家每年可以通过分析TK数据报告来更好地了解受众和市场趋势&#xff0c;从而制定更加精准的营销策略和提升销售业绩。TikTok数据报告也可以帮助商家更…

分布式锁Redission对于(不可重入、不可重试、超时释放、主从一致性)四个问题的应对

文章目录 1 Redission介绍2 Redission快速入门3 Redission可重入锁原理4 Redission锁重试和WatchDog机制5 Redission锁的MutiLock原理 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&…

JavaScript 特性 this与“bind“和“call“,“apply“的理解

本文的目的是帮助JavaScript初学者更好地理解"bind"方法&#xff0c;并帮助那些对"this"的理解不太清楚的人更好地理解"bind"方法和"this"之间的关系。特别是对于那些对"this"的理解不太清楚的人是有所帮助的。在深入学习&q…

通信端点(应用端点)与套接字的关系

为了实现以太网通信的分层与解耦,应用程序通常并不直接驱动TCP/IP协议栈发送以太网数据包。它们通过所在系统提供的一个叫做套接字的东西,调用套接字的接口函数创建套接字处理程序。用套接字处理程序发送自己的应用数据。 返回的套接字处理程序,就代表了这个应用程序。这就…

一篇文章搞定《RecyclerView缓存复用机制》

------《RecyclerView缓存复用机制》 前言零、为什么要缓存一、RecyclerView如何构建我们的列表视图二、缓存过程三、缓存结构1、mChangedScrap/mAttachedScrap2、mCachedViews3、mViewCacheExtension4、mRecyclerPool 四、总结 前言 本篇文章&#xff0c;暂时不加入预加载进行…

沃尔玛入驻教程:中国卖家如何免费、快速入驻沃尔玛walmart.com?

作为一家全球知名的零售巨头&#xff0c;沃尔玛&#xff08;Walmart&#xff09;的在线商城walmart.com拥有庞大的消费者基础和巨大的商机。对于中国的卖家来说&#xff0c;入驻沃尔玛的平台是一个很好的机会&#xff0c;但是有没有什么方法可以免费、快速入驻呢&#xff1f;有…

CTF-PHP反序列化漏洞4-实例理解POP链(经典赛题)

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

软件测试 - 缺陷管理

1. 缺陷的定义 产品不满足用户的需求或者测试执行时实际结果和预期结果不一致都属于缺陷。 2. 缺陷的判定标准及产生原因 软件不满足下述任何一种都算作是软件的缺陷&#xff0c;缺陷的概念是包括bug概念的。 未达到需求说明书指明的功能出现了需求说明书指明不应该出现的错…

cordova-10 打apk

Android升级到api 31后&#xff0c;ionic打出来的release包默认是一个aab文件&#xff0c;要想走以前的手动签名和zipalign的流程我需要打一个没有签名的apk的包&#xff0c;参考以下文章&#xff1a; Android Platform Guide - Apache Cordova Ionic Cordova Build for Andro…

Ubuntu: 搭建 NFS 服务器

文章目录 1. 前言2. 测试环境3. NFS 服务器搭建3.1 安装 NFS 服务3.2 导出 NFS 共享目录3.3 重启 NFS 服务 4. 客户端连接 NFS 服务端5. VMware Ubuntu6. Linux 内核 NFS 支持 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&…

Seurat -- 数据集的整合

文章目录 briefPerforming integration on datasets normalized with LogNormalizePerforming integration on datasets normalized with SCTransform brief 这里主要根据seurat的教程走的&#xff0c;描述了多个单细胞数据集的整合&#xff0c;其中数据集的integration并不是…

java的对象模型

背过面试题的朋友都知道&#xff0c;Java对象是保存在堆内存中&#xff0c;在内存中&#xff0c;一个Java对象包含三部分&#xff1a;对象头&#xff0c;实例数据&#xff0c;对其填充。其中对象头是一个很关键的部分&#xff0c;因为对象头中包含锁状态标志&#xff0c;线程持…

使用MindSDK的at-server组件开发从机模组

使用MindSDK的at-server组件开发从机模组 文章目录 使用MindSDK的at-server组件开发从机模组引言AT命令应用场景AT命令技术简介MindSDK中的at-server组件及样例工程at_port.cat_cmd_led.cmain.c 基于AT命令的人机交互应用使用串口调试助手软件发送AT命令使用Python脚本发送AT命…