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

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用

  • 一.Hive 简介
  • 二.Hive 搭建
    • 1.下载
    • 2.安装
      • 1.解压并配置 HIVE
      • 2.修改 hive-site.xml
      • 3.修改 hadoop 的 core-site.xml
      • 4.启动
  • 三.Hive 测试
    • 1.基础测试
    • 2.建库建表
    • 3.Java 连接测试
      • 1.Pom依赖
      • 2.Yarm 配置文件
      • 3.启动类
      • 4.配置类
      • 5.测试类

一.Hive 简介

Hive 是基于 Hadoop 的数据仓库工具,可以提供类 SQL 查询能力

二.Hive 搭建

1.下载

Hive 官网

Hive 下载地址(自选版本)

在这里插入图片描述

MySQL Java 驱动下载

在这里插入图片描述

2.安装

1.解压并配置 HIVE

## 1.创建安装目录
mkdir -p /usr/local/hive
## 2.将压缩包拷贝到服务器并解压
tar zxvf apache-hive-4.0.0-alpha-2-bin.tar.gz -C /usr/local/hive/
## 3.添加环境变量并刷新
echo 'export HIVE_HOME=/usr/local/hive/apache-hive-4.0.0-alpha-2-bin' >> /etc/profile
echo 'export PATH=${HIVE_HOME}/bin:${PATH}' >> /etc/profile
source /etc/profile
## 4.进入安装目录
cd $HIVE_HOME/conf
## 5.复制 hive-env.sh.template 并修改配置
cp hive-env.sh.template hive-env.sh
echo 'export JAVA_HOME=/usr/local/java/jdk-11.0.19' >> hive-env.sh
echo 'export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.6' >> hive-env.sh
echo 'export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop' >> hive-env.sh
echo 'export HIVE_HOME=/usr/local/hive/apache-hive-4.0.0-alpha-2-bin' >> hive-env.sh
echo 'export HIVE_CONF_DIR=${HIVE_HOME}/conf' >> hive-env.sh
echo 'export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib' >> hive-env.sh
## 6.复制 mysql-connector-j-8.0.33.jar 到 ${HIVE_HOME}/lib
tar zxvf mysql-connector-j-8.0.33.tar.gz
cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ${HIVE_HOME}/lib/
## 7.复制 cp hive-default.xml.template 并修改配置
cp hive-default.xml.template hive-site.xml

2.修改 hive-site.xml

使用 MobaXterm 连接虚拟机,并用文本编辑工具打开 hive-site.xml 修改:

在这里插入图片描述

注释掉同名的默认配置,或参考下面信息,直接修改默认配置值
同时全局替换下面两个变量值,避免 hiveserver2 启动报错
1.${system:java.io.tmpdir} => /tmp (Linux 系统默认的临时目录)
2.${system:user.name}      => root (本系统当前操作用户名)
3.hive.server2.thrift.client.user 配置用户 root , 同时需要修改 hadoop 的 core-site.xml 为 root  配置代理信息
4.hadoop 集群搭建参考前面文章
<!--配置 Hive Metastore 此处使用 mysql & 转义 &amp;--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.1.201:3306/hive?characterEncoding=UTF8&amp;createDatabaseIfNotExist=true&amp;serverTimezone=GMT%2B8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>admin</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>12345678</value></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property><!-- nn 配置主机地址/用户/密码 --><property><name>hive.server2.thrift.bind.host</name><value>nn</value></property><property><name>hive.server2.thrift.client.user</name><value>root</value><description>Username to use against thrift client. default is 'anonymous'</description></property><property><name>hive.server2.thrift.client.password</name><value>123456</value><description>Password to use against thrift client. default is 'anonymous'</description></property> <property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><property><name>hive.server2.active.passive.ha.enable</name><value>true</value></property><property><name>hive.metastore.warehouse.dir</name><value>hdfs://nn:9000/user/hive/warehouse</value><description>hdfs 地址</description></property><property><name>hive.metastore.schema.verification</name><value>true</value></property><property><name>hive.metastore.uris</name><value>thrift://nn:9083</value></property>

初始化元数据

在这里插入图片描述

查看库 Hive

在这里插入图片描述

3.修改 hadoop 的 core-site.xml

## 1.进入配置目录
cd $HADOOP_HOME//etc/hadoop
## 2.修改 core-site.xml
vim core-site.xml
## 3.增加以下内容<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

在这里插入图片描述

4.启动

## 1.初始化
schematool -initSchema -dbType mysql
## 2.启动 hadoop 集群
cd $HADOOP_HOME/sbin && start-all.sh
## 3.启动 hive
mkdir -p /var/log/hive
cd ${HIVE_HOME}/bin
nohup hive --service metastore 2>&1 >> /var/log/hive/metastore.log &
nohup hive --service hiveserver2 2>&1 >> /var/log/hive/hiveserver2.log &## 4.杀死 hive 进程
kill -9 `ps aux | grep hiveserver2 | grep -v grep | awk '{print $2}'`
kill -9 `ps aux | grep metastore | grep -v grep | awk '{print $2}'`
查看 Java 进程:jps

在这里插入图片描述

查看端口占用:lsof -i -P -n | grep LISTEN

在这里插入图片描述

查看默认日志:tail -200f /tmp/root/hive.log

在这里插入图片描述

日志发现一个报错:java.sql.SQLException: Referencing column 'ACTIVE_EXECUTION_ID' and referenced column 'SCHEDULED_EXECUTION_ID' in foreign key constraint 'SCHEDULED_EXECUTIONS_SCHQ_ACTIVE' are incompatible.
因为 MySQL 版本为 8.0.33,可能导致了主外键字段类型不一致时的异常
对应初始化后的表和字段分别为:
SCHEDULED_EXECUTIONS - SCHEDULED_EXECUTION_ID
SCHEDULED_QUERIES    - ACTIVE_EXECUTION_ID
原来这两个字段一个为 int ,一个为 bigint 统一为 bigint 后就不报错了

三.Hive 测试

1.基础测试

## 1.控制台连接
hive
## 2.连接并输入用户名、密码
!connect jdbc:hive2://nn:10000
## 3.查看库
show databases;
## 4.退出
!quit

在这里插入图片描述

UI 访问:http://192.168.1.6:10002/

在这里插入图片描述

hdfs 查看: http://192.168.1.6:9870/explorer.html#/tmp/hive/root

在这里插入图片描述

2.建库建表

## 1.建库并设置存储位置
create database if not exists animal_db
comment "This is animal database"
location '/hive_database/animal_db';
## 2.查看库
show databases;
## 3.切换库
use animal_db;
## 4.创建表
create table if not exists dog_tb(name string,breed string,area string,feature string)
row format delimited fields terminated by ';';
## 5.从本地文件加载数据
load data local inpath '/home/dog_tb.txt' into table dog_tb;
## 6.查看数据
select * from dog_tb;
## 7.删除表
drop table dog_tb;
## 7.强制删库
drop database animal_db cascade ;

在这里插入图片描述

在这里插入图片描述

dog_tb.txt 
bomei;small;germany;white,small
bianmu;big;scotland;clever
tugou;all;china;clever,loyalty

3.Java 连接测试

1.Pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>hive-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><spring.version>2.7.8</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.32</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>4.0.0-alpha-2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.6</version></dependency></dependencies></project>

2.Yarm 配置文件

config:hivedriverClassName: org.apache.hive.jdbc.HiveDriverhiveurl: jdbc:hive2://192.168.1.6:10000/animal_dbhiveusername: roothivepassword: 123456

3.启动类

package org.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author Administrator*/
@SpringBootApplication
public class HiveApp {public static void main(String[] args) {//启动触发SpringApplication.run(HiveApp.class,args);}
}

4.配置类

package org.example.config;import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;/*** @author Administrator* @Description* @create 2023-08-02 21:42*/
@Component
public class HiveConfig {@Bean("hiveProperties")@ConfigurationProperties(prefix = "config")public Properties getConfig(){return new Properties();}@Beanpublic Connection start(@Qualifier("hiveProperties") Properties properties){try {String url = (String) properties.get("hiveurl");String user = (String) properties.get("hiveusername");String password = (String) properties.get("hivepassword");Connection conn = DriverManager.getConnection(url,user,password);conn.setAutoCommit(true);return conn;} catch (Exception e) {System.out.println(e);}return null;}
}

5.测试类

package org.example.controller;import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.hive.jdbc.HivePreparedStatement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** @author Administrator* @Description* @create 2023-08-02 21:42*/
@Slf4j
@RestController
@RequestMapping("/hive")
public class HiveController {/*** 注入连接类*/@AutowiredConnection conn;/*** 列*/List<String> columns = Arrays.asList("name","breed","area","feature");/*** 插入* @throws SQLException*/@GetMapping("/insert")public void insert() throws SQLException {String sql = "insert into dog_tb values (?,?,?,?)";HivePreparedStatement pStSm= (HivePreparedStatement) conn.prepareStatement(sql);pStSm.setString(1, "keji");pStSm.setString(2, "small");pStSm.setString(3, "welsh");pStSm.setString(4, "friendly");pStSm.executeUpdate();}/*** 查询* @return* @throws SQLException*/@GetMapping("/query")public List<String> query(int index,String value) throws SQLException {List<String> list = new ArrayList<>();String sql = "select * from dog_tb";if (index > 0 && StringUtils.isNotEmpty(value)){sql = "select * from dog_tb where name = ?";}HivePreparedStatement pStSm= (HivePreparedStatement) conn.prepareStatement(sql);if (index >= 0 && StringUtils.isNotEmpty(value)){pStSm.setString(index, value);}ResultSet resultSet = pStSm.executeQuery();StringBuilder builder = new StringBuilder();while (resultSet.next()){builder.setLength(0);for (String col:columns){builder.append(resultSet.getString(col)).append(";");}String result = builder.substring(0,builder.length()-1);list.add(result);log.info("row: {}",result);}return list;}}

在这里插入图片描述
在这里插入图片描述

如果插入或查询报错可通过如下位置查询报错信息

在这里插入图片描述

相关文章:

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用 一.Hive 简介二.Hive 搭建1.下载2.安装1.解压并配置 HIVE2.修改 hive-site.xml3.修改 hadoop 的 core-site.xml4.启动 三.Hive 测试1.基础测试2.建库建表3.Java 连接测试1.Pom依赖2.Yarm 配置文件3.启动类4.配置类5.测试类 一.Hive 简介 Hive 是基于…...

vue3常用API之学习笔记

目录 一、setup函数 vue2与vue3变量区别 二、生命周期 三、reactive方法 四、ref方法 1、简介 2、使用 3、ref与reactive 4、获取标签元素或组件 五、toRef 1、简介 2、ref与toRef的区别 六、toRefs 七、shallowReactive 浅reactive 1、简介 2、shallowreactiv…...

Python 程序设计入门(005)—— 字符串操作

Python 程序设计入门&#xff08;005&#xff09;—— 字符串操作 目录 Python 程序设计入门&#xff08;005&#xff09;—— 字符串操作一、字符串切片与连接1、切片的索引方式2、切片操作的基本表达式3、 切片操作举例4、字符串连接 二、字符串替换&#xff1a;replace() 方…...

怎样将项目jar包放到服务器上

目录 1、在配置文件中配置账号密码 2.在父级的pom里面&#xff0c;加上这个标签 3. deploy部署 4. 注&#xff1a;这两个id得匹配上&#xff08;原因&#xff1a;有的人会只有上传到测试包的权限&#xff0c;id对应&#xff0c;拥有账号密码的才能有权限&#xff09; 5.子项…...

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1&#xff0c; ruby 2&#xff0c;修改launch.json...

【云原生】使用kubeadm搭建K8S

目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm&#xff0c;kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master&#xff08;2C/4G&#xff0c;cpu核心…...

HCIE-Datacom真题和机构资料

通过认证验证的能力 具备坚实的企业网络跨场景融合解决方案理论知识&#xff0c;能够使用华为数通产品及解决方案进行企业园区网络、广域互联网络及广域承载网络的规划、建设、维护及优化&#xff0c;能够胜任企业网络全场景专家岗位&#xff08;包括客户经理、项目经理、售前…...

轮足机器人硬件总结

简介 本文主要根据“轮腿机器人Hyun”总结的硬件部分。 轮腿机器人Hyun开源地址&#xff1a;https://github.com/HuGuoXuang/Hyun 1 电源部分 1.1 78M05 78M05是一款三端稳压器芯片&#xff0c;它可以将输入电压稳定输出为5V直流电压. 1.2 AMS1117-3.3 AMS1117-3.3是一种输…...

Flowable-网关-排他网关

目录 定义图形标记XML内容示例视频教程 定义 排他网关&#xff0c;也叫异或&#xff08;XOR&#xff09;网关&#xff0c;是 BPMN 中使用的最常见的网关之一&#xff0c;用来在流转中实 现发散分支决策。排他网关需要和条件顺序流搭配使用&#xff0c;当流程执行到排他网关&am…...

GET 和 POST 的区别

GET 和 POST 的区别&#xff08;流利说&#xff09; 从 http 协议的角度来说&#xff0c;GET 和 POST 它们都只是请求行中的第一个单词&#xff0c;除了语义不同&#xff0c;其实没有本质的区别。 之所以在实际开发中会产生各种区别&#xff0c;主要是因为浏览器的默认行为造成…...

FFmpeg中硬解码后深度学习模型的图像处理dnn_processing(一)

ffmpeg 硬件解码 ffmpeg硬件解码可以使用最新的vulkan来做&#xff0c;基本上来说&#xff0c;不挑操作系统是比较重要的&#xff0c;如果直接使用cuda也是非常好的选择。 AVPixelFormat sourcepf AV_PIX_FMT_NV12;// AV_PIX_FMT_NV12;// AV_PIX_FMT_YUV420P;AVPixelFormat d…...

计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

local-path-provisioner的使用(hostPath、local、local-path-provisioner三者对比)

前言 环境&#xff1a;k8s 1.22.17 、centos7.9 有时候&#xff0c;为了使用本地服务器上的磁盘存储资源&#xff0c;我们会使用hostPath这种方式来为k8s提供本地存储&#xff0c;本篇就来对比一下hostPath、local这两种使用本地服务器储存的方案&#xff0c;从而引出第三种lo…...

命令行快捷键Mac Iterm2

原文:Jump forwards, backwards and delete a word in iTerm2 on Mac OS iTerm2并不允许你使用 ⌥← 或 ⌥→ 来跳过单词。 你也不能使用 ⌥backspace 来删除整个单词。 下面是在Mac OS上如何配置iTerm2以便能做到这一点的方法。 退格键 首先&#xff0c;你需要将你的左侧 ⌥…...

无涯教程-Lua - Modules(模块)

模块就像可以使用 require 加载的库&#xff0c;并且具有包含Table的单个全局名称&#xff0c;该模块可以包含许多函数和变量。 Lua 模块 其中一些模块示例如下。 -- Assuming we have a module printFormatter -- Also printFormatter has a funtion simpleFormat(arg) -- …...

url重定向

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题。 url跳转比较直接的危害是…...

Linux 查看IP地址、子网掩码和网关的配置信息

使用以下命令来查看IP地址、子网掩码和网关的配置信息&#xff1a; 1&#xff0c;使用ifconfig命令&#xff1a; ifconfig 在输出中&#xff0c;找到你正在使用的网络接口的配置信息。你将看到类似以下的内容&#xff1a; eth0: flags4163<UP,BROADCAST,RUNNING,MULTICA…...

token

token验证流程&#xff1a; ①客户端使用用户名和密码请求登录。 ②服务端收到请求&#xff0c;验证用户名和密码。 ③验证成功后&#xff0c;服务端会生成一个token&#xff0c;然后把这个token发送给客户端。 ④客户端收到token后把它存储起来&#xff0c;可以放在cookie…...

利用awk筛选给定时间范围内的日志

文章目录 筛选给定时间范围内的日志时间时间戳什么是时间戳&#xff1f; 系统时间 筛选日志时间示例简单示例mktime()函数是什么 进阶示例 筛选给定时间范围内的日志 时间 时间的表示方法&#xff1a; 时间戳系统时间&#xff08;年月日时间&#xff09; 时间戳 什么是时间…...

ORACLE字符集概念学习

1、字符集的一些基本知识 字符集有很多种&#xff0c;最初的字符集是ASCII&#xff0c;由于ASCII支持的字符很有限&#xff0c;因此随后又出现了很多的编码方案&#xff0c;这些编码方案大部分都是包括了ASCII 的。EBCDIC编码是另一个比较基本的编码&#xff0c;它的部分字符采…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...