使用自签名 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的实现
没有需求创造需求 有没有想过一件事情,假如你的手机关机了,而且在家里怎么都找不到的情况? 那么通过另外一种手机进行查找是不是可以?听上去有点搞笑,但实际上确实有这样的需求存在。实现方案是用超低功耗蓝牙&#…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...