ClickHouse
概述
参考:
存算分离,查询性能过剩
https://clickhouse.com/docs/en/guides/sre/network-ports
端口号 | 描述 |
---|---|
2181 | ZooKeeper default service port. Note: see 9181 for ClickHouse Keeper |
8123 | HTTP default port |
8443 | HTTP SSL/TLS default port |
9000 | 原生协议端口(也称为 ClickHouse TCP 协议)。由 ClickHouse 生态的应用程序和进程使用(e.g. 各种语言利用 SDK 编写的程序、clickhouse-client 等自带程序、etc.)。也用于分布式查询的内部服务器之间的通信。 |
9440 | 与 9000 的功能相同,但是带有 SSL/TLS |
9004 | MySQL emulation port |
9005 | PostgreSQL emulation port (also used for secure communication if SSL is enabled for ClickHouse). |
9009 | Inter-server communication port for low-level data access. Used for data exchange, replication, and inter-server communication. |
9010 | SSL/TLS for inter-server communications |
9011 | Native protocol PROXYv1 protocol port |
9019 | JDBC bridge |
9100 | gRPC port |
9181 | Recommended ClickHouse Keeper port |
9234 | Recommended ClickHouse Keeper Raft port (also used for secure communication if <secure>1</secure> enabled) |
9363 | 在 /metrics 路径下暴露 Prometheus 格式的 Metric 指标 |
9281 | Recommended Secure SSL ClickHouse Keeper port |
42000 | Graphite default port |
学习资料
B 站 - 蜂蜜柠檬水HLN,带你快速认识 ClickHouse 数据库 | 了解 OLTP 与 OLAP
Engine
Engine(引擎) 是 ClickHouse 实现数据处理功能的核心抽象。数据库 以及 表 都由各种各样的 Engine 实现
- Database Engine(数据库引擎)
- Table Engine(表引擎)
关联文件与配置
https://clickhouse.com/docs/en/operations/configuration-files
https://clickhouse.com/docs/en/operations/settings
/etc/clickhouse-server/
- ./config.xml # ClickHouse Server 运行配置。
- ./config.d/ # 配置文件可以拆分到该目录,程序运行时会将该目录下的文件合并到 config.xml 主配置文件
- ./metrika.xml # 默认的 include_from 文件。该文件中的配置用来替换主配置文件 config.xml 中的配置。
- e.g. config.xml 中有
<remote_servers incl="clickhouse_remote_server"/>
,那么 metrika.xml 中的<clickhouse_remote_servers>
部分配置就会作为 config.xml 中的 remote_servers。
- e.g. config.xml 中有
- ./users.xml # e.g. 认证信息、etc. 相关配置
- ./users.d/ # 配置文件可以拆分到该目录,程序运行时会将该目录下的文件合并到 users.xml 主配置文件
ClickHouse 部署
https://clickhouse.com/docs/en/install
CLI
https://clickhouse.com/docs/en/operations/utilities
clickhouse-server
clickhouse-client
https://clickhouse.com/docs/en/integrations/sql-clients/cli
- clickhouse-client -u default –password 12345678 -m -n –port 9000 -h 127.0.0.1 -d my_database
ClickHouse 生态
参考:
Grafana 数据源插件 https://github.com/grafana/clickhouse-datasource 。详见 Grafana Plugins
- 在 https://github.com/grafana/clickhouse-datasource/tree/main/src/dashboards 有一些内置的利用 ClickHouse 本身的数据创建出来的 Grafana 仪表盘
- 官方文档,可观测性 - Grafana 有一些最佳实践和示例
https://github.com/clickvisual/clickvisual 一个基于 clickhouse 构建的轻量级日志分析和数据可视化 Web 平台。
https://github.com/metrico/promcasa 通过 ClickHouse 的 SQL,将查询结果转为 OpenMetrics 格式数据。
驱动与接口
https://clickhouse.com/docs/en/interfaces/overview
Cluster
参考:
Shard # 数据的分片
Replica # 每个分片的副本
ClickHouseKeeper # ClickHouse 集群的协调系统,通知 Shard 的副本关于状态变化,使用 RAFT 共识算法实现。ClickHouseKeeper 必须单数节点,最少 3 个来保证选举。
- ClickHouseKeeper 的逻辑也在 ClickHouse 程序的逻辑中,所以可以有两种运行方式
- 与 ClickHouse 一起运行,作为其内部逻辑
- 独立运行
比如
通过如下 SQL 可以查看集群的拓扑结构:
SELECT cluster, shard_num, replica_num, host_name, port
FROM system.clusters;
结果像这样
cluster | shard_num | replica_num | host_name | port |
---|---|---|---|---|
my_cluster | 1 | 1 | host1 | 9000 |
my_cluster | 1 | 2 | host2 | 9000 |
my_cluster | 2 | 1 | host3 | 9000 |
my_cluster | 2 | 2 | host4 | 9000 |
这种结果的配置来源于下面这种配置:
<remote_servers>
<my_cluster>
<shard>
<replica>
<host>host1</host>
<port>9000</port>
</replica>
<replica>
<host>host3</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<host>host2</host>
<port>9000</port>
</replica>
<replica>
<host>host4</host>
<port>9000</port>
</replica>
</shard>
</my_cluster>
</remote_servers>
这个集群共两个分片,将数据分别保存在 host1/host3 和 host2/host4 上,每个分片都有一个自己的备份
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.