当前位置: 首页 > news >正文

使用自签名 TLS 将 Dremio 连接到 MinIO

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Dremio 是一个开源的分布式分析引擎,为数据探索、转换和协作提供简单的自助服务界面。Dremio 的架构建立在 Apache Arrow(一种高性能列式内存格式)之上,并利用 Parquet 文件格式实现高效存储。有关 Dremio 的更多信息,请参阅Dremio 入门。

MinIO 是一款高性能的分布式对象存储系统,专为云原生应用而设计。它结合了可扩展性和高性能,使每个工作负载(无论要求多么苛刻)都触手可及。最近的基准测试在 GET 上实现了 325 GiB/s (349 GB/s),在 PUT 上实现了 165 GiB/s (177 GB/s),只有 32 个现成的 NVMe SSD 节点。

在本教程中,我们将向您展示如何配置 Dremio 以连接到使用自签名 TLS 证书的 MinIO。这是更常见的用例之一,我们让 SUBNET 的客户一次又一次地询问他们如何配置这样的东西。

MinIO 和 Dremio

让我们使用以下配置创建一个 kind 集群

kind: ClusterapiVersion: kind.x-k8s.io/v1alpha4nodes:- role: control-plane- role: worker- role: worker- role: worker- role: worker
kind create cluster --config kind-config.yml

将 MinIO 算子部署到我们上面创建的类集群。

kubectl minio init

创建一个 MinIO 租户,以便我们可以为 Demio 创建一个存储桶。

kubectl create ns tenant-nskubectl minio tenant create tenant-1 --servers 4 --volumes 4 --capacity 4Gi --namespace tenant-ns

获取 MinIO 租户凭据并记下它们。

kubectl get secrets/tenant-1-user-1 -n tenant-ns -oyaml | yq '.data."CONSOLE_ACCESS_KEY"' | base64 -dkubectl get secrets/tenant-1-user-1 -n tenant-ns -oyaml | yq '.data."CONSOLE_SECRET_KEY"' | base64 -d

端口转发到租户 minio 的服务,以便我们可以在后续步骤中使用 mc 它来访问它。

kubectl port-forward svc/minio -n tenant-ns 9443:443

为租户创建别名,并创建用于使用 Dremio 进行测试的示例存储桶。

mc alias set myminio https://localhost:9443/ WZaBqLMGYViJ0Sba XMPAlfUUM4rnaAnGTxPKzeYYcBiRlUVr --insecuremc mb myminio/openlake --insecure

克隆 openlakedremio github存储库。

git clone https://github.com/minio/openlakegit clone https://github.com/dremio/dremio-cloud-tools

复制 MinIO helm 值 YAML 并更新它们,如下所示。

cp ~/openlake/dremio/charts/values.minio.yaml ~/dremio-cloud-tools/charts/dremio_v2/
distStorage:type: "aws"aws:bucketName: "openlake"path: "/dremio"authentication: "accessKeySecret"credentials:accessKey: "9RW081BM1STLAWQHXS07"secret: "L2GCeGRpHUbaQwrCEcW7tnmExuhmUkYN4c2ly49E"extraProperties: |<property><name>fs.s3a.endpoint</name><value>minio.tenant-ns.svc.cluster.local</value></property><property><name>fs.s3a.path.style.access</name><value>true</value></property><property><name>dremio.s3.compat</name><value>true</value></property>

更新 dremio helm 模板以禁用证书检查。请注意,有多个文件需要更新。

dremio_v2/templates/dremio-coordinator.yaml

- name: DREMIO_JAVA_SERVER_EXTRA_OPTSvalue: >-{{- include "dremio.coordinator.extraStartParams" $ | nindent 12 -}}-Dzookeeper=zk-hs:2181-Dservices.coordinator.enabled=true-Dservices.coordinator.master.enabled=false-Dservices.coordinator.master.embedded-zookeeper.enabled=false-Dservices.executor.enabled=false-Dservices.conduit.port=45679-Dcom.amazonaws.sdk.disableCertChecking=true

dremio_v2/templates/dremio-executor.yaml

- name: DREMIO_JAVA_SERVER_EXTRA_OPTSvalue: >-{{- include "dremio.executor.extraStartParams" (list $ $engineName) | nindent 12 -}}-Dzookeeper=zk-hs:2181-Dservices.coordinator.enabled=false-Dservices.coordinator.master.enabled=false-Dservices.coordinator.master.embedded-zookeeper.enabled=false-Dservices.executor.enabled=true-Dservices.conduit.port=45679-Dservices.node-tag={{ $engineName }}-Dcom.amazonaws.sdk.disableCertChecking=true

`dremio_v2/templates/dremio-master.yaml

`

- name: DREMIO_JAVA_SERVER_EXTRA_OPTSvalue: >-{{- include "dremio.coordinator.extraStartParams" $ | nindent 12 -}}-Dzookeeper=zk-hs:2181-Dservices.coordinator.enabled=true-Dservices.coordinator.master.enabled=true-Dservices.coordinator.master.embedded-zookeeper.enabled=false-Dservices.executor.enabled=false-Dservices.conduit.port=45679-Dcom.amazonaws.sdk.disableCertChecking=true

更新所有配置后,使用 helm 图表安装 Dremio。

helm install dremio dremio_v2 -f dremio_v2/values.minio.yaml --namespace dremio --create-namespace

您可能需要等待几分钟才能确保所有 Dremio pod 都能正常运行

Dremio 启动后,验证openlake在存储桶中创建的新前缀。

mc ls myminio/openlake/dremio/uploads --insecure

端口转发 dremio-client 以访问 Dremio 控制台 http://localhost:9047。

kubectl port-forward svc/dremio-client -n dremio 9047

若要访问 Dremio 门户,请创建一个用户并加载一个示例文件,以便根据下面的屏幕截图运行查询进行验证。

创建新用户。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加新作业。

设置格式。

测试要运行的查询

验证上传到存储桶的示例 CSV 文件。

mc ls --summarize --recursive myminio/openlake/dremio/uploads --insecure

就这么简单。

最后的思考

MinIO 旨在为现代数据湖以及在其上运行的数据分析和 AI/ML 工作负载提供支持。MinIO 包括许多用于处理由许多小文件组成的大型数据集的优化,这在现代数据湖中很常见。

对于数据湖来说,也许更重要的是,MinIO保证了持久性和不变性。此外,MinIO 还对传输和驱动器中的数据进行加密,并使用 IAM 和基于策略的访问控制 (PBAC) 来调节对数据的访问。

http://www.lryc.cn/news/382377.html

相关文章:

  • 嵌入式系统软件开发环境_2.一般架构
  • 单门户上集成多种数据库查询入口
  • 华芯微特SWM34-使用定时器捕获快速解码EV1527编码
  • 小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影
  • playwright vscode 插件源码解析
  • Mysql: SQL-DDL
  • Java中的加密与解密:实现安全的数据传输
  • 基于SSM的美食推荐系统
  • Pycharm利用Anaconda环境
  • Python函数魔术:深入理解18个高级函数特性
  • 在大型单页应用(SPA)中,如何处理状态管理的
  • 力扣78 子集
  • C语言从头学24——函数原型
  • Vue中使用ElementUI组件Form组件的校验validate
  • PostgreSQL性能优化之分区表 #PG培训
  • SAPUI5基础知识9 - JSON Module与数据绑定
  • 解决vue3使用ref 获取不到子组件属性问题
  • 使用STL容器还是Qt容器?
  • Android 2ndBLE的实现
  • 常见硬件工程师面试题(二)
  • java构造方法的重载
  • webpack 压缩图片
  • JAVA每日作业day6.24
  • 鸿蒙开发系统基础能力:【@ohos.hiTraceChain (分布式跟踪)】
  • .git目录解读
  • 如何在Java中处理InterruptedException异常?
  • 深入解读Netty中的NIO:原理、架构与实现详解
  • Vim和Nano简介
  • mysql的information_schema浅析
  • 力扣爆刷第153天之TOP100五连刷26-30(接雨水、环形链表、最长上升子序列)