Starrocks基于S3部署存算分离集群

目录

一.存算分离的优势

二.存算分离的安装和部署

一.FE的部署


最近尝试部署了基于S3的存算分离集群,现对部署过程进行整理。

存算分离功能从3.0开始支持。

一.存算分离的优势

相对于早期的存算一体架构,存算分离有下面优势:

  1. 廉价且可无缝扩展的存储,有效降低存储成本。
  2. 弹性可扩展的计算能力。由于数据不存储在 CN 节点中,因此集群无需进行跨节点数据迁移或 Shuffle 即可完成扩缩容。
  3. 热数据的本地磁盘缓存,用以提高查询性能。
  4. 可选异步导入数据至对象存储,提高导入效率。
  5. 在查询命中缓存的情况下,存算分离集群的查询性能与存算一体集群性能一致。

存算分离的架构如下:

二.存算分离的安装和部署

       存算分离的安装部署包扣FE和CN的部署,没有BE的部署,以下部署都以Starrocks的3.1.3版本为例。

       集群运行环境的部署与存算一体的部署一样,主要是虚拟内存的关闭,防火墙的关闭等等;

1.S3环境的配置

       由于是基于S3的存储部署,需先确保FE和CN对远程的S3环境是可以访问的,如果是AWS S3,可以使用IAM user-based方式通过aws访问S3,具体操作如下;

        在安装了aws环境的节点上执行aws configure命令,按照提示配置相应的访问地址和账号密码等信息,通过aws命令查看和操作s3

        查看s3目录下的文件:aws s3 --endpoint-url="S3环境的url地址" --no-verify-ssl  ls     

aws的相关命令很多,可以参考官方通过 AWS CLI 使用 API 级(s3api)命令 - AWS Command Line Interface

2.FE的部署

     对于FE的配置,需要在fe.conf中添加以下配置信息

# 是否存算分离模式

#shared_nothing(一体化存储,默认),shared_data(存算分离)

run_mode = shared_data

#云原生元数据服务监听端口。默认值:6090。
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3
aws_s3_path = <s3_path>
aws_s3_region = <region>
aws_s3_endpoint = <endpoint_url>
aws_s3_access_key = <access_key>
aws_s3_secret_key = <secret_key>

### 存算分离架构的概念 存算分离是一种将存储和计算资源解耦的设计理念,其核心在于通过独立扩展存储和计算的能力来优化系统的性能、成本和灵活性。相比于传统的存算一体架构,在存算分离模式下,存储和计算各自作为独立模块运行,能够更好地满足不同业务场景的需求[^1]。 ### 存算分离架构的实现方式 #### 1. **基于云服务** 使用云计算平台提供的弹性存储和计算能力是实现存算分离的一种常见方法。例如,Amazon S3 提供对象存储功能,而 EC2 则负责计算任务,两者之间通过网络协议通信完成数据交互[^4]。 #### 2. **容器化技术** 容器编排工具(如 Kubernetes)支持动态调度计算节点,并结合分布式文件系统(如 Ceph 或 GlusterFS),从而构建高效的存算分离环境。这种方案允许快速调整计算资源配置而不影响底层存储稳定性。 #### 3. **软件定义存储 (SDS) 和计算** 软件定义的技术使得硬件设备的功能更多依赖于上层管理软件而非物理特性本身。因此,利用 SDS 可以创建灵活可伸缩的数据仓库;与此同时,借助虚拟机或裸金属服务器执行复杂运算操作,则构成了完整的存算分离体系结构。 ### 存算分离的应用场景 #### 大数据分析 对于需要频繁访问海量静态数据集的大规模分析作业来说,采用存算分离模型非常合适。因为这样不仅可以减少不必要的数据复制过程所带来的开销,还能让多个不同的查询引擎共享同一份原始资料副本[^2]。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Example") \ .getOrCreate() df = spark.read.format("parquet").load("s3a://bucket/data/") result = df.groupBy("category").sum() result.write.mode(&#39;overwrite&#39;).csv("hdfs:///output/results.csv") ``` 上述代码片段展示了如何在一个典型的存算分离环境中读取来自云端的对象存储中的 Parquet 文件并将其结果写回到 HDFS 中去的过程。 #### 实时流处理 当面对持续不断产生的高吞吐量事件流时,比如金融交易监控或是社交媒体趋势跟踪等应用领域,往往会选择像 Apache Flink 这样的实时计算框架配合 Kafka Connectors 来连接外部持久化数据库实例形成端到端流水线工作流程。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值