1.ClickHouse安装准备工作
1.1. 关于版本和系统的选择
操作系统:CentOS Linux release 7.6.1810 (Core)
ClickHouse: 21.4.3
1.2 CentOS7 打开文件数限制
在 /etc/security/limits.conf 这个文件的末尾加入一下内容:
sudo vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
在 /etc/security/limits.d/90-nproc.conf 这个文件的末尾加入一下内容:
sudo vim /etc/security/limits.d/90-nproc.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
重启服务器之后生效,用 ulimit -n 或者 ulimit -a 查看设置结果
[root@node3 ~]# ulimit -n
65536
[root@node3 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127824
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 131072
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@node3 ~]#
1.3. CentOS7 取消 SELINUX
修改 /etc/selinux/config 中的 SELINUX=disabled 后重启
vim /etc/selinux/config
# 将 SELINUX=enforcing 修改为:
SELINUX=disabled
# 重启服务器后查看 SELINUX 状态
[root@hnode3 ~]# sestatus
SELinux status: disabled
1.4. 关闭防火墙
CentOS-6 中操作方式:
service iptables stop
service ip6tables stop
CentOS-7 中操作方式:
# 查看防火墙状态
[root@node3 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2021-04-13 16:22:52 CST; 2s ago
Docs: man:firewalld(1)
Main PID: 4710 (firewalld)
CGroup: /system.slice/firewalld.service
└─4710 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
# 关闭防火墙
[root@node3 ~]# systemctl stop firewalld.service
1.5. 安装依赖
yum install -y libtool
yum install -y *unixODBC*
1.6 验证指令集是否支持
需要验证当前服务器的 CPU 是否支持 SSE 4.2 指令集,因为向量化执行需要用到这项特性:
[root@node3 ~]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported
1.7 下载 rpm 包
[root@node3 opt]# mkdir clickhouse
[root@node3 opt]# cd clickhouse/
[root@node3 clickhouse]# wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-server-21.4.3.21-2.noarch.rpm
[root@node3 clickhouse]# wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-21.4.3.21-2.x86_64.rpm
[root@node3 clickhouse]# wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-client-21.4.3.21-2.noarch.rpm
2. 单机模式部署
ClickHouse的安装可以使用 yum在线安装,也可以使用 rpm 离线安装的方式!
具体信息见官网文档:https://clickhouse.tech/#quick-start
2.1 安装rpm包
rpm -ivh clickhouse-common-static-21.4.3.21-2.x86_64.rpm
rpm -ivh clickhouse-server-21.4.3.21-2.noarch.rpm
rpm -ivh clickhouse-client-21.4.3.21-2.noarch.rpm
2.2 修改端口
# clickhouse 默认使用 9000 端口,但是这个端口与 HDFS 发生冲突,所以将其修改为 9977
vim /etc/clickhouse-server/config.xml
# 1. 将 <tcp_port>9000</tcp_port> 端口修改为 9977
<tcp_port>9977</tcp_port>
# 2. listen_host 表示能监听的主机,:: 表示任意主机都可以访问,放开注释
<listen_host>::</listen_host>
<!-- <listen_host>::1</listen_host> -->
<!-- <listen_host>127.0.0.1</listen_host> -->
2.3 目录结构
目录 | 说明 |
---|---|
/etc/clickhouse-server | 服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml |
/var/lib/clickhouse | 默认数据存储目录,通常会修改默认路径配置,将数据保存到大容量磁盘挂载路径 |
/var/log/clickhouse-server | 默认日志保存目录,通常会修改路径配置将日志保存到大容量磁盘挂载的路径 |
2.4 配置文件
- /etc/security/limits.d/clickhouse.conf:文件句柄数量的配置
[root@node3 ~]# cat /etc/security/limits.d/clickhouse.conf
clickhouse soft nofile 262144
clickhouse hard nofile 262144
# 该配置也可以通过config.xml的max_open_files修改
- /etc/cron.d/clickhouse-server:cron定时任务配置
# 用于恢复因异常原因中断的ClickHouse服务进程
[root@node3 ~]# cat /etc/cron.d/clickhouse-server
#*/10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1
# 在默认的情况下,
# 每隔10秒就会使用condstart尝试启动一次ClickHouse服务,
# condstart命令的是检查ClickHouse服务状态,
# 如果ClickHouse服务正在运行,则跳过;如果没有运行,则通过start启动
- /usr/bin/clickhouse:主程序的可执行文件
- /usr/bin/clickhouseclient:一个指向ClickHouse可执行文件的软链接,供客户端连接使用
- /usr/bin/clickhouseserver:一个指向ClickHouse可执行文件的软链接,供服务端启动使用
- /usr/bin/clickhousecompressor:内置提供的压缩工具,可用于数据的正压反解
2.3 启动 clickhouse并验证
# 启动服务
[root@node3 clickhouse]# systemctl start clickhouse-server.service
# 验证服务是否启动成功
[root@node3 clickhouse]# netstat -nltp | grep clickhouse
tcp6 0 0 :::9977 :::* LISTEN 19971/clickhouse-se
tcp6 0 0 :::8123 :::* LISTEN 19971/clickhouse-se
tcp6 0 0 :::9004 :::* LISTEN 19971/clickhouse-se
tcp6 0 0 :::9009 :::* LISTEN 19971/clickhouse-se
[root@node3 clickhouse]#
[root@node3 clickhouse]#
[root@node3 clickhouse]# ps -aux | grep clickhouse
clickho+ 19970 0.0 0.0 477408 22868 ? Ss 11:35 0:00 clickhouse-watchdog --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
clickho+ 19971 1.2 0.8 1395324 270444 ? SLl 11:35 0:03 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
root 22516 0.0 0.0 112728 1000 pts/0 S+ 11:40 0:00 grep --color=auto clickhouse
# 关闭服务
systemctl stop clickhouse-server.service
3. 命令行介绍
3.1 基本使用
-- 启动 clickhouse 命令行
[root@node3 clickhouse]# clickhouse-client --host=localhost --port=9977
ClickHouse client version 21.4.3.21 (official build).
Connecting to localhost:9977 as user default.
Connected to ClickHouse server version 21.4.3 revision 54447.
-- 创建库
show databases;
┌─name────┐
│ default │
│ system │
└─────────┘
create database db2;
-- 切换库 , 默认使用 default
use db2;
-- 创建数据表
create table test01(id Int8, name String) engine = TinyLog;
-- 查询表列表
show tables;
┌─name───┐
│ test01 │
└────────┘
-- 插入数据
insert into test01 values (1, 'hello'), (2, 'world'), (3, 'clickhouse');
-- 查询数据
select id, name from test01;
┌─id─┬─name───────┐
│ 1 │ hello │
│ 2 │ world │
│ 3 │ clickhouse │
└────┴────────────┘
-- 统计查询
select count(*) as total from test01;
┌─total─┐
│ 3 │
└───────┘
-- 退出 clickhouse 命令行
quit
3.2 clickhouse-client 相关参数
参数 | 说明 |
---|---|
--host / -h |
服务端的地址,默认值为localhost。如果修改了config.xml内的listen_host,则需要依靠此参数指定服务端地址,例如下面所示的代码。 |
--port |
服务端的TCP端口,默认值为9000。如果要修改config.xml内的tcp_port,则需要使用此参数指定。 |
--user / -u |
登录的用户名,默认值为default。如果使用非default的其他用户名登录,则需要使用此参数指定,例如下面所示代码。关于自定义用户的介绍将在第11章展开。 |
--password |
登录的密码,默认值为空。如果在用户定义中未设置密码,则不需要填写(例如默认的default用户) |
--database / -d |
登录的数据库,默认值为default。 |
--query / -q |
只能在非交互式查询时使用,用于指定SQL语句。 |
--multiquery / -n |
在非交互式执行时,允许一次运行多条SQL语句,多条语句之间以分号间隔。 |
--time / -t |
在非交互式执行时,会打印每条SQL的执行时间 |
3.3 查看历史记录
cat ~/.clickhouse-client-history
3.4 导入数据
- 准备导入的数据文件
[root@node3 opt]# cat data.csv
10,name
1,xioaming
2,xiaohong
- 创建数据表
use db1;
create table test_csv(id Int8, name String) engine = TinyLog;
- 导入数据
cat data.csv | clickhouse-client --port=9977 --query " INSERT INTO db1.test_csv FORMAT CSV "
- 确认操作
-- 查询数据表看数据是否导入成功
select * from db1.test_csv;
┌─id─┬─name───────┐
│ 10 │ name │
│ 1 │ xioaming │
│ 2 │ xiaohong │
└────┴────────────┘
3.5 导出数据
# 导入数据
[root@node3 opt]# clickhouse-client --port=9977 --query " select * from db1.test_csv " > /opt/test_csv.csv
[root@node3 opt]#
[root@node3 opt]#
[root@node3 opt]# cat test_csv.csv
10 name
1 xioaming
2 xiaohong
4. 内置工具
ClickHouse除了提供基础的服务端与客户端程序之外,还内置了clickhouse-local和clickhouse-benchmark两种实用工具,现在分别说明它们的作用。
4.1 clickhouse-local
clickhouse-local可以独立运行大部分SQL查询,不需要依赖任何ClickHouse的服务端程序,它可以理解成是ClickHouse服务的单机版微内核,是一个轻量级的应用程序。clickhouse-local只能够使用File表引擎,它的数据与同机运行的ClickHouse服务也是完全隔离的,相互之间并不能访问。
clickhouselocal是非交互式运行的,每次执行都需要指定数据来源,例如通过stdin标准输入,以echo打印作为数据来源:
clickhouselocal 参数简介:
完整的参数列表可以通过help查阅。
参数 | 介绍 |
---|---|
-q/--query |
待执行的SQL语句,多条语句之间以分号间隔 |
-S/--structure |
表结构的简写方式。 |
-N/--table |
表名称,默认值是table |
-if/--input-format |
输入数据的格式,默认值是TSV |
-f/--file |
输入数据的地址,默认值是stdin标准输入 |
# 使用 -S -H 简写 定义表结构并查询数据
echo -e "1\n2\n3" | clickhouse-local -S "id Int64 " -N "test_table" -q "SELECT id FROM test_table;"
# 使用 --structure --table 定义表结构并查询数据
echo -e "1\n2\n3" | clickhouse-local --structure "id Int64 " --table "test_table" -q "SELECT id FROM test_table;"
# 使用DDL 定义表结构并查询数据
echo -e "1\n2\n3" | clickhouse-local -q "CREATE TABLE test_table (id Int64 ) ENGINE = File( CSV, stdin );SELECT id FROM test_table;"
# 使用外部数据作为数据源
[root@node3 opt]# clickhouse-local --file "/opt/data.csv" -S " id Int64,name String" --input-format "CSV" -N "test_table" -q "SELECT * FROM test_table;"
10 name
1 xioaming
2 xiaohong
- 借助操作系统的命令,实现对系统用户内存用量的查询:
[root@node3 opt]# ps aux | tail -n +2 | awk '{ printf("%s\t%s\n",$1,$4) }' | clickhouse-local -S "user String,memory Float64" -q "SELECT user,round( sum(memory),2) as memoryTotal FROM table GROUP BY user ORDER BY memoryTotal DESC FORMAT Pretty"
──────────────────────────
│ user │ memoryTotal │
├──────────┼─────────────┤
│ hbase │ 25.4 │
├──────────┼─────────────┤
│ yarn-ats │ 14.3 │
├──────────┼─────────────┤
│ ams │ 12 │
├──────────┼─────────────┤
│ kafka │ 8 │
├──────────┼─────────────┤
│ spark │ 3.9 │
├──────────┼─────────────┤
│ infra-s+ │ 3.1 │
├──────────┼─────────────┤
│ root │ 2.7 │
├──────────┼─────────────┤
│ yarn │ 2.7 │
──────────────────────────
.....
4.2 clickhouse-benchmark
clickhouse-benchmark是基准测试的小工具,它可以自动运行SQL查询,并生成相应的运行指标报告。
参数说明
完整的参数列表,可以通过help查阅。
参数 | 说明 |
---|---|
-i/--iterations |
SQL查询执行的次数,默认值是0 |
-c/--concurrency |
同时执行查询的并发数,默认值是1 |
-r/--randomize |
在执行多条SQL语句的时候,按照随机顺序执行 |
-h/--host |
服务端地址,默认值是localhost。clickhousebenchmark支持对比测试,此时需要通过此参数声明两个服务端的地址 |
--confidence |
设置对比测试中置信区间的范围,默认值是5(99.5%),它的取值范围有0(80%)、1(90%)、2(95%)、3(98%)、4(99%)和5(99.5%)。 |
- 使用示例
[root@node3 opt]# echo " SELECT * FROM system.numbers LIMIT 100 " | clickhouse-benchmark --port=9977 -i 5
# 1个查询测试
Loaded 1 queries.
# 参数该查询会执行5次:
Queries executed: 5.
# 给出 包含QPS、RPS等指标信息的报告
# QPS = queries per second = req/sec = 请求数/秒
# RPS = requests per second = 并发数/平均响应时间
localhost:9977, queries 5, QPS: 641.594, RPS: 64159.395, MiB/s: 0.489, result RPS: 64159.395, result MiB/s: 0.489.
# 各百分位的查询执行时间
0.000% 0.001 sec.
10.000% 0.001 sec.
20.000% 0.001 sec.
30.000% 0.001 sec.
40.000% 0.001 sec.
50.000% 0.001 sec.
60.000% 0.001 sec.
70.000% 0.001 sec.
80.000% 0.001 sec.
90.000% 0.002 sec.
95.000% 0.002 sec.
99.000% 0.002 sec.
99.900% 0.002 sec.
99.990% 0.002 sec.
- 可以指定多条SQL进行测试,此时需要将SQL语句定义在文件中
# 1. 将测试 SQL 写进文件中
[root@node3 opt]# cat multisqls
SELECT * FROM system.numbers LIMIT 100;
SELECT * FROM system.numbers LIMIT 200;
# 2. 执行测试
[root@node3 opt]# clickhouse-benchmark --port=9977 -r 1 -i 5 < /opt/multisqls
# 2 个查询测试
Loaded 2 queries.
# 查询会执行5次:
Queries executed: 5 (250.000%).
# 给出 包含QPS、RPS等指标信息的报告
localhost:9977, queries 5, QPS: 419.066, RPS: 58669.259, MiB/s: 0.448, result RPS: 58669.259, result MiB/s: 0.448.
# 各百分位的查询执行时间
0.000% 0.002 sec.
10.000% 0.002 sec.
20.000% 0.002 sec.
30.000% 0.002 sec.
40.000% 0.002 sec.
50.000% 0.002 sec.
60.000% 0.002 sec.
70.000% 0.002 sec.
80.000% 0.002 sec.
90.000% 0.004 sec.
95.000% 0.004 sec.
99.000% 0.004 sec.
99.900% 0.004 sec.
99.990% 0.004 sec.
- 指定多个服务器测试相同语句
# 使用h参数指定了两个相同的服务地址(在真实场景中应该声明两个不同的服务),基准测试会分别执行2次,生成相应的指标报告:
[root@node3 opt]# clickhouse-benchmark -h node3 --port=9977 -h node3 --port=9977 -r 1 -i 5 < /opt/multisqls
Loaded 2 queries.
Queries executed: 5 (250.000%).
# 第一个服务器
node3:9977, queries 2, QPS: 620.279, RPS: 93041.864, MiB/s: 0.710, result RPS: 93041.864, result MiB/s: 0.710.
# 第二个服务器
node3:9977, queries 3, QPS: 534.366, RPS: 71248.834, MiB/s: 0.544, result RPS: 71248.834, result MiB/s: 0.544.
0.000% 0.002 sec. 0.002 sec.
10.000% 0.002 sec. 0.002 sec.
20.000% 0.002 sec. 0.002 sec.
30.000% 0.002 sec. 0.002 sec.
40.000% 0.002 sec. 0.002 sec.
50.000% 0.002 sec. 0.002 sec.
60.000% 0.002 sec. 0.002 sec.
70.000% 0.002 sec. 0.002 sec.
80.000% 0.002 sec. 0.003 sec.
90.000% 0.002 sec. 0.003 sec.
95.000% 0.002 sec. 0.003 sec.
99.000% 0.002 sec. 0.003 sec.
99.900% 0.002 sec. 0.003 sec.
99.990% 0.002 sec. 0.003 sec.
# 在对比测试中,clickhousebenchmark会通过抽样的方式比较两组查询指标的差距,在默认的情况下,置信区间为99.5%:
No difference proven at 99.5% confidence
5. JDBC 连接
- 添加依赖
<!-- https://mvnrepository.com/artifact/ru.yandex.clickhouse/clickhouse-jdbc -->
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.0</version>
</dependency>
- URL
单节点:JDBC URL 为 jdbc:clickhouse://<host>:<port>[/<database>]
高可用:jdbc:clickhouse://<firsthost>:<port>,<secondhost>:<port>[,…]/<database>
import java.sql.*;
public class JDBCTest {
public static void main(String[] args) {
//初始化驱动
try {
Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
// url
String url="jdbc:clickhouse://node3:8123/db1";
// 使用默认用户
String user="default";
// 默认密码为空
String password="";
// 获取连接
Connection con = DriverManager.getConnection(url,user,password);
Statement stmt = con.createStatement();
// 查询
ResultSet rs = stmt.executeQuery("select * from db1.test_csv");
while (rs.next()){
System.out.println(rs.getInt(1) +"-"+rs.getString(2));
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
// 输出结果
10-name
1-xioaming
2-xiaohong
3. 集群模式部署
3.1 zookeeper 安装
clickhouse 集群模式部署需要依赖 zookeeper,需要把 zookeeper 预先安装。
这里不做 zookeeper 安装的介绍,不知道怎么安装可以看这个文档:https://www.hnbian.cn/posts/3f857bc8.html#toc-heading-11
这里已经部署过了 zookeeper 环境如下:
节点 | 端口 |
---|---|
node1 | 2181 |
node2 | 2181 |
node3 | 2181 |
3.2 分发并安装rpm包
我准备了三台服务器,已经安装了一台,其他两台服务器也都需要安装clickhouse
[root@node3 opt]# cd clickhouse/
[root@node3 clickhouse]#
[root@node3 clickhouse]# ll
-rw-r--r-- 1 root root 54368 4月 12 23:41 clickhouse-client-21.4.3.21-2.noarch.rpm
-rw-r--r-- 1 root root 128449273 4月 12 23:41 clickhouse-common-static-21.4.3.21-2.x86_64.rpm
-rw-r--r-- 1 root root 77604 4月 12 23:41 clickhouse-server-21.4.3.21-2.noarch.rpm
[root@node3 clickhouse]# cd ..
[root@node3 opt]# scp -r clickhouse/ node1:/opt/
...
[root@node3 opt]#
[root@node3 opt]# scp -r clickhouse/ node2:/opt/
...
# 分别在 node1、node2 安装 rpm 包
rpm -ivh clickhouse-common-static-21.4.3.21-2.x86_64.rpm
rpm -ivh clickhouse-server-21.4.3.21-2.noarch.rpm
rpm -ivh clickhouse-client-21.4.3.21-2.noarch.rpm
3.2 修改配置文件config.xml
# 在单节点部署中修改了config.xml 文件中的端口号,
# 将这个文件分发到其余 clickhouse 节点中
scp -r /etc/clickhouse-server/config.xml node1:/etc/clickhouse-server/
scp -r /etc/clickhouse-server/config.xml node2:/etc/clickhouse-server/
vim /etc/clickhouse-server/config.xml
先修改 tcp_port 为 9977, 因为这个端口和 HDFS 的冲突了
9977
listen_host 表示能监听的主机,:: 表示任意主机都可以访问
::
所有节点同步:
scp -r /etc/clickhouse-server/config.xml bigdata04:/etc/clickhouse-server/
scp -r /etc/clickhouse-server/config.xml bigdata05:/etc/clickhouse-server/
3.3 在四台机器的etc目录下新建metrika.xml文件
vim /etc/metrika.xml
<yandex>
<clickhouse_remote_servers>
<!-- 3分片1副本 -->
<clickhouse_4shards_1replicas>
<shard>
<!-- 数据自动同步 -->
<internal_replication>true</internal_replication>
<replica>
<host>node1</host>
<port>9977</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>node2</host>
<port>9977</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node3</host>
<port>9977</port>
</replica>
</shard>
</clickhouse_4shards_1replicas>
</clickhouse_remote_servers>
<!-- zookeeper 自动同步 -->
<zookeeper-servers>
<node index="2">
<host>bigdata02</host>
<port>2181</port>
</node>
<node index="3">
<host>bigdata03</host>
<port>2181</port>
</node>
<node index="4">
<host>bigdata04</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- 配置文件中macros若省略,则建复制表时每个分片需指定zookeeper路径及副本名称,同一分片
上路径相同,副本名称不同;若不省略需每个分片不同配置 -->
<macros>
<replica>bigdata02</replica>
</macros>
<networks>
<ip>::/0</ip>
</networks>
<!-- 配置压缩 -->
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
需要根据不同的机器做不同的修改。
所有节点同步:
scp -r /etc/metrika.xml node1:/etc/
scp -r /etc/metrika.xml node2:/etc/
3.4 启动
# 先启动 zookeeper
zkServer.sh start
#启动服务端:
nohup clickhouse-server --config-file=/etc/clickhouse-server/config.xml
1>~/logs/clickhouse_std.log 2>~/logs/clickhouse_err.log &
#检查启动是否OK:
netstat -nltp | grep clickhouse
# 启动客户端:
clickhouse-client --host=... --port=... --user=... --password=... -m
客户端命令参数解释:
username:用户名
password:密码
ip:服务器IP
port:端口
-m:允许多行查询
启动本地多行查询客户端:
clickhouse-client --host=localhost --port=9977 -m
clickhouse-client --host=bigdata02 --port=9977 --user=bigdata --password=bigdata -m
3.5 检查进程
ps -aux | grep clickhouse
4. 版本升级
在使用离线RPM安装包安装后,可以直接通过rpm命令升级:
#cd/chbase/setup
#rpmUvh./*
.rpmPreparing...
#######################[100%]
……
在升级的过程中,原有的config.xml等配置均会被保留。基于其他安装方法的升级方案,请参阅官方手册。
4. 卸载 clickhouse
# 查询是否安装 clickhouse:
rpm -qa | grep clickhouse
# 卸载 clickhouse:
rpm -e clickhouse-client-20.5.4.40-2.noarch --nodeps
rpm -e clickhouse-server-20.5.4.40-2.noarch --nodeps
rpm -e clickhouse-common-static-20.5.4.40-2.x86_64 --nodeps
# 删除数据目录:
rm -rf /var/lib/clickhouse
# 删除集群配置文件:
rm -rf /etc/metrika.xml
# 删除配置文件:
rm -rf /etc/clickhouse-*
# 删除日志文件:
rm -rf /var/log/clickhouse-server
# 删除 zookeeper 上 clickhouse 的数据:
rmr /clickhouse
# 也可以进行全局寻找:然后执行删除操作
find / -name 'clickhouse'
5. ClickHouse 的 Client 参数介绍
参数 | 描述 |
---|---|
–host, -h | 目标服务器名,默认为 localhost |
–port | 目标端口,默认为 9000 |
–user, -u | 连接用户,默认为 default |
–password | 连接用户密码,默认为空字符串 |
–query, -q | 非交互模式下执行的命令 |
–database, -d | 当前操作的数据库,默认选择配置文件配置的值(默认为 default 库) |
–multiline, -m | 如果设定,允许多行查询 |
–multiquery, -n | 如果指定,允许处理由分号分隔的多个查询。只有在非交互式模式工作。 |
–format, -f | 使用指定的默认格式输出结果 |
–vertical, -E | 如果指定,默认使用垂直格式输出结果,等同于 –format=Vertical。 在这种格式中,每个值可在单独的行上,显示宽表时很有用。 |
–time, -t | 如果指定,在 stderr 中输出查询执行时间的非交互式模式下。 |
–stacktrace | 如果指定,如果发生异常,也会输出堆栈跟踪。 |
–config-file | 配置文件的名称,额外的设置或改变了上面列出的设置默认值。 |
默认情况下,配置文件的搜索顺序如下:
./clickhouse-client.xml
~/.clickhouse-client/config.xml
/etc/clickhouse-client/config.xml
6. 设置用户和密码
进入到配置文件目录,修改配置配置文件:
vim /etc/clickhouse-server/users.xml
系统默认使用 default 用户登录 无密码。 现在我们配置用户 bigdata 密码为 bigdata
配置一个用户:你配置的 bigdata 就是用户名, 这个标签中的值,就是密码
bigdata
::/0
default
default
所有节点同步:
scp -r /etc/clickhouse-server/users.xml node1:/etc/clickhouse-server/
scp -r /etc/clickhouse-server/users.xml node2:/etc/clickhouse-server/
#启动客户端连接:
clickhouse-client --host=bigdata02 --port=9977 --user=bigdata --password=bigdata -m
8. 注意事项
clickhouse: 每个节点在安装的时候,都是独立的。
每个节点的 clickhouse 都是单独的服务器在运行,在有需要的时候,可以通过配置文件,把他们联合起来变成一个集群。甚至还可以,把你准备的所有的服务器,配置成多个集群。就算你配置成集群了,每个服务器依然还是单独运行的。
如果你创建了一张表,这张表的引擎是分布式的引擎,那么这个表所存储在那个集群里面的那个集群里面的机器,就是一个集群了。每个 clickhouse 中的部分表是单机的, 部分表是分布式的。
clickhouse 既是单独运行的,游离于集群之外,被包含在集群之类的表:分为单机的表和分布式的表