用 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_ENDPOINT
、OBS_ACCESS_KEY_ID
和 OBS_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 镜像分配更多空间。如果您使用的是其他平台,请确保本地磁盘上有足够的空间。