某全球领先网络解决方案提供商:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 的改造实践

导读:某全球领先网络解决方案提供商 早期数据平台采用了多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等),面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot 、 Iceberg 及 Kyuubi 技术栈,依赖于 Doris 的实时数据湖能力及高性能 OLAP 分析能力,统一数据湖仓及查询分析引擎,显著提升了查询性能及系统稳定性,同时实现资源成本降低 30%。

某全球领先网络解决方案提供商数据平台从早期的多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等)改造为基于 Apache Doris 的统一架构。使用 Doris 替换了 Trino、Pinot 、 Iceberg 及 Kyuubi 技术栈,统一数据湖仓及查询分析引擎。显著提升了查询性能及系统稳定性,同时实现资源成本降低 30%。新架构目前已应用于 CCA Peak Ports 项目、Dashboard 系统、统一认证授权等业务场景中。

早期架构及痛点

为适配复杂的业务需求,早期架构融合了多种技术栈。数据源通过 Kafka 进行数据抽取,由 UDP 调度系统(Unified Data Platform:调度 ETL/Spark/Flink 等数据处理任务的平台)将数据调度并存储到湖仓层的 Iceberg 中。Trino、Kyuubi 收到查询请求后提供查询服务,Pinot 主要用于 OLAP 分析。

早期架构及痛点.PNG

由于该架构技术栈多样、结构复杂,在实际应用中引发了诸多问题:

  • 运维困难: 多种数据库并存,运维管理工作也变得繁琐且困难。
  • 资源利用率低:数据冗余严重,查询入口不统一,难以实现 CPU 和内存资源的高效利用。
  • 数据一致性问题频发:多个技术栈中数据独立计算,计算口径不一致,常常引发用户负面反馈。
  • 数据治理挑战: 元数据来源多样且格式各异,数据的准确性和一致性难以保障,直接影响了数据治理的效率。

基于 Apache Doris 统一技术栈

01 技术选型

因此迫切需要统一技术栈、降低技术架构的复杂度,同时希望实现性能提升、降低使用成本及简化运维。经过调研,他们发现 Apache Doris 具备的特性能够很好满足这些需求。具体如下:

  • 数据湖能力: Apache Doris 支持 Multi-Catalog 多源数据目录,通过扩展 Catalog 和存储插件,无需将数据物理集中至统一的存储空间,仅借助 Apache Doris 即可实现多个异构数据源的统一联邦分析。目前支持 Hive、 Iceberg、Hudi、Paimon、Elasticsearch、
<think>好的,我现在需要解决用户的问题:如何使用TrinoIceberg读取存储在Google Cloud Storage(GCS)上的数据。首先,我得理清楚整个流程,确保每一步都正确。 首先,用户提到了TrinoIceberg,这两个都是大数据处理中常用的工具。Trino是一个分布式SQL查询引擎,而Iceberg是一种表格式,用于管理大规模数据集。用户的数据存储在GCS上,所以需要配置TrinoIceberg来访问GCS。 第一步,我应该考虑Iceberg的配置。因为Iceberg需要知道如何与GCS交互,可能需要使用Hadoop的GCS连接器。Iceberg通常依赖于Hadoop的文件系统实现,所以可能需要添加相关的JAR文件到Trino的类路径中。例如,Google的hadoop-connector-gcs库,这个库允许Hadoop兼容的系统访问GCS。 接下来,配置TrinoTrino需要知道如何连接到Iceberg目录,并且该目录需要指向GCS的位置。在Trino的catalog配置文件中,比如iceberg.properties,需要指定catalog的类型(如hive或nessie),以及相关的Hive Metastore配置。同时,文件系统的URI应该是gs://路径,指向GCS的存储桶。 然后,可能需要设置GCS的认证。通常,GCS使用服务账户的JSON密钥文件进行身份验证。因此,需要在Trino的配置中指定这个密钥文件的路径,或者设置环境变量GOOGLE_APPLICATION_CREDENTIALS。这一步需要确保Trino进程有权限访问这个密钥文件,并且路径配置正确。 另外,Iceberg表的位置需要指向GCS的路径,例如gs://bucket-name/path/to/table。创建表时,使用LOCATION参数指定这个路径,这样Iceberg就知道将数据存储在GCS中。 可能还需要处理一些依赖冲突,比如确保使用的Hadoop版本与GCS连接器兼容,或者排除某些冲突的依赖项,比如Guava库的不同版本。 测试时,用户可能需要先创建Iceberg表,并插入一些数据,然后通过Trino查询,确认数据正确存储在GCS上,并且能够被读取。如果遇到权限问题,需要检查服务账户的权限是否足够,是否能够访问指定的存储桶。 总结一下,步骤大致包括:配置Iceberg使用GCS作为存储,设置Trino的catalog指向Iceberg,处理认证和依赖,最后创建和测试表。需要确保所有配置文件的路径和参数正确,尤其是GCS的URI和认证信息。同时,注意日志中的错误信息,以便排查配置问题。</think>要使用TrinoIceberg读取存储在Google Cloud Storage(GCS)上的数据,需完成以下步骤: --- ### **1. 配置Iceberg表格式支持GCS** Iceberg通过Hadoop文件系统抽象层支持GCS,需添加以下依赖: - **Hadoop GCS连接器**:将`hadoop-connector-gcs`库(如`gcs-connector-hadoop3-latest.jar`)放入Trino的`plugin/trino-iceberg`目录[^1]。 - **排除冲突依赖**:在Trino的`plugin/iceberg`配置中排除与Hadoop版本冲突的库(如Guava)。 --- ### **2. 配置Trino连接Iceberg Catalog** 在Trino的`etc/catalog`目录下创建Iceberg Catalog配置文件(如`iceberg.properties`): ```properties connector.name=iceberg iceberg.catalog.type=hive hive.metastore.uri=thrift://<hive-metastore-host>:9083 hive.gcs.credentials-file=/path/to/service-account-key.json hive.gcs.use-access-token=false fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS ``` --- ### **3. 设置GCS认证** - **服务账户密钥**:在GCP创建服务账号并生成JSON密钥文件,配置`hive.gcs.credentials-file`指向该文件。 - **环境变量**(可选):设置`GOOGLE_APPLICATION_CREDENTIALS`环境变量指向密钥文件路径。 --- ### **4. 创建Iceberg表指向GCS** 通过Trino执行DDL语句时指定GCS路径: ```sql CREATE TABLE iceberg.default.sample_table ( id bigint, data varchar ) WITH ( location = 'gs://<your-bucket>/path/to/table' ); ``` --- ### **5. 验证读写操作** - **写入数据**: ```sql INSERT INTO iceberg.default.sample_table VALUES (1, 'test'); ``` - **查询数据**: ```sql SELECT * FROM iceberg.default.sample_table; ``` --- ### **关键配置项总结** | 配置项 | 值示例/说明 | |--------------------------|---------------------------------------------| | Catalog类型 | `iceberg.catalog.type=hive`(或`nessie`) | | GCS文件系统实现类 | `fs.gs.impl=...GoogleHadoopFileSystem` | | 密钥文件路径 | `hive.gcs.credentials-file=/path/to/key.json`| | 存储路径格式 | `gs://<bucket>/<path>` | --- ### **常见问题排查** 1. **权限错误**:确保服务账号拥有`storage.objectAdmin`权限。 2. **依赖冲突**:检查Trino日志中的`NoSuchMethodError`或`ClassNotFoundException`。 3. **路径格式错误**:确认表路径以`gs://`开头且存储桶存在。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值