最近项目遇到个问题,就是mysql做数据分析高并发情况下,老是报超时错误,主要原因还是因为mysql进行大批量关联查询太耗时间,于是在网上查询了下资料,决定试一下clickhouse
一、Clickhouse简介
Yandex在2016年6月15日开源了一个数据分析的数据库,名字叫做ClickHouse,这对保守俄罗斯人来说是个特大事。更让人惊讶的是,这个列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。如果你没有听过Vertica,那你一定听过 Michael Stonebraker,2014年图灵奖的获得者,PostgreSQL和Ingres发明者(Sybase和SQL Server都是继承Ingres而来的), Paradigm4和SciDB的创办者。Michael Stonebraker于2005年创办Vertica公司,后来该公司被HP收购,HP Vertica成为MPP列式存储商业数据库的高性能代表,Facebook就购买了Vertica数据用于用户行为分析。简单的说,ClickHouse作为分析型数据库,有三大特点:一是跑分快,二是功能多,三是文艺范
官网地址:https://clickhouse.yandex/
官方文档:https://clickhouse.yandex/docs/en/single/
二、安装配置
clickhouse只要是Linux,64位都可以安装。
优先支持Ubuntu,Ubuntu有官方编译好的安装包可以使用。
其次是CentOS和RedHat,有第三方组织altinity编译好的rpm包可以使用。
如果是其他Linux系统,需要自己编译源码。 而且,机器的CPU必须支持SSE 4.2指令集。
所以我们安装前先检查一下系统是否支持SSE 4.2指令集,我的系统还是一贯的Centos7.6,我们打开shell,输入
grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported” 回车
可以看到是支持SSE 4.2的
接下来就正式开始安装
1、下载相关最新包:下载地址:https://packagecloud.io/altinity/clickhouse
我们下载4个文件
clickhouse-client-20.8.3.18-1.el7.x86_64.rpm
clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
2.将上述下载的包移至Centos服务器目录中并进入该目录
上传后
3、我们按照下面的文件顺序执行安装
rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-common-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-client-20.8.3.18-1.el7.x86_64.rpm
4、启动服务 执行 service clickhouse-server start
5、进入客户端
执行 clickhouse-client
可以看到我们已经可以使用ck了 打印出了版本号
三、使用dbeaver工具连接ck,没使用过的请看我的使用教程 大数据分析学习第八课 数据仓库Hive配置客户端可视化管理工具DBeaver
我们新建数据库连接,搜索选择clickhouse
下一步
我们填写主机地址slave107,点确定后,dbeaver会检查需要的驱动并开始下载驱动
驱动安装后,我们遇到下面的报错
应该是我们没有启用外网访问
我们进到server的配置文件config.xml
我们找到<listen_host>::</listen_host>这行 取消注释
接下来检查配置 users.xml
vi users.xml
主要检查下面节点如下正常即可
<networks>
<ip>::/0</ip>
</networks>
接下来我们需要重启一下ck服务使配置生效
sudo service clickhouse-server stop #停止
sudo service clickhouse-server start #启动
重启后 我们先用client连接测试一下
执行 clickhouse-client --port 9000 --host 127.0.0.1 --multiline
测试正常 接下来我们继续使用 dbeaver连接,这里注意我们使用的端口不能是9000了,就用默认的8123
可以看到连接正常了,左侧数据库连接展开,我们可以看到ck默认有2个库,一个default,里面什么都没有,一个system,是内置的一些系统表
我们在default库新建一个test表
保存会弹出一个界面,里面有建表sql
我们点击执行,表就建好了,我们插入4条测试数据
接下来我们统计每个人名的个数,可以自己手工输入sql,也可以右键表名=>生成sql
总结
感谢能看到这里的朋友😉