StarRocks 华为云 OBS 配置

这篇文章介绍了 StarRocks 访问华为云 OBS 的两套配置思路,并重点解释为什么并行文件系统场景需要 FE 和 BE 分别采用不同的访问实现。正文先说明普通 OBS 桶可以直接通过 S3 兼容 API 配置鉴权和外部表,但路径中含等号时需要额外参数避免 403;随后分析并行文件系统在 list 超过 1000 个文件时的兼容性问题,并给出 FE 使用华为云官方 Hadoop Jar、BE 继续走 S3 兼容 API,以及在 RCFile、Avro 等 JNI 场景下同步 Jar 和 core-site.xml 的完整方案。

不少用华为云的 OBS 用户,不知道怎么配置 StarRocks 才能正常访问 OBS,这里写一篇教程,简单说一下。

访问华为云有两种办法,一种是走 S3 的兼容 API,另外一种则是通过华为云自己官方的 Hadoop JAR 包进行访问。

如果你创建的是普通的 OBS 桶,那么走 S3 兼容 API 就行了,这个最方便,不需要什么改动。

但是如果你用了华为云的并行文件系统,那么你就会头疼了。你会发现,如果一个目录下面的文件数量超过 1000 个,你的 SQL 的查询结果少了。这是因为并行文件系统没有完全兼容标准的 S3 协议,导致 FE list 文件的时候,超过 1000 个文件就 list 不出来了,它只会保留前 1000 个文件。是的,他不会报错,只会自己偷偷摸摸的查询结果错了。

下面的教程均基于 StarRocks 最新版(3.2)进行说明。

常规 OBS 桶配置

这个最简单啦,这么配鉴权就行了:

"aws.s3.access_key"="ak",
"aws.s3.secret_key"="sk",
"aws.s3.endpoint"="obs.cn-north-4.myhuaweicloud.com"

比如建一个 SR 的文件外部表,这么建就行了:

CREATE external TABLE obs
(
  `ACTIVITY` varchar(65500)
) 
ENGINE=FILE
PROPERTIES
(
  "path" = "obs://test/load/foo.parquet",
  "format" = "parquet",
  "aws.s3.access_key"="ak",
  "aws.s3.secret_key"="sk",
  "aws.s3.endpoint"="obs.cn-north-4.myhuaweicloud.com"
);

但是如果你的访问路径存在 “=”,你会发现查询莫名其妙的 403(常见于 Hive 的分区表路径)。是的,这是因为华为云并没有完全兼容 S3,这里你需要在 be.conf 里面添加一个 aws_sdk_enable_compliant_rfc3986_encoding=true 配置项就行了。

并行文件系统

因为并行文件系统主要影响的就是 list 操作。而 StarRocks 的 list 操作均发生于 FE。所以整体的思路就是,FE 使用华为云官方的 Hadoop Jar,BE 则继续使用 S3 兼容 API 访问。

FE 配置

FE 配置和华为云官方的 Hadoop对接OBS 教程其实差不多。

https://github.com/huaweicloud/obsa-hdfs/tree/master/release 下载 jar 包,下载 hadoop-huaweicloud-3.1.1-hw-53.8.jar 这个 jar 包到 FE 的 fe/lib 目录下。

之后在 fe/conf 目录下配置如下 core-site.xml

<configuration> 
    <property>
        <name>fs.obs.impl</name>
        <value>org.apache.hadoop.fs.obs.OBSFileSystem</value>
    </property>
    <property>
        <name>fs.AbstractFileSystem.obs.impl</name>
    <value>org.apache.hadoop.fs.obs.OBS</value>
    </property>
    <property>
        <name>fs.obs.access.key</name>
        <value>ak</value>
    </property>
    <property>
        <name>fs.obs.secret.key</name>
        <value>sk</value>
    </property>
    <property>
        <name>fs.obs.endpoint</name>
        <value>obs.cn-east-3.myhuaweicloud.com</value>
    </property>
</configuration>

BE 配置

be/conf 目录下配置如下 be.conf

object_storage_access_key_id=ak
object_storage_secret_access_key=sk
object_storage_endpoint=obs.cn-east-3.myhuaweicloud.com
aws_sdk_enable_compliant_rfc3986_encoding=true

然后 SR 建 catalog,导入啥的,不要配置任何鉴权信息。比如我下面这个文件外部表的 case:

CREATE external TABLE obs
(
  `ACTIVITY` varchar(65500)
) 
ENGINE=FILE
PROPERTIES
(
  "path" = "obs://obs-sr-test-parallel/dir/foo.parquet",
  "format" = "parquet"
);

然后一查就灵:

mysql> select * from obs;
+----------+
| ACTIVITY |
+----------+
| A        |
| B        |
+----------+
2 rows in set (0.42 sec)

至此,就搞定了。

JNI 配置

如果你用到了 RCFile,Avro 等格式,那么还需要在 BE 侧额外配置一下 jar 包和 core-site.xml,这是因为 StarRocks BE 侧是通过 JNI 的方式访问这类不常见的格式,

把放在 FE 的 OBS jar 包拷贝一份到 be/lib/hive-reader-lib/ 目录下。把 FE 配置的 core-site.xml 放到 be/conf 目录下即可。

总结

鉴权千变万化,万变不离其中,最终的杀手锏基本都是通过 Hadoop Jar 来访问。不过如果你想让 StarRocks 完美的支持华为云 OBS,那么我建议你来水下代码吧。

关于别的厂商鉴权,可以看看我以前写的这个文章:StarRocks 全新云厂商鉴权系统食用指南

原创文章,作者:Smith,如若转载,请注明出处:https://www.inlighting.org/archives/starrocks-how-to-connect-obs

打赏 微信扫一扫 微信扫一扫
SmithSmith
上一篇 2023年10月28日 下午3:28
下一篇 2024年9月9日 下午9:05

相关推荐

  • StarRocks FE 在 IDEA 上开发环境设置

    这篇文章记录了如何在 M1 MacBook 上为 StarRocks FE 配置可直接运行和调试的 IDEA 开发环境,并补充说明这套方法对 Linux 环境也有参考价值。正文先梳理 Thrift、Protobuf、Maven、JDK 和 Python3 等基础依赖,再说明 `thirdparty` 目录、环境变量、源文件生成和 FE 编译步骤,随后重点介绍如何调整 IDEA 工程、复制运行所需目录、创建日志和元信息目录,以及修改 `fe.conf` 和启动参数,使 FE 能在本地正常启动并进入 Web UI。

    2022年7月2日
    5.0K3
  • StarRocks 常见疑难杂症

    这篇文章汇总了作者在使用 StarRocks 过程中遇到的一些常见疑难杂症及处理办法。当前内容主要围绕对象存储访问问题展开,包括官方 Release 包在 Ubuntu 上运行时因 SSL 证书路径不一致导致 AWS SDK 报错,以及使用 KS3、OBS 等兼容 S3 的存储时因路径中包含等号触发 403 的兼容性问题,并给出了通过补充证书文件和调整配置项规避这些故障的方法。

    2023年10月28日
    2.4K0
  • StarRocks perfect IDE development setup (Support IDEA & Clion)

    This article provides an English guide for setting up a workable StarRocks development environment with both IDEA and Clion, aiming to let contributors write code on a local MacBook while compiling and debugging on a remote Ubuntu server. It walks through local and remote dependency setup, the first full build of StarRocks, FE development and remote debug in IDEA, and BE development in Clion with remote toolchain, deployment mapping, generated source handling, and GDB-based debugging, so that FE and BE can both be developed with normal code navigation and analysis support.

    2023年1月20日
    2.0K0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


评论列表(5条)

  • jijj
    jijj 2024年4月26日 下午2:49

    真是太有用了,一直在找这方便的资料,点赞

  • Danny
    Danny 2024年3月8日 下午1:33

    试了下,成功了,感谢!!!