如果您是一名技术人员并使用 Mac,那么您在新机器上所做的第一件事实际上就是安装Homebrew包管理器。
几乎所有通过 Homebrew 提供的东西都可以通过从源代码构建或仅在可用时解压二进制文件来手动安装。然而,每一个软件都安装了所有依赖项,部署在一个隔离的地方,可以在不留下痕迹和污染系统的情况下删除,稍后正确升级,而这一切都只需一个命令,这种感觉是非常值得的。Homebrew 为我们做到了这一点。
这同样适用于 ClickHouse。虽然安装过程归结为下载二进制文件,在其上设置可执行标志,以及(可选)运行自部署命令,但能够以系统且安全的方式完成所有这些操作是几乎所有系统都长期要求的功能。对于 Linux,可以使用 DEB 和 RPM 软件包以及列出它们的存储库。另一方面,我们的 Homebrew Tap 为 macOS 解决了这个问题。
立即开始
假设您在系统中正确安装了 Homebrew,请执行(避免使用 sudo):
# First, add the altinity/clickhouse tap and install the clickhouse formula from it in one command.
$ brew install altinity/clickhouse/clickhouse
...
# Then, (re)start the server.
$ brew services restart altinity/clickhouse/clickhouse
...
# Finally, execute a simple query using the client.
$ clickhouse-client -q 'SELECT version()'
21.12.2.1
根据您的macOS版本和架构,第一个命令可能需要1分钟(如果有预编译版本可用),或者最多需要3个小时(如果从源代码进行构建)。但这就是全部!您已成功在Mac上本地运行了ClickHouse服务器和客户端!
您可以在这里停下来,享受您的ClickHouse,但如果您想获得更多控制和更好的理解,请继续阅读,了解有关详细信息以及如何充分利用这个Tap和它提供的Formula的方法。
术语
Homebrew 是macOS上最受欢迎的第三方软件包管理器(也可用于Linux,不过在Linux上几乎没人使用)。一旦安装完成,它提供了brew命令,用于安装、卸载或升级软件,以及运行这些软件提供的服务。安装非常简单,只需执行项目首页上的命令,并按照指示进行操作,指示并不多。
Formula(复数形式为formulae)是一个安装、卸载和构建软件包的配方。
Tap 是一个formulae储存库。初始安装的Homebrew包含由Homebrew团队自己维护的默认核心tap。其他任何人都可以创建自己的第三方tap,用户可以随意添加。
Keg-only formula 是一个安装后不会链接到主要UNIX风格目录结构中的formula。例如,当需要同时安装不同版本的同一软件时,就会使用Keg-only formula。
Bottle 是真正的二进制归档文件,其中包含预编译的软件包。如果formula没有与用户的目标平台相关联的bottle,当用户尝试安装该formula时,brew命令将自动从源代码构建软件包。
如何使用 tap?
- 添加
altinity/clickhouse tap
首先,我们需要通过注册自定义Tap来告诉 Homebrew 安装在哪里查找 ClickHouse 的公式:
$ brew tap altinity/clickhouse
这个操作只需执行一次,我们的Homebrew安装将记住它。
Tap通常表示为GitHub存储库,在添加时,Homebrew会根据其标准命名规范和GitHub存储库URL解析规则自动查找存储库。
altinity/clickhouse tap包含几个不同的formulae和别名,以提供便利。您可以通过执行以下命令列出它们(以及tap的其他元数据):
$ brew tap-info --json altinity/clickhouse
以下是当前在tap中可用的formulae和别名的列表:
Formulae:
Aliases:
新的版本将在每个相应的ClickHouse发布之后添加。
- 安装ClickHouse
一旦我们的Homebrew安装知道在哪里查找其他formulae,我们可以要求它安装它们:
$ brew install clickhouse
上述命令将安装ClickHouse的最新版本formula,其中包括服务器、客户端以及通常包含在组合clickhouse可执行文件中的其他实用工具。如果有bottle可用,安装过程可能非常快速(请参阅下文),否则,它将开始一个冗长的从源代码构建过程。
请耐心等待并阅读安装成功后打印出来的注意事项(Caveats)部分。
稍后,您可以通过执行以下命令来升级已安装的软件包:
# Make sure you stopped any running server and client instances, if any.
$ brew upgrade clickhouse
请注意,在这里(以及之后),我们在提及formula时省略了altinity/clickhouse/...部分。这是可以接受的,因为在其他已知的tap(包括Homebrew默认提供的核心tap)中没有其他名为clickhouse的formula存在,因此不会出现冲突和歧义。
但是,对于来自此tap的clickhouse-cpp和clickhouse-odbc formula而言,情况并非如此。它们也存在于Homebrew的核心tap中,因此如果您想使用我们这个tap中的版本,需要通过它们的完整名称引用这些formula,即altinity/clickhouse/clickhouse-cpp和altinity/clickhouse/clickhouse-odbc。我们鼓励您安装这些版本,因为它们是根据原始开发人员的建议构建的,而在核心tap中的formula由于Homebrew维护人员强加的限制,不始终是可能的选择。
- [可选] 启动 ClickHouse 服务
切勿使用 sudo。启动 ClickHouse 服务器的推荐方法是通过 Homebrew services 命令:
$ brew services start clickhouse
请注意,该启动命令还将使该服务能够在系统引导时启动。如果服务器进程因任何原因停止,它将自动重新启动。
如果您想手动运行服务器进程,则需要传递标志来告诉它在哪里查找反映此安装的配置等:
$ $(brew --prefix clickhouse)/bin/clickhouse server --config-file $(brew --prefix)/etc/clickhouse-server/config.xml --pid-file $(brew --prefix)/var/run/clickhouse-server/clickhouse-server.pid
- [可选] 运行 ClickHouse 客户端
现在 ClickHouse 已安装,并且服务器正在运行,以下命令将启动客户端并将其连接到本地运行的服务器:
$ clickhouse client -q 'SELECT version()'
21.12.2.1
服务路径
Homebrew将所有内容安装在其自己的前缀下,并将其与系统分开。每个软件包都会安装在其专用的前缀下,然后(除非是 keg-only),链接到主要的UNIX-style目录结构中。已安装软件可能使用的其他路径(如 .../etc/ 中的配置文件、.../var/log/ 中的日志等)也是如此。
以下是查找Homebrew安装的ClickHouse使用的目录的位置:
除 ClickHouse 安装目录的内容外,所有这些文件和目录都将在安装之间保留。
对于版本化公式,路径是相同的,只有 ClickHouse 安装目录才会有相应的后缀,例如 $(brew --prefix clickhouse@21.11)。
多个版本
tap 定义了多个版本化公式,您可能想要试验这些公式或与默认公式并行使用。所有版本化的公式都可以手动安装并彼此共存,也可以与最新的公式共存。但是,请确保通过 brew 服务启动时只有一个服务器实例同时运行,因为它们将使用相同的数据和配置路径、端口等。
所有带有版本号的formula都被标记为keg-only,这意味着它们不会链接到默认路径中。只有最新版本的ClickHouse被安装为默认版本,并且可以直接调用。要安装和运行特定版本的formula,请执行以下操作:
$ brew install clickhouse@21.11
...
# Make sure this is going to be the only running server instance.
$ brew services start clickhouse@21.11
...
$ $(brew --prefix clickhouse@21.11)/bin/clickhouse client -q 'SELECT version()'
21.11.8.4
Bottles和从源代码构建
Formulae是从源代码构建软件包的配方,但它们也可以引用可以直接安装的预编译软件包,从而节省时间。
这些软件包称为Bottles。对于此tap中的formula,可以在以下平台上获得Bottles:
- macOS Monterey on Intel
- macOS Monterey on Apple silicon
我们计划在不久的将来扩展支持的macOS版本列表。
如果您的平台不在此列表中,仍然可以安装该formula,只需等待ClickHouse从源代码中构建即可。如果是这种情况,建议添加 --verbose 标志以查看进度:
$ brew install --verbose clickhouse
构建时间可能需要20分钟到3小时不等。
您还可以构建formula的最新版本源代码:
$ brew install --HEAD --verbose clickhouse
上面的命令将检查与该特定版本相对应的分支的提示(例如,分支21.11等clickhouse@21.11)并从源代码构建它。HEAD 版本的配方没有瓶子。
对于 macOS 用户来说,运行 ClickHouse 意味着手动下载二进制文件、设置路径、启动命令并自行执行所有步骤。或者下载源代码并开始漫长的过程来编译 ClickHouse 本身 -然后手动将二进制文件放置在需要的地方。
借助brew,macOS 开发人员和系统操作员可以输入一些命令并检索他们喜欢的 ClickHouse 版本(无论是社区版本还是 Altinity 稳定版本),并立即使用闪电般快速的分析数据库。