作者:尚卓燃(PsiACE)
澳门科技大学在读硕士,Databend 研发工程师实习生
Apache OpenDAL(Incubating) Committer

随着架构的不断迭代和更新,大数据系统的查询目标也从大吞吐量查询逐步转移转向快速的交互式查询,对于查询的及时响应提出了更高要求。许多企业的数仓/数据湖中都有 PB 级的数据,其中绝大多数都属于旧有系统中的历史数据,很少更新,移动起来很麻烦,重新组织元数据也需要花费大量的时间。需要解决的问题是:如何在保证现有的数据和元数据不变的情况下加速查询。

上图是一个典型的使用 Databend 加速 Hive 查询的架构。用户使用 trino 、Spark 等引擎将数据纳入 Hive 进行管理,数据的存放位置则位于 S3 、GCS 、HDFS 等存储服务之中。引入 Databend 可以带来更好的查询性能。
和 trino 以及大多数支持 Hive Catalog / Connector 的查询引擎一样,Databend 可以复用 Hive 除了运行时(查询引擎)之外的其他组件,包括用于管理文件和底层存储的存储服务和管理 SQL 表到文件和目录映射的 Hive MetaStore 。
Databend 中的数据按三层进行组织: 通过这种形式,用户无需向 Databend 中导入数据,就可以直接查询位于 Hive/Iceberg Catalog 中的数据,并获得 Databend 的性能保证。 接下来,让我们通过两个例子,了解 Databend 是如何加速不同存储服务下的 Hive 查询的。 Hive + HDFS 的实验环境可以使用 https://github.com/PsiACE/databend-workshop/tree/main/hive-hdfs 中的环境搭建 接下来,让我们一起准备数据: 由于 HDFS 支持需要使用 参考 Deploying a Standalone Databend ,使用带有 HDFS 特性的 Databend 分发(databend-hdfs-*),部署一个单节点的 Databend 实例。 通过 BendSQL 连接这个 Databend 实例,然后创建对应的 Hive Catalog ,记得要通过 在上面的语句中,我们创建了一个底层存储使用 HDFS 的 Hive Catalog: 通过 让我们尝试运行一个简单的 Trino + Hive + MinIO 的实验环境可以使用 GitHub - sensei23/trino-hive-docker: trino + hive + minio with postgres in docker compose 进行搭建。 在执行完 运行下述命令可以打开 trino 命令行工具: 接着创建一个小型的 TPCH 客户表。注意,为了满足 Databend 使用要求,这里需要使用 Parquet 格式: 查询对应的 Hive 元数据,可以看到像下面这样的信息: 参考 Deploying a Standalone Databend 部署一个单节点的 Databend 实例。 通过 BendSQL 连接这个 Databend 实例,然后创建对应的 Hive Catalog ,记得要通过 在上面的语句中,我们创建了一个底层存储使用 MinIO 的 Hive Catalog: 通过 让我们尝试运行一个简单的 catalog -> database -> table ,catalog 作为数据最大一层,会包含所有的数据库和表。通过 CREATE CATALOG 语句,用户可以轻松创建 Hive Catalog 。在执行查询时,需要按 的格式指定到表。
SELECT * FROM <catalog>.<database>.<table>;Workshop :使用 Databend 加速 Hive 查询
使用 HDFS 存储
docker-compose up -d
libjvm.so 和 Hadoop 的若干 Jar 包,请确保你安装了正确的 JDK 环境并配置相关的环境变量:
CONNECTION 字段为其配置对应的存储后端:TYPE 指定创建 Hive 类型的 Catalog 。CONNECTION 用于指定 HIVE 相关的存储/元数据访问信息,可以阅读 Docs | Connection Parameters 了解更多相关信息。METASTORE_ADDRESS 对应 Hive MetaStore 的地址URL 对应 HDFS 的 PathNAME_NODE 则对应 HDFS 的 Name Node 地址SELECT 查询,验证其是否能够正常工作:SELECT * FROM hive_hdfs_ctl.abhighdb.alumni;
使用 S3-like 对象存储
docker-compose up -d 等前置步骤后,先进入 MinIO 控制面板,创建一个名为 tpch 的 Bucket 。
docker container exec -it docker-compose-trino-coordinator-1 trino

CONNECTION 字段为其配置对应的存储后端:TYPE 指定创建 Hive 类型的 Catalog 。CONNECTION 用于指定 HIVE 相关的存储/元数据访问信息,可以阅读 Docs | Connection Parameters 了解更多相关信息。METASTORE_ADDRESS 对应 Hive MetaStore 的地址URL 则对应 MinIO 的 Bucket 或者 PathAWS_KEY_ID 和 AWS_SECRET_KEY 则对应访问时的校验,这里使用了 MinIO 服务的用户名和密码ENDPOINT_URL 是 MinIO 对象存储服务的 API 端点SELECT 查询,验证其是否能够正常工作:SELECT * FROM hive_minio_ctl.tpch.customer LIMIT 5;
提示
IDEA如何运行SpringBoot项目(超详细截图)
机器学习算法:线性回归、逻辑回归、决策树和随机森林解析
nrf52840烧录配置(协议栈+APP)
Blender+fSpy实现3D渲染结果与2D图像融合
python学习-基础知识总结
基于Oracle数据库高校学生宿舍管理系统
Kotlin实现微信界面切换(Fragment练习)
干货分享:有哪些好用的ocr图片文字识别软件?
美国RAKsmart:裸机云站群服务器配置详解