Skip to main content

用 Docker Compose 启动 RisingWave

本章讲解了如何在单台机器上用 Docker Compose 启动 RisingWave。该方式下,数据可以存储到您选择的存储服务中,并能获得更好的监控和分析效果。

本方式中,RisingWave 会作为一个一体化服务运行。RisingWave 的所有组件,即 Compute 节点、Frontend 节点、Meta 节点和 Compactor 节点,将处于同一进程,它们会在不同的线程执行,无需单独启动。

然而,请注意,这种方式并不支持部分重要功能,如故障转移和资源管理。因此,我们不建议在生产部署中使用这种方式。对于生产部署,请使用 Helm 在 Kubernetes 上部署 RisingWave使用 Operator 在 Kubernetes 上部署 RisingWave

我们使用预定义的 Docker Compose 配置文件来设置 RisingWave 集群。

该集群还包括以下第三方组件:

  • Grafana
  • Etcd
  • MinIO
  • Prometheus

下载源文件

开始之前,请您先确保已经安装 Docker Desktop,并在启动集群之前运行。

然后,请克隆 risingwave 仓库。

git clone https://github.com/risingwavelabs/risingwave.git

接下来,在终端中打开仓库,并运行以下命令,以导航到 docker 目录。

cd docker

启动 RisingWave 集群

现在,您可以启动 RisingWave 集群。以下是可以作为 RisingWave 存储后端的存储服务:

对于以上每种服务,我们都有对应的 Docker Compose 配置文件,您可以在进行必要配置后使用。

MinIO

这是默认选项。要使用 MinIO 作为存储后端启动独立的 RisingWave 集群,请运行以下命令:

docker compose up -d
命令未找到?

如果您遇到了命令未找到的报错,请注意,Compose V2 中的默认命令行句法以 docker compose 开头。详情请见 Docker 文档

而如果您正在使用 Compose V1,请改用 docker-compose

我想在多节点集群中将每个 RisingWave 组件单独启动。

您也可以启动一个多节点集群,在该集群中,所有 RisingWave 组件,包括 Compute 节点、Frontend 节点、Meta 节点和 Compactor 节点,会都作为单独的进程启动。

默认情况下,此模式使用 MinIO 作为 RisingWave 的存储后端。

要使用 MinIO 作为存储后端启动多节点 RisingWave 集群,请运行以下命令:

docker compose -f docker-compose-distributed.yml up

S3 或 S3 兼容存储

要使用 S3 作为存储后端,请在 /docker/aws.env 中配置您的 AWS 凭证信息。

要使用像腾讯云 COS 这样的 S3 兼容存储服务,您需要通过 /docker/aws.env 中的 RW_S3_ENDPOINT 参数配置端点。请注意不要在端点中包含存储桶名称。

docker-compose-with-s3.yml 中,通过 hummock+s3 参数指定存储桶名称。

- "hummock+s3://<bucket-name>"

然后,运行以下命令以启动 RisingWave 集群:

docker compose -f docker-compose-with-s3.yml up

谷歌云存储、阿里云 OSS、Azure Blob 存储

首先,在 /docker/multiple_object_storage.env 中配置您想要使用的云服务的凭证。

然后,在相应的 docker-compose-with-service_name.yml 文件中(例如,对于 谷歌云存储(Google Cloud Storage),使用 docker-compose-with-gcs.yml),通过 hummock+<service_name> 参数指定存储桶名称。

 - "hummock+<service_name>://<bucket-name>"

运行以下命令以启动您选择的云存储服务的 RisingWave 集群。

docker compose -f docker-compose-with-service_name.yml up

请一定记得要将 docker-compose-with-service_name.yml 替换为相应配置文件的完整文件名。

HDFS

首先,将您的 HADOOP_HOME 挂载到 Compactor 节点、Compute 节点和 Meta 节点的卷中。

然后,在 /docker-compose-with-hdfs.yml 中,通过 hummock+hdfs 参数指定集群名称。

- "hummock+hdfs://<cluster_name>"

运行以下命令启动 RisingWave 集群:

docker compose -f docker-compose-with-hdfs.yml up

华为云 OBS

要使用华为云 OBS 作为存储后端,您需要在 multiple_object_storage.env 文件中配置您的 OBS 凭证信息。请取消以下环境变量的注释并设置它们:OBS_ENDPOINTOBS_ACCESS_KEY_IDOBS_SECRET_ACCESS_KEY。注意不要在端点中包含存储桶名称。

然后,在 docker-compose-with-obs.yml 文件中,通过 hummock+obs 参数指定存储桶名称。将 <bucket-name> 替换为您的 OBS 存储桶名称。

--state-store hummock+obs://<bucket-name>

要以 OBS 作为存储后端启动 RisingWave 集群,请运行以下命令:

docker compose -f docker-compose-with-obs.yml up

连接到 RisingWave

RisingWave 启动并运行后,您需要通过 Postgres 交互式终端 psql 连接到它,以便您可以向 RisingWave 发出查询并查看查询结果。如果您尚未安装 psql,请首先安装 psql

psql -h localhost -p 4566 -d dev -U root

关于 psql 选项的说明:

  • -h 选项用于指定要连接的 PostgreSQL 服务器的主机名或 IP 地址。
  • -p 选项用于指定服务器监听的端口号。
  • -d 选项用于指定要连接的数据库的名称。
  • -U 选项用于指定进行连接的数据库用户。
  • 默认情况下,PostgreSQL 服务器使用 root 用户来连接 dev 数据库。注意,此用户连接时不需要密码。

管理您的 RisingWave 集群

当集群运行时,您可以监控 RisingWave 及其附加组件的状态,并在必要时进行调整。

  • RisingWave 数据看板

    RisingWave 数据看板显示了集群的概览,以及集群上可用的源、接收器、表、物化视图和索引,其地址为 http://127.0.0.1:5691/

  • Grafana

    请访问 http://127.0.0.1:3001/ 并搜索 risingwave_dashboard。在这个数据看板中,您可以查看内部指标,如节点数、内存消耗、吞吐量和延迟。您可以使用这些指标来排除故障并优化集群性能。

  • MinIO

    MinIO 实例的地址为 http://127.0.0.1:9400/,请使用以下凭证登录。

    • 用户名:hummockadmin
    • 密码:hummockadmin
  • Prometheus

Prometheus 的地址为 http://127.0.0.1:9500/。Prometheus 无需凭证。您可以使用它进行实时告警。

常见问题

您可能遇到的一个常见问题是存储空间不足。例如:

Error { code: "XMinioStorageFull", message: "Storage backend has reached its minimum free drive threshold. Please delete a few objects to proceed."

这个问题通常出现在使用 Docker Desktop 的 macOS 上。Docker Desktop 在 macOS Hypervisor 内运行,所有数据,包括日志、镜像和卷,都存储在此处。macOS Hypervisor 对磁盘容量有一个默认限制。如果您遇到此错误,可以通过清理未使用的容器或镜像来解决。另一个选项是增加磁盘镜像大小限制,方法是:点击菜单栏中的 Docker Desktop 图标,然后转到 偏好设置 > 资源 > 高级,调整磁盘镜像大小的滑块,为 Docker 镜像分配更多空间。如果您使用的是其他平台,请确保本地磁盘上有足够的空间。