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

相关推荐
风曦Kisaki7 分钟前
#Linux进阶Day05:防火墙+VMware网络+sshd远程管理
linux·运维
blueSatchel14 分钟前
I2C驱动学习
linux·c语言
321.。34 分钟前
Linux 进程控制深度解析:从创建到替换的完整指南
linux·开发语言·c++·学习
一名优秀的码农1 小时前
vulhub系列-48-Hack_Me_Please(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
123过去1 小时前
trufflehog使用教程
linux·测试工具·安全
未知鱼2 小时前
Python安全开发之简易Xss检测工具(详细注释)
python·安全·xss
代码AC不AC2 小时前
【Linux】System V 通信方式
linux·消息队列·共享内存·信号量·system v
vortex52 小时前
vmware虚拟机设置启动时进入live cd
linux·网络安全
Lugas Luo2 小时前
Ascend 310B 定制 SDHCI 主机控制器源码深层次劫持与优化解析
linux·嵌入式硬件
钟智强2 小时前
Linux SSH密码爆破脚本,从原理到实践
linux·运维·ssh