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

相关推荐
九河云2 分钟前
如何选择适合的AWS EC2实例类型
服务器·云计算·aws
Suckerbin1 小时前
Hms?: 1渗透测试
学习·安全·网络安全
hjjdebug1 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩1 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花1 小时前
第六章:DNS域名解析服务器
运维·服务器
Spring_java_gg2 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻2 小时前
Linux:认识文件系统
linux·运维·服务器