ClickHouse这些年还是比较火的一门技术,是Yandex在2016年6月15日开源的数据分析的数据库。在GitHub上有7000多的星。
它是基于列式存储,在统计分析方面具有很大的优势。
根据数据,以100M数据集的跑分结果:ClickHouse比Vertia快约5倍,比Hive快279倍,比MySQL 快801倍。
在集群环境中,ClickHouse能够发挥出强大的查询能力。当然我们要在简单的环境中也可以做一些功能的测试,看看clickHouse是不是想空中楼阁一样离我们很遥远。
我们选择rpm安装的方式,选择单机的模式,最新的版本是19了,有不少是测试的小版本,我们暂定一个低一些的版本18,找到了如下的一个源来下载rpm包。
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-18.6.0-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-test-18.6.0-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-18.6.0-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-18.6.0-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-18.6.0-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-debuginfo-18.6.0-1.el7.x86_64.rpm/download.rpm
当然需要提前解决依赖包的问题,在CentOS里面需要准备如下的安装包。
libicu.x86_64 0:50.1.2-17.el7 libtool-ltdl.x86_64 0:2.4.2-22.el7_3 unixODBC.x86_64 0:2.3.1-11.el7
使用如下的方式来进行安装。
yum -y localinstall clickhouse-*.rpm
[root@VM_16_17_centos clickhouse]# rpm -qa|grep clickhouse
clickhouse-test-18.6.0-1.el7.x86_64
clickhouse-common-static-18.6.0-1.el7.x86_64
clickhouse-server-18.6.0-1.el7.x86_64
clickhouse-client-18.6.0-1.el7.x86_64
clickhouse-server-common-18.6.0-1.el7.x86_64
clickhouse-debuginfo-18.6.0-1.el7.x
启动ClickHouse也很简单,操作方式还是比较简单的。
/etc/init.d/clickhouse-server start
[root@VM_16_17_centos init.d]# /etc/init.d/clickhouse-server start
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
连接到ClickHouse,可以使用clickhouse-client
# clickhouse-client
ClickHouse client version 18.6.0.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 18.6.0 revision 54401.
VM_16_17_centos :)
操作方式和MySQL是很类似的,输出的格式会更清晰一些,也支持\G这种显示方式。
VM_16_17_centos :) show databases;
SHOW DATABASES
┌─name────┐
│ default │
│ system │
└─────────┘
2 rows in set. Elapsed: 0.005 sec.
我们找几个简单命令来感受一下,比如生成文本的bar图。
语句如下:select type,bar(count(*),0,200,20) from columns group by type;
输出结果如下:
SELECT
type,
bar(count(*), 0, 200, 20)
FROM columns
GROUP BY type
┌─type──────────┬─bar(count(), 0, 200, 20)─┐
│ DateTime │ █▌ │
│ Date │ ▍ │
│ Float64 │ ▌ │
│ String │ ██████████▊ │
│ UInt8 │ ██▌ │
│ Array(Int64) │ │
│ Int64 │ ▋ │
│ UInt32 │ █▋ │
│ Int32 │ │
│ UInt16 │ ▍ │
│ Array(String) │ ▌ │
│ UInt64 │ █████▊ │
└───────────────┴──────────────────────────┘
12 rows in set. Elapsed: 0.002 sec.
而常用的标准化SQL查询和统计都不在话下。
后续来对这个方案进行细致的评估。