使用自签名 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: Cluster

apiVersion: kind.x-k8s.io/v1alpha4

nodes:

  - 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-ns

kubectl 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 -d

kubectl 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 --insecure

mc mb myminio/openlake --insecure

克隆 openlakedremio github存储库。

复制代码
git clone https://github.com/minio/openlake

git 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_OPTS

      	value: >-

        	{{- 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_OPTS

      	value: >-

        	{{- 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_OPTS

      	value: >-

        	{{- 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) 来调节对数据的访问。

相关推荐
九河云1 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
七七七七073 小时前
【计算机网络】深入理解ARP协议:工作原理、报文格式与安全防护
linux·服务器·网络·计算机网络·安全
qq_5470261793 小时前
Flowable 工作流引擎
java·服务器·前端
奋斗的蛋黄4 小时前
网络卡顿运维排查方案:从客户端到服务器的全链路处理
运维·服务器·网络
wanhengidc5 小时前
云手机搬砖 尤弥尔传奇自动化操作
运维·服务器·arm开发·安全·智能手机·自动化
图图图图爱睡觉5 小时前
主机跟虚拟机ip一直Ping不通,并且虚拟机使用ifconfig命令时,ens33没有ipv4地址,只有ipv6地址
服务器·网络·tcp/ip
deephub6 小时前
FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM
服务器·人工智能·python·大语言模型·mcp
lhxcc_fly6 小时前
Linux网络--8、NAT,代理,网络穿透
linux·服务器·网络·nat
摇滚侠6 小时前
Spring Boot3零基础教程,Spring Boot 应用打包成 exe 可执行文件,笔记91 笔记92 笔记93
linux·spring boot·笔记
wow_DG6 小时前
【运维✨】云服务器公网 IP 迷雾:为什么本机看不到那个地址?
运维·服务器·tcp/ip