ClickHouse 是一个高性能的列式数据库管理系统(DBMS),主要用于在线分析处理(OLAP)场景。它由俄罗斯搜索引擎公司 Yandex 开发,并在 2016 年开源。ClickHouse 以其卓越的查询性能和灵活的扩展性而闻名,特别适合处理大量数据,并提供了一系列强大的函数来帮助用户编写分析查询。
ClickHouse 的核心优势包括:
- 高速查询性能:ClickHouse 通过列式存储和向量化查询引擎,实现了极高的查询性能,能够轻松应对海量数据的实时分析需求
。 - 灵活的扩展性:支持分布式部署,可以轻松实现水平扩展,满足不断增长的数据存储和查询需求
。 - 丰富的功能特性:提供了丰富的数据类型和函数库,支持复杂的数据分析和挖掘操作,满足多样化的业务需求
。 - 数据压缩:ClickHouse 在存储数据时会进行压缩,减少了磁盘空间的占用,同时由于数据在内存中以压缩形式存在,读取和处理时的解压操作也能被硬件加速,进一步提高了查询性能
。 - 并行处理:在处理复杂查询时,ClickHouse 可以将任务分解为多个子任务并行执行,利用多核 CPU 的能力,加快处理速度
。 - 实时数据处理:ClickHouse 支持对数据的实时插入和查询,可以实现对实时数据的分析与监控
。
ClickHouse 的应用场景包括: - 大数据处理和分析:ClickHouse 可以处理大规模数据集,并提供高效的数据分析和查询功能,适用于需要处理海量数据的应用场景,如互联网、金融、电信等领域
。 - 数据仓库:可以作为数据仓库的存储和分析引擎,提供高效的数据查询和报表生成功能,适用于需要对大量数据进行集中存储、管理和分析的场景,如企业数据仓库、金融数据仓库等
。 - 数据湖:ClickHouse 可以处理非结构化数据和半结构化数据,适用于数据湖的存储和分析场景,如大规模社交媒体数据、物联网数据等
。 - 实时计算平台:提供了实时数据处理和计算功能,可以支持实时数据流处理和实时决策,适用于需要对实时数据进行分析和处理的场景,如实时金融交易、实时广告投放等
。
ClickHouse 适用于需要处理大规模数据、实现高效数据分析和决策的场景,可以作为各种数据存储和分析应用的引擎,为业务提供高效的数据支持和洞察
。
Clickhouse官网地址https://clickhouse.com/,大家可以从官网获得更多更有用的权威信息,对于你的排错和调优都有很大的帮助,所以大家在学习新的技能时一定多关注他们的官方网站。
一、安装
curl https://clickhouse.com/ | sh
sudo ./clickhouse install
默认安装的clickhouse配置文件目录/etc/clickhouse-server
二、启动clickhouse
sudo -u alfiy clickhouse server
上图是clickhouse启动后的截图。
三、登录clickhouse
使用cli登录clickhouse
clickhouse client
使用命令行登录后就可以操作clickhouse了,和操作mysql非常相似,使用quit命令退出登录。
四、设置clickhouse-server服务
为了方便以后的操作,可以将clickhouse-server
设置成服务。
新建 /lib/systemd/system/clickhouse-server.service
文件,添加以下内容。
[Unit]
Description=ClickHouse Server (analytic DBMS for big data)
Requires=network-online.target
# NOTE: that After/Wants=time-sync.target is not enough, you need to ensure
# that the time was adjusted already, if you use systemd-timesyncd you are
# safe, but if you use ntp or some other daemon, you should configure it
# additionaly.
After=time-sync.target network-online.target
Wants=time-sync.target
[Service]
Type=notify
# NOTE: we leave clickhouse watchdog process enabled to be able to see OOM/SIGKILL traces in clickhouse-server.log files.
# If you wish to disable the watchdog and rely on systemd logs just add "Environment=CLICKHOUSE_WATCHDOG_ENABLE=0" line.
User=clickhouse
Group=clickhouse
Restart=always
RestartSec=30
# The following ClickHouse directives should be used instead of forcing SIGKILL by systemd:
# - shutdown_wait_unfinished_queries
# - shutdown_wait_unfinished
TimeoutStopSec=infinity
# Disable forwarding signals by watchdog, since with default systemd's
# kill-mode control-group, systemd will send signal to all process in cgroup.
Environment=CLICKHOUSE_WATCHDOG_NO_FORWARD=1
# Since ClickHouse is systemd aware default 1m30sec may not be enough
TimeoutStartSec=0
# %p is resolved to the systemd unit name
RuntimeDirectory=%p
ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=%t/%p/%p.pid
# Minus means that this file is optional.
EnvironmentFile=-/etc/default/%p
# Bring back /etc/default/clickhouse for backward compatibility
EnvironmentFile=-/etc/default/clickhouse
LimitCORE=infinity
LimitNOFILE=500000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE CAP_NET_BIND_SERVICE
[Install]
# ClickHouse should not start from the rescue shell (rescue.target).
WantedBy=multi-user.target
🖊 注意[Service]单元中 ExecStart=
应当对应你安装的clickhouse的目录。
👿 新增服务配置文件之后,需要使用命令systemctl daemon-reload
让服务配置生效。
💁♂ 修改完成后,如果想使用systemctl
控制clickhouse-server
服务需要先通过命令clickhouse stop
停止clickhouse
,或者重启系统。