Separate storage and compute
在存储与计算分离的系统中,数据存储在低成本、可靠的远端存储系统中,如 Amazon S3、Google Cloud Storage、Azure Blob Storage 和其他兼容 S3 的存储如 MinIO。热数据会被本地缓存,当缓存命中时,查询性能可与存储计算耦合架构相媲美。计算节点(CN)可以根据需求在几秒内添加或移除。这种架构降低了存储成本,确保了更好的资源隔离,并提供了弹性和可扩展性。
本教程涵盖:
- 在 Docker 容器中运行 StarRocks
- 使用 MinIO 作为对象存储
- 配置 StarRocks 以实现共享数据
- 导入两个公共数据集
- 使用 SELECT 和 JOIN 分析数据
- 基本数据转换(ETL 中的 T)
使用的数据由纽约市开放数据和 NOAA 的国家环境信息中心提供。
这两个数据集都非常大,因为本教程旨在帮助您接触 StarRocks 的使用,我们不会导入过去 120 年的数据。您可以在分配了 4 GB RAM 的机器上运行 Docker 镜像并导入这些数据。对于更大规模的容错和可扩展部署,我们有其他文档,并将在后续提供。
本文档包含大量 信息,内容以步骤为主,技术细节在后面。这是为了按以下顺序实现这些目的:
- 允许读者在共享数据部署中导入数据并分析这些数据。
- 提供共享数据部署的配置细节。
- 解释数据导入过程中的基本数据转换。
前提条件
Docker
- Docker
- 分配给 Docker 的 4 GB RAM
- 分配给 Docker 的 10 GB 可用磁盘空间
SQL 客户端
您可以使用 Docker 环境中提供的 SQL 客户端,或使用您系统上的客户端。许多兼容 MySQL 的客户端都可以使用,本指南涵盖了 DBeaver 和 MySQL Workbench 的配置。
curl
curl 用于向 StarRocks 发起数据导入任务,并下载数据集。通过在操作系统提示符下运行 curl 或 curl.exe 来检查是否已安装 curl。如果未安装 curl,请在此获取 curl。
/etc/hosts
本指南中使用的导入方法是 Stream Load。Stream Load 连接到 FE 服务以启动导入任务。然后 FE 将任务分配给后端节点,即本指南中的 CN。为了使导入任务能够连接到 CN,CN 的名称必须在您的操作系统中可用。将以下行添加到 /etc/hosts:
127.0.0.1 starrocks-cn
术语
FE
前端节点负责元数据管理、客户端连接管理、查询规划和查询调度。每个 FE 在其内存中存储并维护一份完整的元数据副本,确保 FEs 之间的服务无差别。
CN
计算节点负责在共享数据部署中执行查询计划。
BE
后端节点负责在无共享部署中进行数据存储和执行查询计划。
本指南不使用 BEs,此信息仅供您了解 BEs 和 CNs 之间的区别。
编辑您的 hosts 文件
本指南中使用的导入方法是 Stream Load。Stream Load 连接到 FE 服务以启动导入任务。然后 FE 将任务分配给后端节点——本指南中的 CN。为了使导入任务能够连接到 CN,CN 的名称必须在您的操作系统中可用。将以下行添加到 /etc/hosts:
127.0.0.1 starrocks-cn
下载实验文件
需要下载三个文件:
- 部署 StarRocks 和 MinIO 环境的 Docker Compose 文件
- 纽约市交通事故数据
- 天气数据
本指南使用 MinIO,它是根据 GNU Affero 通用公共许可证提供的兼容 S3 的对象存储。
创建一个目录来存储实验文件
mkdir quickstart
cd quickstart
下载 Docker Compose 文件
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/docker-compose.yml
下载数据
下载这两个数据集:
纽约市交通事故数据
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/NYPD_Crash_Data.csv