ClickHouse在CentOS-7 Linux下安装和初体验
安装
1、检查系统是否支持clickhouse安装
grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.
“SSE 4.2 supported” 代表可以安装,ClickHouse需要使用SSE硬件指令集加速,大大加快了CPU寄存器计算效率。
2、新建rpm包所在目录
mkdir -p /opt/software/clickhouse/
cd /opt/software/clickhouse/
自动安装:
首先,您需要添加官方存储库: yum install yum-utils rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 如果您想使用最新版本,请将stable替换为testing(建议您在测试环境中使用)。 然后运行这些命令以实际安装包: yum install clickhouse-server clickhouse-client
或者按顺序手动安装:
下载地址:
https://packagecloud.io/Altinity/clickhouse/
rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-test-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm
启动服务
可以运行如下命令在后台启动服务:
systemctl start clickhouse-server systemctl stop clickhouse-server systemctl status clickhouse-server or service clickhouse-server start
在我们安装的软件中包含这些包:
- clickhouse-client 包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。
- clickhouse-common 包,包含一个ClickHouse可执行文件。
- clickhouse-server 包,包含要作为服务端运行的ClickHouse配置文件。
服务端配置文件位于 /etc/clickhouse-server/。 在进一步讨论之前,请注意 config.xml文件中的<path> 元素. Path决定了数据存储的位置,因此该位置应该位于磁盘容量较大的卷上;默认值为 /var/lib/clickhouse/
可以在/var/log/clickhouse-server/目录中查看日志。
如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。
你也可以在控制台中直接启动服务:
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
启动命令行客户端
可以使用命令行客户端连接到服务:
clickhouse-client 默认情况下它使用’default’用户无密码的与localhost:9000服务建立连接。 客户端也可以用于连接远程服务,例如: clickhouse-client --host=example.com clickhouse-client --host=localhost:9099
测试数据导入
使用脱敏的Yandex.Metrica数据集
Dataset由两个表组成,其中包含有关点击命中的匿名数据 (hits_v1)和访问表 (visits_v1),加起来1.8G文件,其中hits 包含1亿行(在列数据库中说“行”这个字比较怪啊,应该说导入1亿条数据)数据的表
下载和导入点击表: curl -O https://clickhouse-datasets.s3.yandex.net/hits/partitions/hits_v1.tar tar xvf hits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory sudo service clickhouse-server restart clickhouse-client --query "SELECT COUNT(*) FROM datasets.hits_v1" 下载和导入访问: curl -O https://clickhouse-datasets.s3.yandex.net/visits/partitions/visits_v1.tar tar xvf visits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory sudo service clickhouse-server restart clickhouse-client --query "SELECT COUNT(*) FROM datasets.visits_v1"
也可以导入tsv
https://clickhouse.tech/docs/zh/getting-started/tutorial/
纽约出租车数据
12亿行220GB的文件的纽约出租车数据,复杂Groupby查询时间在3台服务器集群下不超过1秒,单服务器不超4秒
配置:16个物理内核,128G RAM(GROUP BY+Order查询)
这在Hive还是MySQL都是望尘莫及。
SELECT passenger_count, toYear(pickup_date) AS year, count(*) FROM trips_mergetree GROUP BY passenger_count, year
SELECT passenger_count, toYear(pickup_date) AS year, round(trip_distance) AS distance, count(*)
FROM trips_mergetree
GROUP BY passenger_count, year, distance
ORDER BY year, count(*) DESC
https://clickhouse.tech/docs/zh/getting-started/example-datasets/nyc-taxi/
命令行客户端使用
这个客户端可以选择使用交互式与非交互式(批量)两种模式。
使用批量模式,要指定 query 参数,或者发送数据到 stdin(它会检查 stdin 是否是 Terminal),或者两种同时使用。
它与 HTTP 接口很相似,当使用 query 参数发送数据到 stdin 时,客户端请求就是一行一行的 stdin 输入作为 query 的参数。这种方式在大规模的插入请求中非常方便。
默认情况下,在批量模式中只能执行单个查询。为了从一个 Script 中执行多个查询,可以使用 --multiquery 参数。除了 INSERT 请求外,这种方式在任何地方都有用。查询的结果会连续且不含分隔符地输出。
同样的,为了执行大规模的查询,您可以为每个查询执行一次 clickhouse-client。但注意到每次启动 clickhouse-client 程序都需要消耗几十毫秒时间。
在交互模式下,每条查询过后,你可以直接输入下一条查询命令。
如果 multiline 没有指定(默认没指定):为了执行查询,按下 Enter 即可。查询语句不是必须使用分号结尾。如果需要写一个多行的查询语句,可以在换行之前输入一个反斜杠\,然后在您按下 Enter 键后,您就可以输入当前语句的下一行查询了。
如果 multiline 指定了:为了执行查询,需要以分号结尾并且按下 Enter 键。如果行末没有分号,将认为当前语句并没有输入完而要求继续输入下一行。
若只运行单个查询,分号后面的所有内容都会被忽略。
查询实例
SELECT StartURL AS URL,AVG(Duration) AS AvgDuration \ FROM datasets.visits_v1 \ WHERE StartDate BETWEEN '2014-03-23' AND '2014-03-30' \ GROUP BY URL \ ORDER BY AvgDuration DESC \ LIMIT 10 SELECT EventDate,URL,UserID \ FROM datasets.hits_v1 \ WHERE EventDate BETWEEN '2014-03-23' AND '2014-03-30' \ LIMIT 10 SELECT EventDate,URL,UserID \ FROM datasets.hits_v1 \ ORDER BY EventDate DESC \ LIMIT 10;
我的虚拟机是8G RAM 1CPU,最后一条查询性能: Elapsed: 0.432 sec. Processed 8.87 million rows, 856.69 MB (20.56 million rows/s., 1.99 GB/s.)
目前维护的开源产品:https://gitee.com/475660