使用自签名 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
克隆 openlake
和 dremio 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) 来调节对数据的访问。
相关文章:

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

嵌入式系统软件开发环境_2.一般架构
1.Eclipse框架 嵌入式系统软件开发环境是可帮助用户开发嵌入式软件的一组工具的集合,其架构的主要特征离不开“集成”问题,采用什么样的架构框架是决定开发环境优劣主要因素。Eclipse框架是当前嵌入式系统软件开发环境被普遍公认的一种基础环境框架。目…...

单门户上集成多种数据库查询入口
(作者:陈玓玏) 开源项目,欢迎star哦,https://github.com/tencentmusic/cube-studio 在一家公司,我们通常会有多种数据库,每种数据库因为其特性承担不同的角色,比如mysql这种轻量…...

华芯微特SWM34-使用定时器捕获快速解码EV1527编码
在无线应用领域,很多433Mhz和315Mhz的遥控器,红外探测器,门磁报警器,无线门铃等都使用EV1527编码格式来发射数据。发射和接收均有对应的RF芯片完成,而且成本极低(目前市场价3毛钱不到)。接收芯片…...

小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影
解决方法:在导入的包中找到uni-data-select.vue,接着找到.uni-stat__select样式,把cursor: pointer去掉。 如果出现穿透问题,uni-select__selector的z-index加高,默认是2。...

playwright vscode 插件源码解析
Playwright vscode插件主要功能 Playwright是微软开发的一款主要用于UI自动化测试的工具,在vscode中上安装playwright vscode插件,可以运行,录制UI自动化测试。 playwright vscode插件主要包括两块功能,功能一是在Test Explorer中…...

Mysql: SQL-DDL
一.SQL通用语法 1.SQL可以单行或者多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 4.注释: 单行注释:注释内容或#注释内容(Mysql特有) 多行注释:/*注释内容*/ 二.SQL分类 1.D…...
Java中的加密与解密:实现安全的数据传输
Java中的加密与解密:实现安全的数据传输 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在当今信息安全至关重要的时代,保护数据的安全性…...
基于SSM的美食推荐系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的美食推荐系统,java项目。 ecli…...
Pycharm利用Anaconda环境
创建环境 conda create --name d2l python3.11 -y 激活环境 conda activate d2l 配置环境 以torch环境为例 我们可以按如下⽅式安装PyTorch的CPU或GPU版本: pip install torch pip install torchvision 我们的下⼀步是安装d2l包,以⽅便调取本书中经…...
Python函数魔术:深入理解18个高级函数特性
今天,我们将一起探索那些让代码瞬间变得优雅而强大的高级函数。准备好,让我们一起揭开它们的神秘面纱吧! 1. map():一招制胜,批量操作 想象一下,你需要给一个数字列表的每个元素加上5。普通的循环是不是让…...
在大型单页应用(SPA)中,如何处理状态管理的
在大型单页应用(SPA)中,如何处理状态管理的 在大型单页应用(SPA)中,状态管理是一个关键环节,确保数据的一致性和可预测的变更。以下是一些常见的状态管理方法: Redux: …...
力扣78 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1,2],[3],…...
C语言从头学24——函数原型
前面学习函数时已经知道必须先存在一个函数然后才能使用,且这个函数的位置还要在 main()函数之前,否则的话编译时会报错。但我们写程序时,main() 函数是程序入口,程序的主要部分都在 main() 函数中,且其它函数也都要通…...

Vue中使用ElementUI组件Form组件的校验validate
先准备一些el-form元素 这里面el-form中:model(v-bind:model)是单项绑定的,如果你写成了v-model""可能会出现校验没有效果的情况。 这是校验过后的结果了 现在开始使用下吧! 1.在el-form中绑定一个ref,名字自拟,后续触发检验结果…...

PostgreSQL性能优化之分区表 #PG培训
在处理大规模数据时,PostgreSQL的性能优化是一个非常重要的话题,其中分区表(Partitioned Tables)是提高查询和数据管理效率的重要手段。本文将详细介绍PostgreSQL分区表的概念、优势、创建与管理方法以及一些常见的优化策略。 #P…...

SAPUI5基础知识9 - JSON Module与数据绑定
1. 背景 在前面的博客中,我们已经学习了SAPUI5中视图和控制器的使用,在本篇博客中,让我们学习下MVC架构中的M-模型了。 SAPUI5中的JSON Model是一个客户端模型,可以用于在SAPUI5应用程序中处理和操作JSON数据。SAPUI5提供了绑定…...
解决vue3使用ref 获取不到子组件属性问题
需求: 父子组件使用<script setup>语法糖,父组件通过给子组件定义ref访问子组件内部属性或事件。 关键点: 子组件中,setup语法糖需要用defineExpose把要读取的属性和方法单独暴露出去,否则会访问失败…...
使用STL容器还是Qt容器?
在C编程中,选择合适的容器库对于编写高效、可维护的代码至关重要。两大主流选择是STL容器(如std::map,std::vector等)和Qt容器(如QMap,QVector等)。本文将探讨两者的优缺点,以帮助开…...
Android 2ndBLE的实现
没有需求创造需求 有没有想过一件事情,假如你的手机关机了,而且在家里怎么都找不到的情况? 那么通过另外一种手机进行查找是不是可以?听上去有点搞笑,但实际上确实有这样的需求存在。实现方案是用超低功耗蓝牙&#…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...