深度剖析ZooKeeper

1. ZooKeeper架构总览

ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。


一、ZooKeeper 主从集群

ZooKeeper 采用 主从架构(Leader-Follower),通过 ZAB 协议(ZooKeeper Atomic Broadcast) 实现数据一致性。主要角色如下:

角色描述
Leader负责事务请求的处理和集群数据的一致性维护(事务写操作)
Follower接受客户端请求(读为主),参与投票,转发写请求给 Leader
Observer只参与读取和转发,不参与投票(提高读扩展性)
ClientZooKeeper 的使用者,连接到任意一个 Server 进行读写操作

二、集群内部通信机制

ZooKeeper 使用 TCP 进行集群间通信,关键通信通道包括:

1. Leader 选举通信

  • 通过 Fast Leader Election(快速选举算法)

  • 所有节点在启动时进行投票,目标是选出一个具有最大 ZXID(事务ID)的节点为 Leader

  • 采用 majority 投票机制(过半) 来保证选举成功

2. 数据同步通信

  • 写请求(事务):Follower → Leader → Follower

    • Follower 将写请求转发给 Leader

    • Leader 提议(Proposal),广播给 Followers

    • 超过半数 Follower 发送 ACK,Leader 才 Commit

    • Leader 广播 Commit 指令,所有节点应用事务(数据最终一致)

  • 读请求:默认从本地节点直接返回(可能是旧数据)

    • 可使用 sync() 保证强一致读取,强制与 Leader 同步


三、ZAB 协议:核心一致性算法

ZAB(ZooKeeper Atomic Broadcast)是 ZooKeeper 的核心协议,类似于 Raft/Paxos,专为:

  • 崩溃恢复

  • 高吞吐事务广播

  • 顺序一致性

ZAB 工作流程

1. 广播阶段(消息广播)
  • 所有写请求必须由 Leader 提议(Proposal)

  • 使用事务日志(事务ID 为 ZXID)

  • 写入 WAL(预写日志) → 发送 Proposal → Follower ACK → Leader Commit → 全部同步

2. 崩溃恢复阶段
  • Leader 崩溃后重新选举

  • 新 Leader 同步所有 Follower 的日志,选择拥有最大 ZXID 的日志进行恢复

  • 多数节点同步成功后进入广播阶段


四、数据一致性保证

ZooKeeper 提供 顺序一致性模型(Sequential Consistency):

特性说明
顺序一致性所有客户端看到的更新顺序一致
原子性请求要么成功,要么失败,不存在部分完成
单一系统镜像所有节点表现一致
会话保证客户端对某一节点的操作具有顺序性
可靠性一旦数据写入成功,不会丢失

ZooKeeper 不是强一致系统,但通过事务日志(WAL)+ ZAB 实现了最终一致性,对于客户端使用是顺序一致的。


五、容错与故障处理机制

1. 节点故障

  • Follower 故障:不会影响服务,只要多数节点存在即可

  • Leader 故障:触发重新选举,客户端连接自动迁移到其他节点

2. 脑裂防护

  • 所有写操作必须获得过半节点 ACK,防止部分节点更新数据造成不一致(如3节点集群至少2个同意)

3. 客户端重连

  • ZooKeeper 提供 session 重连机制

  • 临时节点与 Watch 会话相关,一旦会话失效即删除


六、数据可靠性保障机制

1. 事务日志 + 快照

  • 所有写操作先写入磁盘事务日志(log 文件)

  • 定期保存快照(snapshot),用于恢复和启动

2. 磁盘刷写机制

  • 默认配置下使用 fsync 确保日志落盘,防止系统崩溃导致数据丢失

3. 写入机制

  • 写入成功只有在Leader 收到大多数 Follower 的 ACK后才确认

  • 防止单点写入造成脏数据


七、部署建议与集群规模

集群节点数最小推荐为奇数
推荐 3、5、7 个节点保证过半多数投票机制可用
Observer 节点可扩展读能力,不影响写一致性

2. ZooKeeper在Hadoop中的应用

结合 Hadoop 的使用场景深入分析 ZooKeeper 的应用和作用,可以从以下几个方面切入:组件依赖、协调作用、故障应对、集群一致性维护,以及实战部署建议等。下面逐一详解。


一、ZooKeeper 在 Hadoop 生态中的应用场景

在 Hadoop 生态中,ZooKeeper 扮演“分布式协调器”的角色,提供高可用性控制、状态协调和元数据一致性保障。其关键应用包括:

1. HDFS 高可用(HA)中的 NameNode 选主

  • ZooKeeper 用于协调 Active-Standby NameNode 的状态切换

  • ZKFailoverController (ZKFC) 组件与 ZooKeeper 通信,实现自动主备切换

  • 原理

    • NameNode 启动后注册临时节点(ephemeral znodes)到 ZooKeeper

    • 只有一个节点能成功注册(获得锁)成为 Active

    • 一旦 Active 宕机,znode 自动删除,Standby 重新竞选

2. YARN ResourceManager HA

  • 与 HDFS 类似,YARN 的 ResourceManager 高可用也依赖 ZooKeeper 来协调 Active/Standby

  • 客户端从 ZooKeeper 获取当前 Active RM 地址进行资源请求

3. HBase Master 和 RegionServer 协调

  • HBase 完全依赖 ZooKeeper 来实现Master 主备选举RegionServer 注册/心跳管理Region 元数据存储

  • RegionServer 会在 ZooKeeper 上注册自己的状态,并维持心跳

  • 一旦宕机,ZooKeeper 自动删除 znode,Master 感知并触发 region 重分配

4. Hive/Impala/Presto 元数据锁与 HA

  • Hive Server2 可通过 ZooKeeper 实现服务发现与负载均衡

  • Impala 使用 ZooKeeper 来协调 catalog 服务主备状态


二、ZooKeeper 协调 Hadoop 的原理机制

1. 分布式锁机制

  • Hadoop 使用 ZooKeeper 的 ephemeral nodes + sequential nodes 来实现公平锁(如主备 NameNode)

  • 谁先成功创建顺序节点,谁获得锁;失败者 watch 上一个节点变化

2. 状态监听机制

  • Watcher 机制用于监控 znode 状态变化,Hadoop 的 ZKFC/RegionServer 都依赖这点来感知系统状态变化

3. 心跳保活机制

  • 使用 ephemeral 节点反映各组件存活状态,一旦宕机,节点消失,Master 能立即感知


三、故障处理流程示例:HDFS HA 切换过程

场景:Active NameNode 宕机

处理流程

  1. ZooKeeper 会删除该 NameNode 的 ephemeral znode

  2. 其他 Standby NameNode 通过 ZKFC 监听该 znode 的删除事件

  3. 发起选举,尝试创建新的 ephemeral znode

  4. 先创建成功的 Standby 升级为 Active,开始对外提供服务

  5. 新 Active 节点接管 editlog 并恢复 Namespace 元数据

优势

  • 自动感知故障、快速切换

  • 数据不依赖 ZooKeeper,只协调状态和锁


四、数据一致性与 ZooKeeper 的保障角色

HDFS 与 ZK 的配合重点在“元状态一致性”

  • 元数据一致性:Active NameNode 的切换需严格串行,避免“脑裂”

  • ZooKeeper 确保 NameNode 选主是“单点可见”的,通过事务型 znode(例如 /hdfs-ha/namespace/ActiveBreadCrumb)实现

HBase 的强一致保障

  • HBase 在写入时将 Region 信息注册至 ZooKeeper

  • 所有读写都依赖这个元数据,避免客户端误访问错误 Region


五、ZooKeeper 与 Hadoop 协同部署建议

配置项建议
ZooKeeper 节点数量推荐奇数(3、5),确保多数机制
部署独立于 Hadoop避免 ZooKeeper 与 NameNode、RM 等同部署,隔离故障域
数据目录存储使用 SSD,本地磁盘,启用 fsync 保证 WAL 写入可靠
使用 Observer 节点对于大规模读取(如 HBase),可扩展 ZooKeeper 集群读吞吐
Watcher 控制避免过多 Watch(HBase 支持 Watch batch),否则 ZooKeeper 压力大
会话超时调优HBase 推荐 30~90 秒,YARN 与 HDFS 可适当缩短,提升故障感知速度

六、典型问题与优化建议

问题场景分析优化建议
Leader 崩溃后切换慢ZKFC 监听响应时间过长调整 zk.session.timeout、ZKFC 配置
ZooKeeper 节点负载高Watch 数量多、读写大增加 Observer 节点,限制监听粒度
脑裂问题NameNode 多实例均认为自己是 Active加强 zk ACL 管理,配置 fencing 脚本
ZooKeeper WAL 损坏节点宕机或磁盘掉电启用 forceSync=yes,定期快照备份

七、总结

维度作用
可用性保障HDFS/YARN HA 通过 ZooKeeper 自动主备切换
状态协调HBase 使用 ZooKeeper 管理 RegionServer 和 Region 元数据
故障检测ZooKeeper 的 ephemeral node 和 Watch 实现自动感知机制
一致性保障ZAB 协议确保元状态更新在多节点间的一致广播
集群弹性Observer 模式支持横向读扩展;Leader 只负责写一致性


3. ZooKeeper 故障演练手册(针对 Hadoop/HBase 高可用架构)

针对 ZooKeeper 在 Hadoop(HDFS/YARN)与 HBase 高可用架构中的故障演练手册,涵盖常见故障类型、预期表现、演练方法、验证指标、恢复步骤和演练目标,适合于生产环境灰度测试或灾备演练。

一、基础环境前提

  • ZooKeeper 集群:3 或 5 节点部署(如 zk1, zk2, zk3)

  • HDFS 启用 HA(nn1, nn2 + zkfc)

  • YARN 启用 HA(rm1, rm2)

  • HBase 启用 HA(master1, master2 + 多个 RegionServer)

  • 所有系统均正确配置 ZooKeeper


二、演练目标

  • 验证 ZooKeeper 单节点/多节点故障时系统的可用性表现

  • 验证 HDFS、YARN、HBase 的自动 failover 能力与数据一致性保障

  • 检查报警触发、系统自恢复能力、手动干预流程有效性

  • 提升运维人员处理 ZooKeeper 故障的能力


三、演练项列表

编号故障类型影响模块预期表现
F1单个 ZooKeeper 节点宕机所有集群正常,功能不受影响
F2超过半数 ZooKeeper 节点宕机所有ZK 失效,HDFS/HBase 选主失败
F3NameNode Active 宕机HDFSStandby 自动切换为 Active
F4ZooKeeper 日志写满HBaseRegionServer 心跳失效,异常下线
F5ZooKeeper 网络延迟或抖动HDFS/HBase选主超时,短暂不可用
F6RegionServer zk 会话过期HBaseRegion 自动重分配,数据不中断

四、详细演练操作与恢复

F1. ZooKeeper 单节点宕机(zk1)

操作步骤:
ssh zk1
systemctl stop zookeeper
预期表现:
  • ZooKeeper 仍能选主

  • HDFS、YARN、HBase 正常运行

  • zkServer.sh status 显示 zk2 为 leader,zk3 为 follower

验证点:
  • ZooKeeper mntr 端口输出正常

  • HDFS hdfs haadmin -getServiceState 输出正确

  • HBase Master UI/日志无选主异常

恢复步骤:
systemctl start zookeeper

F2. ZooKeeper 超半数节点宕机(zk1 + zk2)

操作步骤:
ssh zk1 && systemctl stop zookeeper
ssh zk2 && systemctl stop zookeeper
预期表现:
  • ZooKeeper 无法选主,HDFS ZKFC 无法执行自动 failover

  • HBase RegionServer 报 SessionTimeout

  • HDFS 客户端重试失败,写入卡顿或报错

验证点:
  • ZooKeeper ruok 无响应

  • HDFS zkfc 日志:ConnectionLossException

  • HBase Master 日志:SessionExpiredException

恢复步骤:
systemctl start zookeeper (zk1/zk2)

等待 ZooKeeper quorum 恢复,验证系统恢复自动化状态


F3. NameNode Active 宕机

操作步骤:
ssh nn1
kill -9 `jps | grep NameNode | awk '{print $1}'`
预期表现:
  • ZKFC 触发自动切换,Standby 成为 Active

  • HDFS 客户端正常写入/读取

验证点:
hdfs haadmin -getServiceState nn1
# 输出:unknown 或无响应hdfs haadmin -getServiceState nn2
# 输出:active
恢复步骤:
start-dfs.sh

F4. ZooKeeper 日志爆满模拟(zk1)

操作步骤:
# 禁用快照清理
echo "autopurge.purgeInterval=0" >> zoo.cfg# 写入大量 znodes(可用 zkCli.sh 创建临时节点批量)
for i in {1..10000}; do create /test$i data$i; done
预期表现:
  • ZooKeeper 写失败或性能急剧下降

  • HBase RegionServer zk 会话丢失,出现 down 现象

验证点:
  • 查看 zk 日志:WARN fsync-ing the write ahead log

  • RegionServer 日志:SessionTimeoutException

恢复步骤:
# 清理 zk 日志文件
rm -rf /data/zookeeper/version-2/log.*# 启用自动清理
autopurge.purgeInterval=1
systemctl restart zookeeper

F5. ZooKeeper 网络抖动

操作步骤:

在 zk1 上模拟网络延迟:

tc qdisc add dev eth0 root netem delay 200ms loss 20%
预期表现:
  • 部分 znode 请求超时

  • ZKFC 或 RegionServer 可能发生异常切换或短暂连接中断

验证点:
  • zkfc 日志有连接断开重连记录

  • ZooKeeper metrics 显示 client连接数波动

恢复:
tc qdisc del dev eth0 root netem

F6. 模拟 HBase RegionServer zk 会话过期

操作步骤:
  • 在 RegionServer 上挂起进程(模拟无响应)

kill -STOP `jps | grep HRegionServer | awk '{print $1}'`
预期表现:
  • zk 会话断开,znode 被删除

  • HMaster 检测 RegionServer 失联,自动重分配 Region

恢复步骤:
kill -CONT <pid>

五、补充建议

方面建议
告警系统整合 ZK 连接数、延迟、会话异常到 Prometheus + Alertmanager
演练频率每季度进行一次 HA 故障模拟
自动化使用 Ansible/ChaosBlade 自动化注入故障和恢复
日志收集所有组件 zk 相关日志单独汇总便于排查

4. 故障演练脚本合集

以下是 ZooKeeper + Hadoop/HBase 高可用集群下的故障演练脚本合集,涵盖 bash 脚本Ansible Playbook 两种方式,支持自动注入故障与恢复操作,便于定期进行演练或集成至 CI/CD 流程。


一、Bash 脚本合集(适合手动测试或定时调度)

1. 模拟 ZooKeeper 单节点宕机

#!/bin/bash
ZK_NODE=$1ssh $ZK_NODE "sudo systemctl stop zookeeper"
echo ">> ZooKeeper on $ZK_NODE stopped."

2. 模拟 ZooKeeper 多节点(过半)宕机

#!/bin/bash
ZK_NODES=("zk1" "zk2")for node in "${ZK_NODES[@]}"; dossh $node "sudo systemctl stop zookeeper"echo ">> ZooKeeper on $node stopped."
done

3. 模拟 HDFS Active NameNode 宕机

#!/bin/bash
NN_ACTIVE_HOST="nn1"ssh $NN_ACTIVE_HOST "kill -9 \$(jps | grep NameNode | awk '{print \$1}')"
echo ">> NameNode on $NN_ACTIVE_HOST killed."

4. 模拟 RegionServer 会话过期

#!/bin/bash
RS_HOST=$1
ssh $RS_HOST "kill -STOP \$(jps | grep HRegionServer | awk '{print \$1}')"
echo ">> RegionServer on $RS_HOST frozen (STOP)."

恢复:

ssh $RS_HOST "kill -CONT \$(jps | grep HRegionServer | awk '{print \$1}')"

5. 模拟 ZooKeeper 网络抖动

#!/bin/bash
ZK_NODE=$1
DELAY=300ms
LOSS=20%ssh $ZK_NODE "sudo tc qdisc add dev eth0 root netem delay $DELAY loss $LOSS"
echo ">> Network delay/loss injected on $ZK_NODE"

恢复:

ssh $ZK_NODE "sudo tc qdisc del dev eth0 root netem"

二、Ansible 演练剧本合集(适合批量、自动化)

1. 目录结构

zk-fault-injection/
├── inventory
├── playbooks/
│   ├── zk_stop.yml
│   ├── zk_network_delay.yml
│   ├── nn_kill.yml
│   ├── rs_suspend.yml

2. inventory 示例

[zookeeper]
zk1 ansible_host=192.168.1.10
zk2 ansible_host=192.168.1.11
zk3 ansible_host=192.168.1.12[namenodes]
nn1 ansible_host=192.168.1.20[hbase_rs]
rs1 ansible_host=192.168.1.30

3. zk_stop.yml

- name: Stop ZooKeeper nodeshosts: zookeeperbecome: truetasks:- name: Stop ZooKeeper servicesystemd:name: zookeeperstate: stopped

4. nn_kill.yml

- name: Kill Active NameNodehosts: namenodestasks:- name: Kill NameNode processshell: "kill -9 $(jps | grep NameNode | awk '{print $1}')"

5. zk_network_delay.yml

- name: Inject network delayhosts: zookeeperbecome: truetasks:- name: Add network delayshell: "tc qdisc add dev eth0 root netem delay 300ms loss 20%"

恢复:

- name: Remove network delayhosts: zookeeperbecome: truetasks:- name: Clear netemshell: "tc qdisc del dev eth0 root netem"

6. rs_suspend.yml

- name: Suspend RegionServer processhosts: hbase_rstasks:- name: STOP RegionServershell: "kill -STOP $(jps | grep HRegionServer | awk '{print $1}')"- name: Wait 30spause:seconds: 30- name: RESUME RegionServershell: "kill -CONT $(jps | grep HRegionServer | awk '{print $1}')"

三、扩展建议

场景建议
大规模多集群使用标签化 inventory 支持多集群参数管理
灰度环境定时演练将脚本接入 Jenkins、Airflow 或 Kube-native Job
监控联动自动触发 Prometheus 告警/Slack 报警联动
日志追踪配合 ELK 统一采集 zkfc、HMaster、RS 的故障日志

5. ZooKeeper 在 Kafka中的应用

ZooKeeper 是 Kafka 早期架构中的核心协调组件,主要负责 Kafka 中控制器(Controller)的选举、分区 Leader 的元数据维护等。下面我们将系统剖析 Kafka 与 ZooKeeper 的协调机制,并详细说明主节点(Controller)挂掉后 Kafka 如何选举新的 Leader。


一、Kafka 与 ZooKeeper 的协调机制(核心职责)

Kafka 依赖 ZooKeeper 进行以下几方面协调:

功能说明
Controller 选举Kafka 启动时,第一个抢占 /controller ZNode 的 Broker 成为 Controller。
Topic 元数据存储topic 配置、副本关系、分区状态等写入 ZooKeeper
分区 Leader 分配Controller 将每个 partition 的 leader 副本记录到 /brokers/topics/<topic>/partitions/<n>/state
Broker 状态监控每个 Kafka Broker 向 ZooKeeper 注册临时节点 /brokers/ids/<brokerId>,宕机会自动删除
ISR 列表维护Kafka Controller 根据 ZooKeeper 记录的 ISR 列表决定 leader 切换策略

二、Kafka Controller 是什么?

Kafka 集群中会从所有 Broker 中选出一个 Controller,它负责:

  • 监控所有 Broker 和 Topic 元数据变化

  • 为所有 Partition 分配 Leader、副本、ISR

  • 在 Broker 宕机或恢复时,重新分配 Leader

  • 管理分区迁移(rebalance)

Controller 仅有一个,通过 ZooKeeper 中的 /controller 节点实现锁机制,其他 Broker 会监听该节点变化。


三、主节点(Controller)挂掉后的选举流程详解

1. 故障检测

  • Kafka 的所有 Broker 都在监听 ZooKeeper 的 /controller 节点

  • 当前 Controller Broker 挂掉后,其 ZooKeeper 会话失效,临时节点 /controller 被自动删除

2. Controller 选举触发

  • 所有其他 Broker 接收到 /controller 节点被删除的 Watcher 事件后,开始竞争 Controller

  • Kafka 使用“先到先得”的方式尝试创建 /controller 节点:

    zkClient.createEphemeral("/controller", brokerId)
    
  • 创建成功者即成为新的 Controller

3. 新 Controller 执行恢复任务

新 Controller 会立即进行以下动作:

操作说明
重建集群元数据缓存读取 ZooKeeper 上所有 Topic、Partition、Broker、ISR 信息
重新选举 Partition Leader遍历所有 partition,如果当前 leader 已失效,则从 ISR 中选出新的 leader
更新 ZooKeeper state 节点写入新的 /brokers/topics/.../state,客户端即可读取新 leader 信息

4. Leader 更新通知给各 Broker

  • Kafka 使用 Controller-to-Broker channel(RPC),通知各个 Broker 相关分区的 leader 有更新

  • 每个 Broker 本地更新自己的分区 leader 表(PartitionStateInfo)


四、举例说明

假设有如下 Kafka 架构:

  • ZooKeeper 集群:zk1, zk2, zk3

  • Kafka Broker:broker-101, broker-102, broker-103

  • Partition:topic-A 有 3 个分区,副本因子为 3

初始状态:

  • Controller 为 broker-101

  • topic-A partition-0 的 leader 是 broker-101

broker-101 突然宕机:

  1. /controller 节点在 ZooKeeper 中消失(zk 会话失效)

  2. broker-102 和 broker-103 同时监听到事件

  3. broker-102 抢占成功 /controller,成为新 Controller

  4. broker-102 查询 ZooKeeper ISR 列表,发现 broker-103 仍在 ISR 中

  5. 将 partition-0 的 leader 变更为 broker-103,并写入 ZooKeeper

  6. 通知所有相关 Broker 更新本地 leader 缓存


五、可靠性保证机制

机制说明
ZooKeeper 强一致性所有 Leader 元数据写入 ZK,确保故障恢复时状态不丢失
ISR 保证数据同步副本安全性只从 ISR(In-Sync Replica)中选 Leader,避免数据丢失
Watcher + 临时节点机制Broker 宕机会自动触发 Leader 恢复流程
Kafka Controller 高可用所有 Broker 都能竞争成为 Controller,保障不中断

六、Kafka 2.8+ 后的变化(基于 KRaft 模式)

在 Kafka 2.8+ 中,引入了KRaft 模式(Kafka Raft Metadata Mode),完全去除了 ZooKeeper,改为使用自建的 Raft 协议进行 Controller 集群选举和元数据同步:

  • Controller 成为一个 Raft Leader

  • 所有元数据写入专用 topic(__cluster_metadata)

  • 彻底摆脱 ZooKeeper,简化运维

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/906814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S-statefulset-mysql-ha

需求 实现一个HA mysql&#xff0c;包括1个master&#xff0c;2个slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S环境需要解决的问题 1、由于使用同一个statefulset配置&#xff0c;因此需要考虑master和slave使用不同的cnf文件。 2、不同pod之间文件的传输 3、…

人脸美颜磨皮祛痘1:数据集说明(含下载链接)

一. 前言 本篇博客是《人脸美颜磨皮祛痘》系列文章之《数据集说明(含下载链接)》&#xff0c;像这种深度学习图像修复的数据一般是需要成对&#xff0c;网上很难找到&#xff0c;公司或者个人都是花钱找人做。为了方便你我他&#xff0c;本博客将分享一个由我自己整理的人脸美…

redis功能清单

文章目录 Redis高级功能使用说明功能清单1. 分布式锁1.1 功能描述1.2 使用方法1.3 测试接口 2. 消息发布订阅2.1 功能描述2.2 使用方法发布消息订阅消息 2.3 测试接口 3. 接口限流3.1 功能描述3.2 使用方法方式一&#xff1a;直接使用工具类方式二&#xff1a;使用注解&#xf…

从代码学习深度学习 - 预训练word2vec PyTorch版

文章目录 前言辅助工具1. 绘图工具 (`utils_for_huitu.py`)2. 数据处理工具 (`utils_for_data.py`)3. 训练辅助工具 (`utils_for_train.py`)预训练 Word2Vec - 主流程1. 环境设置与数据加载2. 跳元模型 (Skip-gram Model)2.1. 嵌入层 (Embedding Layer)2.2. 定义前向传播3. 训练…

Python实现对大批量Word文档进行自动添加页码(16)

前言 本文是该专栏的第16篇,后面会持续分享Python办公自动化干货知识,记得关注。 在处理word文档的时候,相信或多或少都遇到过这样的需求——需要对“目标word文档,自动添加页码”。 换言之,如果有大批量的word文档文件需要你添加页码,这个时候最聪明的办法就是使用“程…

云原生安全:Linux命令行操作全解析

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 ——从基础概念到安全实践的完整指南 一、基础概念 1. Shell与终端交互 Shell是Linux命令行的解释器&#xff08;如Bash、Zsh&#xff09;&#xff0c;负…

Day 34

GPU训练 要让模型在 GPU 上训练&#xff0c;主要是将模型和数据迁移到 GPU 设备上。 在 PyTorch 里&#xff0c;.to(device) 方法的作用是把张量或者模型转移到指定的计算设备&#xff08;像 CPU 或者 GPU&#xff09;上。 对于张量&#xff08;Tensor&#xff09;&#xff1…

C++笔试题(金山科技新未来训练营):

题目分布&#xff1a; 17道单选&#xff08;每题3分&#xff09;3道多选题&#xff08;全对3分&#xff0c;部分对1分&#xff09;2道编程题&#xff08;每一道20分&#xff09;。 不过题目太多&#xff0c;就记得一部分了&#xff1a; 单选题&#xff1a; static变量的初始…

Spark(29)基础自定义分区器

&#xff08;一&#xff09;什么是分区 【复习提问&#xff1a;RDD的定义是什么&#xff1f;】 在 Spark 里&#xff0c;弹性分布式数据集&#xff08;RDD&#xff09;是核心的数据抽象&#xff0c;它是不可变的、可分区的、里面的元素并行计算的集合。 在 Spark 中&#xf…

python打卡训练营打卡记录day35

知识点回顾&#xff1a; 三种不同的模型可视化方法&#xff1a;推荐torchinfo打印summary权重分布可视化进度条功能&#xff1a;手动和自动写法&#xff0c;让打印结果更加美观推理的写法&#xff1a;评估模式 作业&#xff1a;调整模型定义时的超参数&#xff0c;对比下效果 1…

【MySQL】07.表内容的操作

1. insert 我们先创建一个表结构&#xff0c;这部分操作我们使用这张表完成我们的操作&#xff1a; mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null,-> qq varchar(20) unique-> ); Query OK, 0 rows affec…

使用SQLite Expert个人版VACUUM功能修复数据库

使用SQLite Expert个人版VACUUM功能修复数据库 一、SQLite Expert工具简介 SQLite Expert 是一款功能强大的SQLite数据库管理工具&#xff0c;分为免费的个人版&#xff08;Personal Edition&#xff09;和收费的专业版&#xff08;Professional Edition&#xff09;。其核心功…

LM-BFF——语言模型微调新范式

gpt3&#xff08;GPT3——少样本示例推动下的通用语言模型雏形)结合提示词和少样本示例后&#xff0c;展示出了强大性能。但大语言模型的训练门槛太高&#xff0c;普通研究人员无力&#xff0c;LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…

遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之二训练模型

遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之一推理模型 背景 上一篇文章了解了这个项目的环境安装和模型推理,这篇文章介绍下如何训练这个模型,添加类别 下载数据集 在之前的一篇文章中,也有用到这个数据集 QGIS之三十六Deepness插件实现AI遥感训练模型 数…

【NLP 71、常见大模型的模型结构对比】

三到五年的深耕&#xff0c;足够让你成为一个你想成为的人 —— 25.5.8 模型名称位置编码Transformer结构多头机制Feed Forward层设计归一化层设计线性层偏置项激活函数训练数据规模及来源参数量应用场景侧重GPT-5 (OpenAI)RoPE动态相对编码混合专家架构&#xff08;MoE&#…

[250521] DBeaver 25.0.5 发布:SQL 编辑器、导航器全面升级,新增 Kingbase 支持!

目录 DBeaver 25.0.5 发布&#xff1a;SQL 编辑器、导航器全面升级&#xff0c;新增 Kingbase 支持&#xff01; DBeaver 25.0.5 发布&#xff1a;SQL 编辑器、导航器全面升级&#xff0c;新增 Kingbase 支持&#xff01; 近日&#xff0c;DBeaver 发布了 25.0.5 版本&#xf…

服务器硬盘虚拟卷的处理

目前的情况是需要删除逻辑卷&#xff0c;然后再重新来弄一遍。 数据已经备份好了&#xff0c;所以不用担心数据会丢失。 查看服务器的具体情况 使用 vgdisplay 操作查看服务器的卷组情况&#xff1a; --- Volume group ---VG Name vg01System IDFormat …

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中 在 Flutter 中&#xff0c;build 方法被设计在 StatefulWidget 的 State 类中而非 StatefulWidget 类本身&#xff0c;这种设计基于几个重要的架构原则和实际考量&#xff1a; 1. 核心设计原因 1.1 生命周期管理…

传统医疗系统文档集中标准化存储和AI智能化更新路径分析

引言 随着医疗数智化建设的深入推进&#xff0c;传统医疗系统如医院信息系统(HIS)、临床信息系统(CIS)、护理信息系统(NIS)、影像归档与通信系统(PACS)和实验室信息系统(LIS)已经成为了现代医疗机构不可或缺的技术基础设施。这些系统各自承担着不同的功能&#xff0c;共同支撑…

探索常识性概念图谱:构建智能生活的知识桥梁

目录 一、知识图谱背景介绍 &#xff08;一&#xff09;基本背景 &#xff08;二&#xff09;与NLP的关系 &#xff08;三&#xff09;常识性概念图谱的引入对比 二、常识性概念图谱介绍 &#xff08;一&#xff09;常识性概念图谱关系图示例 &#xff08;二&#xff09…