当前位置: 首页 > news >正文

使用自签名 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

克隆 openlakedremio 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 是一个开源的分布式分析引擎&#xff0c;为数据探索、转换和协作提供简单的自助服务界面。Dremio 的架构建立在 Apache Arrow&#xff08;一种高性能列式内存格式&#xff09;之上&#xff0c;并利用 Parquet 文件格式实现高效存储。有关 Dremio 的更多信息&#xff0c;…...

嵌入式系统软件开发环境_2.一般架构

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

单门户上集成多种数据库查询入口

&#xff08;作者&#xff1a;陈玓玏&#xff09; 开源项目&#xff0c;欢迎star哦&#xff0c;https://github.com/tencentmusic/cube-studio 在一家公司&#xff0c;我们通常会有多种数据库&#xff0c;每种数据库因为其特性承担不同的角色&#xff0c;比如mysql这种轻量…...

华芯微特SWM34-使用定时器捕获快速解码EV1527编码

在无线应用领域&#xff0c;很多433Mhz和315Mhz的遥控器&#xff0c;红外探测器&#xff0c;门磁报警器&#xff0c;无线门铃等都使用EV1527编码格式来发射数据。发射和接收均有对应的RF芯片完成&#xff0c;而且成本极低&#xff08;目前市场价3毛钱不到&#xff09;。接收芯片…...

小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影

解决方法&#xff1a;在导入的包中找到uni-data-select.vue&#xff0c;接着找到.uni-stat__select样式&#xff0c;把cursor: pointer去掉。 如果出现穿透问题&#xff0c;uni-select__selector的z-index加高&#xff0c;默认是2。...

playwright vscode 插件源码解析

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

Mysql: SQL-DDL

一.SQL通用语法 1.SQL可以单行或者多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 4.注释: 单行注释:注释内容或#注释内容(Mysql特有) 多行注释&#xff1a;/*注释内容*/ 二.SQL分类 1.D…...

Java中的加密与解密:实现安全的数据传输

Java中的加密与解密&#xff1a;实现安全的数据传输 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在当今信息安全至关重要的时代&#xff0c;保护数据的安全性…...

基于SSM的美食推荐系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的美食推荐系统,java项目。 ecli…...

Pycharm利用Anaconda环境

创建环境 conda create --name d2l python3.11 -y 激活环境 conda activate d2l 配置环境 以torch环境为例 我们可以按如下⽅式安装PyTorch的CPU或GPU版本&#xff1a; pip install torch pip install torchvision 我们的下⼀步是安装d2l包&#xff0c;以⽅便调取本书中经…...

Python函数魔术:深入理解18个高级函数特性

今天&#xff0c;我们将一起探索那些让代码瞬间变得优雅而强大的高级函数。准备好&#xff0c;让我们一起揭开它们的神秘面纱吧&#xff01; 1. map()&#xff1a;一招制胜&#xff0c;批量操作 想象一下&#xff0c;你需要给一个数字列表的每个元素加上5。普通的循环是不是让…...

在大型单页应用(SPA)中,如何处理状态管理的

在大型单页应用&#xff08;SPA&#xff09;中&#xff0c;如何处理状态管理的 在大型单页应用&#xff08;SPA&#xff09;中&#xff0c;状态管理是一个关键环节&#xff0c;确保数据的一致性和可预测的变更。以下是一些常见的状态管理方法&#xff1a; Redux&#xff1a; …...

力扣78 子集

给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],[1,2],[3],…...

C语言从头学24——函数原型

前面学习函数时已经知道必须先存在一个函数然后才能使用&#xff0c;且这个函数的位置还要在 main()函数之前&#xff0c;否则的话编译时会报错。但我们写程序时&#xff0c;main() 函数是程序入口&#xff0c;程序的主要部分都在 main() 函数中&#xff0c;且其它函数也都要通…...

Vue中使用ElementUI组件Form组件的校验validate

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

PostgreSQL性能优化之分区表 #PG培训

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

SAPUI5基础知识9 - JSON Module与数据绑定

1. 背景 在前面的博客中&#xff0c;我们已经学习了SAPUI5中视图和控制器的使用&#xff0c;在本篇博客中&#xff0c;让我们学习下MVC架构中的M-模型了。 SAPUI5中的JSON Model是一个客户端模型&#xff0c;可以用于在SAPUI5应用程序中处理和操作JSON数据。SAPUI5提供了绑定…...

解决vue3使用ref 获取不到子组件属性问题

需求&#xff1a; 父子组件使用<script setup>语法糖&#xff0c;父组件通过给子组件定义ref访问子组件内部属性或事件。 关键点&#xff1a; 子组件中&#xff0c;setup语法糖需要用defineExpose把要读取的属性和方法单独暴露出去&#xff0c;否则会访问失败&#xf…...

使用STL容器还是Qt容器?

在C编程中&#xff0c;选择合适的容器库对于编写高效、可维护的代码至关重要。两大主流选择是STL容器&#xff08;如std::map&#xff0c;std::vector等&#xff09;和Qt容器&#xff08;如QMap&#xff0c;QVector等&#xff09;。本文将探讨两者的优缺点&#xff0c;以帮助开…...

Android 2ndBLE的实现

没有需求创造需求 有没有想过一件事情&#xff0c;假如你的手机关机了&#xff0c;而且在家里怎么都找不到的情况&#xff1f; 那么通过另外一种手机进行查找是不是可以&#xff1f;听上去有点搞笑&#xff0c;但实际上确实有这样的需求存在。实现方案是用超低功耗蓝牙&#…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...