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.)

posted @ 2020-10-16 16:02  昕友软件开发  阅读(3854)  评论(0编辑  收藏  举报
欢迎访问我的开源项目:xyIM企业即时通讯