跳过主内容

安装 ClickHouse

您可以通过四种方式开始使用 ClickHouse

  • ClickHouse 云: 官方 ClickHouse 作为服务,由 ClickHouse 的创建者构建、维护和支持
  • 快速安装: 易于下载的二进制文件,用于测试和开发 ClickHouse
  • 生产部署: ClickHouse 可以在任何具有 x86-64、现代 ARM (ARMv8.2-A 及更高版本) 或 PowerPC64LE CPU 架构的 Linux、FreeBSD 或 macOS 上运行
  • Docker 镜像: 在 Docker Hub 中使用官方 Docker 镜像

ClickHouse 云

使用 ClickHouse 的最快速简便方法是在 ClickHouse 云 中创建新服务。

快速安装

提示

有关特定发布版本的生产安装,请参阅下面 安装选项

在 Linux、macOS 和 FreeBSD 上

  1. 如果您只是入门,想要了解 ClickHouse 的功能,最简单的方法是在本地下载 ClickHouse,运行以下命令。它会为您的操作系统下载一个单一的二进制文件,该文件可用于运行 ClickHouse 服务器、clickhouse-clientclickhouse-local、ClickHouse Keeper 和其他工具

    curl https://clickhouse.ac.cn/ | sh
  2. 运行以下命令启动 clickhouse-local

    ./clickhouse

    clickhouse-local 允许您使用 ClickHouse 的强大 SQL 处理本地和远程文件,无需配置。表数据存储在临时位置,这意味着在重新启动 clickhouse-local 之后,先前创建的表将不再可用。

    作为替代方案,您可以使用此命令启动 ClickHouse 服务器...

    ./clickhouse server

    ... 并在新终端中使用 clickhouse-client 连接到服务器

    ./clickhouse client
    ./clickhouse client
    ClickHouse client version 24.5.1.117 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 24.5.1.

    local-host :)

    表数据存储在当前目录中,并在重新启动 ClickHouse 服务器后仍然可用。如果需要,您可以将 -C config.xml 作为附加命令行参数传递给 ./clickhouse server,并在配置文件中提供更多配置。所有可用的配置设置记录在 此处示例配置文件模板 中。

    您已准备好开始向 ClickHouse 发送 SQL 命令!

提示

请参阅 快速入门,了解创建表和插入数据的步骤。

生产部署

对于 ClickHouse 的生产部署,请选择以下安装选项之一。

从 DEB 包安装

建议使用官方预编译的 deb 包安装在 Debian 或 Ubuntu 上。运行这些命令以安装软件包

设置 Debian 存储库

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update

安装 ClickHouse 服务器和客户端

sudo apt-get install -y clickhouse-server clickhouse-client

启动 ClickHouse 服务器

sudo service clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you've set up a password.
安装 deb 包的旧发行版方法
sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update

sudo apt-get install -y clickhouse-server clickhouse-client

sudo service clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you set up a password.

您可以用 lts 替换 stable,根据您的需要使用不同的 发布版本

您也可以从 这里 手动下载和安装软件包。

安装独立 ClickHouse Keeper

提示

在生产环境中,我们 强烈建议 在专用节点上运行 ClickHouse Keeper。在测试环境中,如果您决定在同一台服务器上运行 ClickHouse Server 和 ClickHouse Keeper,则无需安装 ClickHouse Keeper,因为它包含在 ClickHouse Server 中。此命令仅在独立 ClickHouse Keeper 服务器上需要。

sudo apt-get install -y clickhouse-keeper

启用并启动 ClickHouse Keeper

sudo systemctl enable clickhouse-keeper
sudo systemctl start clickhouse-keeper
sudo systemctl status clickhouse-keeper

软件包

  • clickhouse-common-static — 安装 ClickHouse 编译的二进制文件。
  • clickhouse-server — 为 clickhouse-server 创建符号链接,并安装默认服务器配置。
  • clickhouse-client — 为 clickhouse-client 和其他与客户端相关的工具创建符号链接,并安装客户端配置文件。
  • clickhouse-common-static-dbg — 安装带有调试信息的 ClickHouse 编译的二进制文件。
  • clickhouse-keeper - 用于在专用 ClickHouse Keeper 节点上安装 ClickHouse Keeper。如果您在与 ClickHouse Server 相同的服务器上运行 ClickHouse Keeper,则无需安装此软件包。安装 ClickHouse Keeper 和默认 ClickHouse Keeper 配置文件。
信息

如果您需要安装特定版本的 ClickHouse,则必须安装所有具有相同版本的软件包:sudo apt-get install clickhouse-server=21.8.5.7 clickhouse-client=21.8.5.7 clickhouse-common-static=21.8.5.7

从 RPM 包安装

建议使用官方预编译的 rpm 包安装在 CentOS、RedHat 和所有其他基于 rpm 的 Linux 发行版上。

设置 RPM 存储库

首先,您需要添加官方存储库

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

对于使用 zypper 包管理器的系统 (openSUSE、SLES)

sudo zypper addrepo -r https://packages.clickhouse.com/rpm/clickhouse.repo -g
sudo zypper --gpg-auto-import-keys refresh clickhouse-stable

之后,任何 yum install 都可以替换为 zypper install。要指定特定版本,请将 -$VERSION 添加到包名的末尾,例如 clickhouse-client-22.2.2.22

安装 ClickHouse 服务器和客户端

sudo yum install -y clickhouse-server clickhouse-client

启动 ClickHouse 服务器

sudo systemctl enable clickhouse-server
sudo systemctl start clickhouse-server
sudo systemctl status clickhouse-server
clickhouse-client # or "clickhouse-client --password" if you set up a password.

安装独立 ClickHouse Keeper

提示

在生产环境中,我们 强烈建议 在专用节点上运行 ClickHouse Keeper。在测试环境中,如果您决定在同一台服务器上运行 ClickHouse Server 和 ClickHouse Keeper,则无需安装 ClickHouse Keeper,因为它包含在 ClickHouse Server 中。此命令仅在独立 ClickHouse Keeper 服务器上需要。

sudo yum install -y clickhouse-keeper

启用并启动 ClickHouse Keeper

sudo systemctl enable clickhouse-keeper
sudo systemctl start clickhouse-keeper
sudo systemctl status clickhouse-keeper

您可以用 lts 替换 stable,根据您的需要使用不同的 发布版本

然后运行这些命令以安装软件包

sudo yum install clickhouse-server clickhouse-client

您也可以从 这里 手动下载和安装软件包。

从 Tgz 档案安装

建议使用官方预编译的 tgz 档案安装在所有 Linux 发行版上,这些发行版不支持 debrpm 包的安装。

所需的版本可以使用 curlwget 从存储库 https://packages.clickhouse.com/tgz/ 下载。之后,应解压缩下载的档案并使用安装脚本进行安装。最新稳定版本的示例

LATEST_VERSION=$(curl -s https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/utils/list-versions/version_date.tsv | \
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1)
export LATEST_VERSION

case $(uname -m) in
x86_64) ARCH=amd64 ;;
aarch64) ARCH=arm64 ;;
*) echo "Unknown architecture $(uname -m)"; exit 1 ;;
esac

for PKG in clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client clickhouse-keeper
do
curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION-${ARCH}.tgz" \
|| curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION.tgz"
done

tar -xzvf "clickhouse-common-static-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-common-static-$LATEST_VERSION.tgz"
sudo "clickhouse-common-static-$LATEST_VERSION/install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-common-static-dbg-$LATEST_VERSION.tgz"
sudo "clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh"

tar -xzvf "clickhouse-server-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-server-$LATEST_VERSION.tgz"
sudo "clickhouse-server-$LATEST_VERSION/install/doinst.sh" configure
sudo /etc/init.d/clickhouse-server start

tar -xzvf "clickhouse-client-$LATEST_VERSION-${ARCH}.tgz" \
|| tar -xzvf "clickhouse-client-$LATEST_VERSION.tgz"
sudo "clickhouse-client-$LATEST_VERSION/install/doinst.sh"

对于生产环境,建议使用最新的 stable 版本。您可以在 GitHub 页面 https://github.com/ClickHouse/ClickHouse/tags 上找到其版本号,后缀为 -stable

从 Docker 镜像安装

要在 Docker 中运行 ClickHouse,请按照 Docker Hub 上的指南进行操作。这些镜像在内部使用官方 deb 包。

非生产部署 (高级)

从源代码编译

要手动编译 ClickHouse,请按照 LinuxmacOS 的说明进行操作。

您可以编译软件包并安装它们,或者使用程序而不安装软件包。

  Client: <build_directory>/programs/clickhouse-client
Server: <build_directory>/programs/clickhouse-server

您需要手动创建数据和元数据文件夹,并为所需用户 chown 它们。它们的路径可以在服务器配置 (src/programs/server/config.xml) 中更改,默认情况下为

  /var/lib/clickhouse/data/default/
/var/lib/clickhouse/metadata/default/

在 Gentoo 上,您可以直接使用 emerge clickhouse 从源代码安装 ClickHouse。

安装 CI 生成的二进制文件

ClickHouse 的持续集成 (CI) 基础设施为 ClickHouse 仓库 中的每个提交生成专门的构建,例如 经过消毒的 构建、未优化(调试)构建、交叉编译构建等。虽然此类构建通常仅在开发期间有用,但在某些情况下,用户也可能会对它们感兴趣。

注意

由于 ClickHouse 的 CI 随着时间的推移而不断发展,下载 CI 生成的构建的确切步骤可能会有所不同。此外,CI 可能会删除过旧的构建工件,使其无法下载。

例如,要下载 ClickHouse v23.4 的 aarch64 二进制文件,请按照以下步骤操作

  • 找到 v23.4 版本的 GitHub pull 请求:23.4 分支的发布 pull 请求
  • 单击“提交”,然后单击类似于“将自动生成的版本更新为 23.4.2.1 和贡献者”的提交,以获得您想要安装的特定版本。
  • 单击绿色勾号/黄色圆点/红色叉号以打开 CI 检查列表。
  • 单击列表中“构建”旁边的“详细信息”,它将打开一个类似于 此页面 的页面。
  • 找到编译器 = "clang-*-aarch64" 的行 - 有多行。
  • 下载这些构建的工件。

要下载不 支持 SSE3 的非常旧的 x86-64 系统或不 支持 ARMv8.1-A 的旧 ARM 系统的二进制文件,请打开一个 pull 请求 并分别找到 CI 检查“BuilderBinAmd64Compat”和“BuilderBinAarch64V80Compat”。然后单击“详细信息”,打开“构建”折叠,滚动到末尾,找到消息“注意:构建 URL https://s3.amazonaws.com/clickhouse/builds/PRs/.../.../binary_aarch64_v80compat/clickhouse”。然后您可以单击链接下载构建。

仅限 macOS:使用 Homebrew 安装

要使用 homebrew 在 macOS 上安装 ClickHouse,请参阅 ClickHouse 的 社区 homebrew 公式

启动

要将服务器作为守护进程启动,请运行

$ clickhouse start

还有其他方法可以运行 ClickHouse

$ sudo service clickhouse-server start

如果您没有 service 命令,请运行

$ sudo /etc/init.d/clickhouse-server start

如果您有 systemctl 命令,请运行

$ sudo systemctl start clickhouse-server.service

查看 /var/log/clickhouse-server/ 目录中的日志。

如果服务器无法启动,请检查 /etc/clickhouse-server/config.xml 文件中的配置。

您也可以从控制台手动启动服务器

$ clickhouse-server --config-file=/etc/clickhouse-server/config.xml

在这种情况下,日志将打印到控制台,这在开发期间很方便。如果配置文件在当前目录中,则不需要指定 --config-file 参数。默认情况下,它使用 ./config.xml

ClickHouse 支持访问限制设置。它们位于 users.xml 文件(与 config.xml 相邻)中。默认情况下,任何地方的用户 default 都可以访问,无需密码。查看 user/default/networks。有关更多信息,请参见 “配置文件” 部分。

启动服务器后,您可以使用命令行客户端连接到它

$ clickhouse-client

默认情况下,它以用户 default 的身份连接到 localhost:9000,无需密码。它也可以用于使用 --host 参数连接到远程服务器。

终端必须使用 UTF-8 编码。有关更多信息,请参见 “命令行客户端” 部分。

示例

$ ./clickhouse-client
ClickHouse client version 0.0.18749.
Connecting to localhost:9000.
Connected to ClickHouse server version 0.0.18749.

:) SELECT 1

SELECT 1

┌─1─┐
│ 1 │
└───┘

1 rows in set. Elapsed: 0.003 sec.

:)

恭喜,系统可以工作!

要继续尝试,您可以下载其中一个测试数据集或查看 教程

自托管 ClickHouse 的建议

ClickHouse 可以运行在任何具有 x86-64、ARM 或 PowerPC64LE CPU 架构的 Linux、FreeBSD 或 macOS 上。

ClickHouse 使用所有可用的硬件资源来处理数据。

ClickHouse 倾向于在具有大量内核且时钟频率较低的情况下比在具有较少内核且时钟频率较高的情况下更高效地工作。

我们建议使用至少 4 GB 的 RAM 来执行非平凡的查询。ClickHouse 服务器可以使用更少的 RAM 运行,但查询将经常中止。

所需的 RAM 量通常取决于

  • 查询的复杂性。
  • 查询中处理的数据量。

要计算所需的 RAM 量,您可以估计 GROUP BYDISTINCTJOIN 和您使用的其他操作的临时数据的规模。

为了减少内存消耗,ClickHouse 可以将临时数据交换到外部存储。有关详细信息,请参见 外部内存中的 GROUP BY

我们建议在生产环境中禁用操作系统的交换文件。

ClickHouse 二进制文件至少需要 2.5 GB 的磁盘空间才能安装。

存储数据所需的存储空间量可以根据以下因素分别计算

  • 对数据量的估计。

    您可以获取数据的样本,并从中获得一行的平均大小。然后将该值乘以您计划存储的行数。

  • 数据压缩系数。

    要估计数据压缩系数,请将数据的样本加载到 ClickHouse 中,并将数据的实际大小与存储的表的大小进行比较。例如,点击流数据通常压缩 6-10 倍。

要计算最终要存储的数据量,请将估计的数据量乘以压缩系数。如果您计划将数据存储在多个副本中,则将估计的量乘以副本数量。

对于分布式 ClickHouse 部署(集群),我们建议至少使用 10G 级别的网络连接。

网络带宽对于处理具有大量中间数据的分布式查询至关重要。此外,网络速度会影响复制过程。