使用自签名 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) 来调节对数据的访问。

相关推荐
Kendra91918 分钟前
服务器上架流程
运维·服务器·网络·ip·磁盘
Lsir10110_24 分钟前
【Linux】线程初步——线程概念以及接口认识
linux·运维·服务器
cuber膜拜42 分钟前
Tenacity 原理与基本使用
服务器·网络·python·装饰器模式·tenacity
cuber膜拜43 分钟前
PyBreaker 原理与基本使用
服务器·网络·python·pybreaker
Albert Edison1 小时前
【Python】文件
android·服务器·python
未来之窗软件服务1 小时前
服务器运维(三十三)日志分析ssh日志工具—东方仙盟
运维·服务器·ssh·仙盟创梦ide·东方仙盟
梦雨羊1 小时前
搭建服务器进行测试
linux·运维·服务器
久绊A1 小时前
WordPress Fontsy Plugin SQL注入漏洞深度剖析与防御指南
安全·漏洞
哼?~1 小时前
磁盘与文件系统
linux
Bigbig.2 小时前
Linux 挖矿病毒深度排查与修复实录
linux·安全