一、概述
ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
1.1 适用场景
1. 绝大多数是读请求;
2. 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新;
3. 已添加到数据库的数据不能修改;
4. 对于读取,从数据库中提取相当多的行,但只提取列的一小部分;
5. 宽表,即每个表包含着大量的列;
6. 查询相对较少(通常每台服务器每秒查询数百次或更少);
7. 对于简单查询,允许延迟大约50毫秒;
8. 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节);
9. 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行);
10. 事务不是必须的;
11. 对数据一致性要求低;
12. 每个查询有一个大表。除了他以外,其他的都很小;
13. 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中;
1.2 优缺点
1. 优点
-
跑分快(对于大多数查询而言,处理速度至少提高了100倍);
-
向量化执行引擎:为了实现向量化执行,需要利用CPU的SIMD指令,即用单条指令操作多条数据;
-
可以实现流批一体;
-
支持shard + replication(类似HBase的Region);
-
支持嵌套等复杂的数据结构;
-
使用MPP架构;(https://www.cnblogs.com/jianyungsun/p/9261632.html)
2. 缺点
- 不能完整支持事务(并发读写没有分离);
- 不能很高吞吐量的修改和删除数据(行数据删除);
- 由于索引的稀疏性,不适合基于Key来查询单个记录(不适合做Key-Value数据库),适合多维度的聚合操作;
- 对Hadoop生态不兼容(不适合用HDFS存储数据);
1.3 特性
- C++语言利用硬件资源优势
- 列式存储和压缩
- 单节点多核并行处理
- 索引(一级、二级、稀疏索引)
- 运用了大量算法
- 向量化引擎(使用了CPU的寄存器、SIMD指令-并行)
- 预计算模型
- 数据分片和分布查询
二、安装部署
2.1 环境准备
2.1.1 CentOS取消打开文件数限制
1.修改文件
sudo vim /etc/security/limits.conf
sudo vim /etc/security/limits.d/90-nproc.conf
2.在文件末尾添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
2.1.2 取消SELINUX
1.修改文件
sudo vim /etc/selinux/config
2.修改内容
SELINUX=disabled
2.1.3 关闭防火墙
sudo systemctl disable firewalld
sudo systemctl stop firewalld
2.1.4 安装依赖
sudo yum install -y libtool
sudo yum install -y *unixODBC*
2.1.5 下载安装包
官网地址:https://clickhouse.tech/docs/zh/getting-started/install/
2.2 单机部署
2.2.1安装
执行安装命令(root用户):
添加官方存储库
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
运行安装命令
sudo yum install clickhouse-server clickhouse-client
2.2.2 配置
修改配置文件/etc/clickhouse-server/config.xml
sudo vim /etc/clickhouse-server/config.xml
- 修改TCP端口,因为Clickhouse默认通信端口为9000,这与Hadoop中的HDFS端口冲突。