|
| 1 | +# StarRocks x RustFS 对接性能测试 |
| 2 | + |
| 3 | +传统的HDFS存储一体架构给企业的扩容和降本造成了很大的压力。 |
| 4 | + |
| 5 | +近年开始存算分离与湖仓一体(Lakehouse)越来越火。特别是2024年数据架构蓬勃发展的一年,越来越多的企业选择将数据湖作为统一的存储层,并在之上构建包括BI、AI在内的丰富的数据应用。 |
| 6 | +Apache Iceberg 作为数据湖领域内炙手可热的开源项目在2024年同样取得显著的进步,社区主导的 Rest Catalog 变得越来越完善,iceberg V3 格式也趋向成熟,包括 Snowflake, AWS,Apple,Databricks在内的公司都将 Iceberg 作为其首选的数据湖表格式,这无疑推动着 Iceberg 逐步成为数据湖表格式的标准。 |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +## Star Rocks介绍 |
| 11 | + |
| 12 | +StarRocks 是一款新一代的极速全场景 MPP (Massively Parallel Processing) 数据库。它主要面向数据分析领域,提供了高性能、实时分析的能力。 |
| 13 | + |
| 14 | +它的优点非常之多,包括: |
| 15 | + |
| 16 | +- 节省成本:分离计算和存储可以实现独立扩展和优化资源利用率,从而显着节省成本。 |
| 17 | +- 高性能:StarRocks 使用了列式存储和分布式架构,具有高吞吐量和低延迟的特点。 |
| 18 | +- 可扩展性:它还提供了独立扩展对象存储和计算的能力,从而实现更好的敏捷性并最终实现更精确的扩展。 |
| 19 | +- 高效的 SQL 查询:StarRocks 提供了多种查询优化技术,如列式存储、索引、查询计划优化等,使得 SQL 查询效率提高。 |
| 20 | +- 支持多种数据源:StarRocks 支持多种数据源,如 MySQL、Hive、HBase 等,可以轻松地导入数据。 |
| 21 | +- 支持多种数据格式:StarRocks 支持多种数据格式,如 Parquet、ORC |
| 22 | +- 灵活性:解耦可以实现更大的运营灵活性,使企业能够选择最适合特定任务的工具和服务。 |
| 23 | +- 存算分离支持: 全面支持S3本地部署的存储系统,如MinIO、RustFS等。 |
| 24 | + |
| 25 | + |
| 26 | +## 先决条件 |
| 27 | + |
| 28 | +下载并运行RustFS。 |
| 29 | + |
| 30 | +创建一个桶: |
| 31 | + |
| 32 | +在 SQL 客户端中运行以下命令,确保使用之前在 RustFS 控制台中创建的访问密钥和机密: |
| 33 | + |
| 34 | +~~~ |
| 35 | +CREATE STORAGE VOLUME shared |
| 36 | +TYPE = S3 |
| 37 | +LOCATIONS = ("s3://starrocks/shared/") |
| 38 | +PROPERTIES |
| 39 | +( |
| 40 | + "enabled" = "true", |
| 41 | + "aws.s3.endpoint" = "http://rustfs:9000", |
| 42 | + "aws.s3.use_aws_sdk_default_behavior" = "false", |
| 43 | + "aws.s3.enable_ssl" = "false", |
| 44 | + "aws.s3.use_instance_profile" = "false", |
| 45 | + "aws.s3.access_key" = "{YOUR ACCESS KEY}", |
| 46 | + "aws.s3.secret_key"= "{YOUR SECRET KEY}" |
| 47 | +); |
| 48 | +
|
| 49 | +SET shared AS DEFAULT STORAGE VOLUME; |
| 50 | +
|
| 51 | +~~~ |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | +## 入门 |
| 56 | + |
| 57 | +打开终端并运行此命令来创建要处理的目录并下载 Docker 撰写文件。 |
| 58 | + |
| 59 | +~~~ |
| 60 | +mkdir sr-quickstart |
| 61 | +cd sr-quickstart |
| 62 | +curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/docker-compose.yml |
| 63 | +~~~ |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +## 下载数据 |
| 68 | + |
| 69 | +在终端窗口中运行以下命令以在starrocks-fe容器中打开 Bash shell,从而允许您与容器的文件系统交互并在其中执行命令。 |
| 70 | + |
| 71 | +~~~ |
| 72 | +docker compose exec starrocks-fe bash |
| 73 | +~~~ |
| 74 | + |
| 75 | +运行这些命令以在容器内创建快速启动目录。 |
| 76 | + |
| 77 | +~~~ |
| 78 | +mkdir quickstart |
| 79 | +cd quickstart |
| 80 | +~~~ |
| 81 | + |
| 82 | +运行这些命令将两个数据集下载到您刚刚创建的文件夹中。 |
| 83 | + |
| 84 | + |
| 85 | +~~~ |
| 86 | +curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/NYPD_Crash_Data.csv |
| 87 | +
|
| 88 | +curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/72505394728.csv |
| 89 | +
|
| 90 | +~~~ |
| 91 | + |
| 92 | + |
| 93 | +## 创建表 |
| 94 | + |
| 95 | +~~~ |
| 96 | +CREATE TABLE `t3` ( |
| 97 | + `id` int(11) NULL COMMENT "" |
| 98 | +) ENGINE=OLAP |
| 99 | +DUPLICATE KEY(`id`) |
| 100 | +COMMENT "OLAP" |
| 101 | +DISTRIBUTED BY RANDOM |
| 102 | +PROPERTIES ( |
| 103 | +"bucket_size" = "4294967296", |
| 104 | +"compression" = "LZ4", |
| 105 | +"datacache.enable" = "true", |
| 106 | +"enable_async_write_back" = "false", |
| 107 | +"replication_num" = "1", |
| 108 | +"storage_volume" = "rustfs" |
| 109 | +); |
| 110 | +~~~ |
| 111 | + |
| 112 | +## RustFS 机器配置 |
| 113 | + |
| 114 | +| 硬件 |规格说明| |
| 115 | +| --- | --- | |
| 116 | +| 供应商 | 阿里云 | |
| 117 | +| 区域 | 杭州 | |
| 118 | +| 机型 | ECS.c6g.8xlarge | |
| 119 | +| CPU |8 vCPU | |
| 120 | +|内存 |64GB | |
| 121 | +|磁盘 |1.8T NVMe SSD| |
| 122 | +|网络 |基础 2.5Gbps| |
| 123 | + |
| 124 | + |
| 125 | +## 批量导入性能 |
| 126 | + |
| 127 | +总计耗时约 8min 42s: |
| 128 | + |
| 129 | +~~~ |
| 130 | +*************************** 2. row *************************** |
| 131 | + JobId: 14778 |
| 132 | + Label: store_sales |
| 133 | + State: FINISHED |
| 134 | + Progress: ETL:100%; LOAD:100% |
| 135 | + Type: BROKER |
| 136 | + Priority: NORMAL |
| 137 | + ScanRows: 2879987999 |
| 138 | + FilteredRows: 0 |
| 139 | +UnselectedRows: 0 |
| 140 | + SinkRows: 2879987999 |
| 141 | + EtlInfo: NULL |
| 142 | + TaskInfo: resource:N/A; timeout(s):144000; max_filter_ratio:0.0 |
| 143 | + ErrorMsg: NULL |
| 144 | + CreateTime: 2025-01-14 16:59:42 |
| 145 | + EtlStartTime: 2025-01-14 16:59:43 |
| 146 | + EtlFinishTime: 2025-01-14 16:59:43 |
| 147 | + LoadStartTime: 2025-01-14 16:59:43 |
| 148 | +LoadFinishTime: 2025-01-14 17:08:24 |
| 149 | + TrackingSQL: |
| 150 | + JobDetails: {"All backends":{"bb10190d-67a6-4637-8d08-68e800c64b73":[10065,10066,10067,10068,10069,10070]},"FileNumber":400,"FileSize":259169829133,"InternalTableLoadBytes":481093033465,"InternalTableLoadRows":2879987999,"ScanBytes":259169829133,"ScanRows":2879987999,"TaskNumber":1,"Unfinished backends":{"bb10190d-67a6-4637-8d08-68e800c64b73":[]}} |
| 151 | + Warehouse: default_warehouse |
| 152 | +2 rows in set (0.00 sec) |
| 153 | +~~~ |
| 154 | + |
| 155 | +<img src="/images/blog/starrocks-rustfs.png" title="性能监控" /> |
| 156 | + |
| 157 | + |
| 158 | +## 结论 |
| 159 | + |
| 160 | +Star Rocks 与RustFS 在MPP的存算分离上的测试结果和性能表现非常优秀。 |
| 161 | + |
| 162 | +更多内容投稿请联系:hello@rustfs.com。 |
0 commit comments