大数据面试题 —— Zookeeper
目录
- ZooKeeper 的定义
- ZooKeeper 的特点
- ZooKeeper 的应用场景
- 你觉得Zookeeper比较重要的功能
- ZooKeeper 的选举机制 ***
- zookeeper主节点故障,如何重新选举?
- ZooKeeper 的监听原理 ***
- zookeeper集群的节点数为什么建议奇数台 ***
- ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?规则是怎样的?
- ZooKeeper 的常用命令
- Zookeeper目录结构
- 简述什么是CAP理论,zookeeper满足CAP的哪两个 ***
- Paxos 算法 ***
- ZAB协议/Zookeeper怎么保证一致性的 ***
- ZooKeeper 使用的ZAB协议与Paxo算法的异同?
- 分布式集群中为什么会有主节点
- 节点挂掉的时候Zookeeper是如何发现的
- Leader一旦选出,如何让集群中所有Follow获悉
- Zookeeper下 服务器的工作状态有几种
- Zookeeper提供了什么
- ZooKeeper是否会自动进行日志清理?
- 请说明 ZooKeeper 使用到的各个端口的作用?
- zookeeper 负载均衡和 nginx 负载均衡区别
- 什么是脑裂
- ZooKeeper节点类型
- 临时节点、永久节点用来作什么?
- 能否为临时节点创建子节点
- 是哪个进程在Zookeeper上注册临时节点
- ZooKeeper对节点的watch监听是永久的吗
- 客户端向服务端写数据流程
- zookeeper 是如何实现分布式锁的
- 当自己master连接不上Zookeeper,会怎么办
- Zookeeper的数据存储在什么地方
- 总结一下哪些地方用到了 zookeeper
- Zookeeper实现HDFS的高可用,是怎么操作的?
ZooKeeper 的定义
总的来说,Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。
具体来说,Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper 就负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应。
Zookeeper = 文件系统 + 通知机制。
ZooKeeper 的特点
(1)Zookeeper是由一个领导者(Leader)和多个跟随者(Follower)组成的集群。
(2)集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。
(3)全局数据一致性:每个 Server 保存一份相同的数据副本,Client 无论连接到哪个 server,数据都是一致的。
(4)更新请求 顺序性 ,来自同一个 Client 的更新请求按其发送顺序依次执行。
(5)数据更新原子性,一次数据更新要么成功,要么失败(保证了数据一致性)。
(6)实时性,在一定时间范围内,Client 能读到最新数据。
ZooKeeper 的应用场景
(1)统一命名服务:在分布式环境下,经常需要对服务进行统一命名,便于识别,例如 ip 地址。
(2)统一配置管理:在一个集群中,要求所有节点的配置信息是一致的
(3)统一集群管理:在一个集群中,需要实时监控每个节点的状态变化
(4)负载均衡:在Zookeeper中记录每个服务器的访问次数,再次请求的时候,让访问次数最少得服务器去处理当前的请求。
你觉得Zookeeper比较重要的功能
ZooKeeper最重要的功能之一是提供分布式系统的协调和管理服务,它能够协调分布式系统中各个节点的状态,维护分布式系统的配置信息,帮助分布式系统实现同步和通信。
ZooKeeper 的选举机制 ***
选举机制总原则:集群中的每台机器都参与投票,通过交换选票信息得到每台机器的最终得票, 一旦出现得票数超过机器总数 一半以上 数量,当前机器即为 leader。
以一个简单的例子来说明整个选举的过程。
假设有五台服务器组成的 Zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来看看会发生什么。
(1)服务器 1 启动,发起一次选举。服务器 1 投自己一票。此时服务器 1 票数一票,不够半数以上(3票),选举无法完成,服务器 1 状态保持为LOOKING;
(2)服务器2启动,再发起一次选举。服务器 1 和 2 分别投自己一票并交换选票信息:此时服务器 1 发现服务器2的 ID 比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器 1 票数 0 票,服务器 2 票数 2 票,没有半数以上结果,选举无法完成,服务器1,2 状态保持 LOOKING;
(3)服务器 3 启动,发起一次选举。此时服务器 1 和 2 都会更改选票为服务器 3。此次投票结果:服务器1为0票,服务器2为0票,服务器 3 为 3 票。此时服务器 3 的票数已经超过半数,服务器 3 当选 Leader。服务器 1,2 更改状态为 FOLLOWING,服务器3更改状态为LEADING;
(4)服务器 4 启动,发现当前集群已经有 Leader,它自己自动成为 Follower;
(5)服务器5启动,同服务器 4一样。
zookeeper主节点故障,如何重新选举?
当集群中的leader挂掉,集群会重新选出一个leader,此时首先会比较每一台机器的epoch,epoch大的直接选举为leader,epoch若是相同就比较每一台机器的事务id(zxid),zxid 最大的被选为 leader。极端情况,zxid 都相等的情况,那么就会直接比较服务器id(myid、sid)。
在 Zookeeper 集群中,epoch 是用来标识 Zookeeper 集群中的逻辑时期(epoch)。每当选举出一个新的 Leader 时,Zookeeper 集群的 epoch 就会增加,以标识当前的 Leader 任期。
ZooKeeper 的监听原理 ***
(1)首先要有一个 main() 线程
(2)在 main() 线程中创建 ZooKeeper 客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)
(3)客户端通过 connet 线程将注册的监听事件发送给服务端
(4)在 ZooKeeper 的注册监听器列表中将注册的监听事件添加到列表中
(5)ZooKeeper 监听到有数据或路径的变化,就会将这个消息发送给 listener 线程
(6) 客户端 listener 线程内部调用 process() 方法做出相应处理
zookeeper集群的节点数为什么建议奇数台 ***
(1)因为 zookeeper 中只要有半数以上的机器正常工作,那么整个集群对外就是可用的。比如说如果有 2 个 zookeeper,那么只要 1 个死了 zookeeper 就不能用了,因为 1没有过半,那么 zookeeper 的死亡容忍度为 0,同理,如果有 3 个 zookeeper,如果死了 1个,还剩2个
正常,还是过半的,所以 zookeeper 的死亡容忍度为 1,我之前算过 4 个5 个 6 个等情况下的死亡容忍度,发现了一个规律,2n 和 2n-1 的容忍度是一样的,所以为了节约资源,就选择奇数台。
(2)防止因为集群脑裂造成集群用不了。比如有 4 个节点,脑裂为 2 个小集群,都为 2 个节点,这时候,不能满足半数以上的机器正常工作,因此集群就不可用了,那么当有 5 个节点的时候,脑裂为 2 个小集群,分别为2和 3,这时候 3 这个小集群仍然可以选举出 leader,因此集群还是可用的。
ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?规则是怎样的?
(1)部署方式
- 单机模式:将Zookeeper运行在单台机器上,仅供学习和开发使用;
- 集群模式:zookeeper运行在多台机器上,每台机器上都运行一个zookeeper实例;
- 伪分布式模式:仍然只有一台物理机器,但是该机器运行了多个Zookeeper实例。
(2)zookeeper有三种角色:
- 老大Leader(领导者)
- 老二Follower (跟随者)
- 老三Observer(观察者)。Observer 接受客户端连接,将写操作转给Leader,但Observer不参与投票(即不参加一致性协议的达成),只同步Leader节点的状态,Observer角色是为集群系统扩展而生的。Follower和Observer归类为Learner(学习者)
(3)集群最少需要机器数:3,集群规则为2N+1台,N>0
ZooKeeper 的常用命令
(1) ls
:查看当前 znode 的子节点
(2)create
:创建节点
(3)set
:设置节点的值
(4) get
:获取节点的值
(5) stat
:查看节点的状态
(6) delete
:删除节点
(7) deleteall
:递归删除节点
Zookeeper目录结构
ZooKeeper的目录结构采用类似Unix文件系统的树形结构。ZooKeeper 目录结构由 ZNode 组成,每个ZNode 默认情况下最多可以存储 1MB 的数据。ZNode是ZooKeeper中的基本数据单元,可以用于存储配置信息、状态信息等。
ZooKeeper目录结构的根节点为/,所有的ZNode都是以根节点为基础进行构建的。每个ZNode的名称是唯一的,并且可以包含多个子节点,每个子节点都是一个独立的ZNode。ZNode可以是永久节点,也可以是临时节点。
在ZooKeeper目录结构中,常用的ZNode包括:
- /zookeeper:ZooKeeper的内部节点,用于存储ZooKeeper的配置信息和状态信息。
- /brokers:Kafka集群中所有的Broker信息存储在该节点下。
- /controller:Kafka集群中Controller的状态信息存储在该节点下。
- /consumers:Kafka中所有的消费者组信息存储在该节点下。
- /config:Kafka集群的配置信息存储在该节点下。
- /admin:Kafka中所有的管理员操作信息存储在该节点下。
简述什么是CAP理论,zookeeper满足CAP的哪两个 ***
分布式系统有三个指标:
- Consistency(一致性)
- 用户在访问分布式系统中的任意节点,得到的数据必须一致。
- Availability(可用性)
- 用户访问集群中任意的健康节点,必须能得到响应,而不是超时或拒绝。
- Paratition tolerance(分区容错性)
- 分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立的分区。
- 容错:在集群出现分区时,整个系统也要持续对外提供服务。
分布式系统无法同时满足这三个指标,这个结论就是 CAP 理论。
Zookeeper 符合一致性、分区容错性。(CP)
Paxos 算法 ***
Paxos 算法:一种基于消息传递且具有高度容错性的一致性算法。
Paxos 算法解决的问题:如何快速正确的在一个分布式系统中对某个数据的值达成一致,并且保证不论发生任何异常,都不会破坏整个系统的一致性。
在一个 Paxos 系统中,首先将所有的节点划分为Proposer(提议者)、Accepter(接受者)和 Learner(学习者)。(注意每个节点都可以身兼数职)
一个完整的 Paxos 算法流程分为三个阶段:
- 准备阶段
- Proposer 向多个 Accepter 发出 Propose 请求Promise(承诺)
- Accepter 针对收到的Propose请求进行Promise(承诺)
- 接受阶段
- Proposer 收到多个Accepter的Promise(承诺)后,向Accepter发出Propose
- Accepter 针对收到的Propose请求进行Accept处理
- 学习阶段
- Proposer将形成的决议发送给所有的 Learner
ZAB协议/Zookeeper怎么保证一致性的 ***
依赖了 ZAB 协议,ZAB 协议借鉴了 Paxos 算法,是专门为 ZooKeeper 设计的支持崩溃恢复的原子广播协议。Paxos 算法中采用多个Proposer 会存在竞争 Acceptor 的问题,ZooKeeper 设计为只有一个 Leader 负责处理外部的写事务请求,然后 Leader 将数据同步到其他 Follower 节点。即,ZooKeeper 只有一个 Leader 可以发起提议。
ZAB 协议包括两种基本的模式:消息广播(正常)、崩溃恢复(异常)。
这两个模式是相辅相成的,消息广播模式就是 Zookeeper 不出现任何问题,并且正常工作的模式,崩溃恢复看字面意思就是当 Zookeeper 出现故障时用于恢复的。
(1)消息广播
(2)崩溃恢复
ZooKeeper 使用的ZAB协议与Paxo算法的异同?
相同点:
- 两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行
- Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提案进行提交
- ZAB 协议中,每个 Proposal 中都包含一个 epoch 值来代表当前的 Leader 周期,Paxos 中名字为 Ballot
不同点:
ZAB(ZooKeeper Atomic Broadcast) 用来构建高可用的分布式数据主备系统(Zookeeper),Paxos 是用来构建分布式一致性状态机系统。而 Paxos 算法与 ZAB 协议不同的是,Paxos 算法的发起者可以是一个或多个。当集群中的 Acceptor 服务器中的大多数可以执行会话请求后,提议者服务器只负责发送提交指令,事务的执行实际发生在 Acceptor 服务器。这与 ZooKeeper 服务器上事务的执行发生在 Leader 服务器上不同。Paxos 算法在数据同步阶段,是多台 Acceptor 服务器作为数据源同步给集群中的多台 Learner 服务器,而 ZooKeeper 则是单台 Leader 服务器作为数据源同步给集群中的其他角色服务器。
注意:ZAB是在Paxos的基础上改进和演变过来的。
分布式集群中为什么会有主节点
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要主节点。
节点挂掉的时候Zookeeper是如何发现的
ZooKeeper提供了一种心跳机制,即每个节点都会定期向其他节点发送心跳消息,如果一个节点超过一定时间没有收到其他节点的心跳消息,就会判定这个节点已经下线了。
Leader一旦选出,如何让集群中所有Follow获悉
心跳机制
Zookeeper下 服务器的工作状态有几种
ZooKeeper 服务器有四种工作状态:
- LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前服务器没有 Leader,因此需要进入 Leader 选举状态。
- FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。
- LEADING:领导者状态。表明当前服务器角色是 Leader。
- OBSERVING:观察者状态。表明当前服务器角色是 Observer。
Zookeeper提供了什么
(1)文件系统
(2)通知机制
ZooKeeper是否会自动进行日志清理?
ZooKeeper 不会自动进行日志清理,需要运维人员进行日志清理
请说明 ZooKeeper 使用到的各个端口的作用?
(1)2888:Follower与Leader交换信息的端口
(2)3888:万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口
zookeeper 负载均衡和 nginx 负载均衡区别
zk的负载均衡是可以调控,nginx只是能调权重,其他需要可控的都需要自己写插件;但是nginx的吞吐量比zk大很多,应该说按业务选择用哪种方式。
什么是脑裂
脑裂通常会出现在集群环境中,当集群中出现故障(比如网络故障),分成了“两个集群”,这两个集群无法互相通信,此时就会让集群觉得Leader挂了,这时候就会出现两个Leader节点,这就是脑裂。
实际上Zookeeper集群中是不会出现脑裂问题的,而不会出现的原因就跟过半机制有关。有了过半机制,对于一个Zookeeper集群,要么没有Leader,要没只有1个Leader,这样就避免了脑裂问题。
ZooKeeper节点类型
(1)Znode有两种类型:
- 短暂:客户端和服务器端断开连接后,创建的节点自己删除
- 持久:客户端和服务器端断开连接后,创建的节点不删除
(2)Znode有四种形式的目录节点(默认是persistent )
- 持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在
- 持久化顺序编号目录节点: 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
- 临时目录节点: 客户端与zookeeper断开连接后,该节点被删除
- 临时顺序编号目录节点:客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
临时节点、永久节点用来作什么?
临时节点常用于实现分布式锁等功能,而永久节点则用于存储一些配置信息、元数据等。
能否为临时节点创建子节点
ZooKeeper 中不能为临时节点创建子节点,如果需要创建子节点,应该将要创建子节点的节点创建为永久性节点
是哪个进程在Zookeeper上注册临时节点
一般情况下,是客户端进程通过ZooKeeper的API在zk上注册临时节点。客户端注册的临时节点在客户端连接断开后会自动删除。
ZooKeeper对节点的watch监听是永久的吗
不是,一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。
为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,这太消耗性能了。在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。
客户端向服务端写数据流程
可以分为两种情况,一是将写入请求直接发送给 leader ,一是将写入请求发给 follower(该情况也会将写入请求转发给 leader)。
(1)客户端会向ZK集群中的一台机器server1发送写数据的请求。
(2)server1接收到请求后,马上会通知leader 有写数据的请求来了
(3)leader拿到请求后,进行广播,让集群每一台机器都准备要写数据
(4)集群中的所有机机器接收到leader广播后都回应一下leader
(5) leader再次进行广播 开始写数据,其他机器接收到广播后也开始写数据
(6)数据成功写入后,回应leader,最后由leader来做整个事务提交
(7)当数据成功写入后,有最初和客户端发生连接的 server1 回应客户端数据写入成功。
zookeeper 是如何实现分布式锁的
(1)首先 zookeeper 集群接收到获取锁的请求时,就会在 locks 节点下创建一个临时顺序节点。
(2)然后先对当前节点下的所有子节点进行排序,判断自己是不是最小的节点,如果是,就可以获取到锁,如果不是,就说明锁已被其他客户端获取,然后可以对前一个节点进行监听,等待客户端把自己创建的节点删除。
(3)获取到锁后,进行业务的处理,释放锁的时候删除该临时节点,然后后面的节点就会接收到通知。
当自己master连接不上Zookeeper,会怎么办
当一个Hadoop集群中的Active NameNode连接不上ZooKeeper时,它会尝试在一段时间内重新连接ZooKeeper。如果在此期间内,Active NameNode仍然无法连接到ZooKeeper,会直接转为standby。
Zookeeper的数据存储在什么地方
(1)内存中(DataTree、DataNode、ZKDatabase):ZooKeeper 会将一部分数据存储在内存中,以提高读取速度和性能。
(2)磁盘上的快照文件:ZooKeeper 会定期将内存中的数据持久化到磁盘上的快照文件中,以便在重启后恢复状态。
(2)事务日志:ZooKeeper 会将所有更新操作记录在事务日志中,以确保数据的持久性和一致性。
总结一下哪些地方用到了 zookeeper
(1)Hadoop HA:配置高可用
(2)HBase:保证master的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
(3)Kafka:controller的选举、broker 的注册、topic 的注册
Zookeeper实现HDFS的高可用,是怎么操作的?
在HDFS中实现高可用,需要使用Zookeeper来协调选举NameNode的过程。具体来说,我们需要启动两个NameNode,一个作为Active节点,一个作为Standby节点。同时,在Zookeeper上创建一个znode,作为一个lock的作用,来确保只有一个NameNode能够成为Active节点。
在启动时,Active节点会尝试去Zookeeper上创建这个lock,如果成功,则表示它已经成为Active节点,否则它会监视这个lock的状态,一旦该节点被释放,它就会重新尝试去获得这个lock。同时,Standby节点也会监视这个lock的状态,一旦Active节点出现故障或宕机,它会尝试去获得这个lock,并成为Active节点。
当Active节点宕机时,Standby节点会检测到这个故障,然后会尝试去获取这个lock。在获取到这个lock之后,它会启动自己的NameNode服务,并且接管原来Active节点的工作。
在整个过程中,Zookeeper起到了协调的作用,它可以保证只有一个NameNode节点被选举为Active节点,保证了系统的高可用性。
相关文章:
大数据面试题 —— Zookeeper
目录 ZooKeeper 的定义ZooKeeper 的特点ZooKeeper 的应用场景你觉得Zookeeper比较重要的功能ZooKeeper 的选举机制 ***zookeeper主节点故障,如何重新选举?ZooKeeper 的监听原理 ***zookeeper集群的节点数为什么建议奇数台 ***ZooKeeper 的部署方式有哪几…...
【安全类书籍-6】僵尸网络:网络程序杀手
目录 内容 用处 下载链接 内容 这本书着重探讨以下几个主题: 1. 僵尸网络基础:介绍僵尸网络的基本构成、运作机制以及在全球网络空间中的影响和威胁程度。 2. 僵尸网络技术剖析:详细分析僵尸网络的组件,如命令控制中心(C&C)、恶意软件传播途径、感染节点的招募和…...
文件的创建与删除
文件的创建 使用File类创建一个文件对象,例如:File filenew File("c:\\myletter" , "letter.txt"); public boolean createNewFile();/*如果c:\myletter目录中没 有名字为letter.txt文件,文件对象file调用createNewFil…...
图论题目集一(代码 注解)
目录 题目一: 题目二: 题目三: 题目四: 题目五: 题目六: 题目七: 题目一: #include<iostream> #include<queue> #include<cstring> using namespace st…...
解释MVC和MVVM架构模式
一、解释MVC和MVVM架构模式 MVC和MVVM都是常见的前端架构模式,用于抽象分离并解决特定问题。这两种模式在结构上具有一定的相似性,但在细节和数据处理方式上存在一些差异。 MVC,即Model-View-Controller,是一种用于应用程序分层…...
OLLAMA:如何像云端一样运行本地大语言模型
简介:揭开 OLLAMA 本地大语言模型的神秘面纱 您是否曾发现自己被云端语言模型的网络所缠绕,渴望获得更本地化、更具成本效益的解决方案?那么,您的探索到此结束。欢迎来到 OLLAMA 的世界,这个平台将彻底改变我们与大型…...
React全家桶及原理解析-lesson4-Redux
lesson4-react全家桶及原理解析.mov React全家桶及原理解析 React全家桶及原理解析 课堂⽬标资源起步Reducer 什么是reducer什么是reduceRedux 上⼿ 安装reduxredux上⼿检查点react-redux 异步代码抽取Redux拓展 redux原理 核⼼实现中间件实现redux-thunk原理react-redux原理 实…...
电商api数据接口技术开发来赞达lazada通过商品ID抓取商品详情信息item_get请求key接入演示
要获取Lazada的商品详情,你需要使用item_get请求。首先,你需要注册一个开发者账号并获取API密钥(App Key和App Secret)。然后,你可以使用以下Python代码示例来获取商品详情: # coding:utf-8 ""&…...
零基础入门多媒体音频(2)-音频焦点2
说实话,android的代码是越来越难以阅读。业务函数里面狗皮膏药似的补丁与日俱增。继上篇简要介绍音频焦点的文章,这篇文章的主要内容是分析audiofocus的实现。看了一下午的相关代码都没找到做audiofocus策略的核心逻辑。目前能看懂的大概包含下面两个逻辑…...
Spark杂谈
文章目录 什么是Spark对比HadoopSpark应用场景Spark数据处理流程什么是RDDSpark架构相关进程入门案例:统计单词数量Spark开启historyServer 什么是Spark Spark是一个用于大规模数据处理的统一计算引擎Spark一个重要的特性就是基于内存计算,从而它的速度…...
【PyTorch】进阶学习:一文详细介绍 torch.save() 的应用场景、实战代码示例
【PyTorch】进阶学习:一文详细介绍 torch.save() 的应用场景、实战代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程…...
私域流量运营的关键要素和基本步骤
解锁增长的四大关键: 关键要素一:精准营销 精准营销是私域流量运营的核心所在。通过精细化运营和个性化服务,企业可以将普通用户转化为忠实粉丝,提高用户的粘性和转化率。采用数据驱动的精准营销策略,深度挖掘用户需求…...
k8s部署hadoop
(作者:陈玓玏) 配置和模板参考helm仓库:https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop 先通过以下命令生成yaml文件: helm template hadoop pfisterer-hadoop/hadoop > hadoop.yaml用kube…...
deepspeed分布式训练在pytorch 扩展(PyTorch extensions)卡住
错误展示: Using /root/.cache/torch_extensions/py310_cu121 as PyTorch extensions root... Using /root/.cache/torch_extensions/py310_cu121 as PyTorch extensions root... 错误表现: 出现在多卡训练过程的pytorch 扩展,deepspee…...
Rust 的 HashMap
在 Rust 中,HashMap 是一个从键(key)映射到值(value)的数据结构。它允许你以 O(1) 的平均时间复杂度存储、检索和删除键值对。HashMap 实现了 std::collections::HashMap 结构体,通常通过 use std::collect…...
exporter方式监控达梦数据库
蓝鲸监控 随着国产化和信创的深入,开始普遍使用国产化数据库–如达梦数据库,蓝鲸平台默认没有对其进行监控,但是平台了提供监控告警的能力。比如脚本采集,脚本的是一种灵活和快速的监控采集方式,不同层的监控对象都可…...
供应链安全之被忽略的软件质量管理平台安全
背景 随着我国信息化进程加速,网络安全问题更加凸显。关键信息基础设施和企业单位在满足等保合规的基础上,如何提升网络安全防御能力,降低安全事件发生概率?默安玄甲实验室针对SonarQube供应链安全事件进行分析,强调供…...
python入门(二)
python的安装很方便,我们这里就不再进行讲解,大家可以自己去搜索视频。下面分享一下Python的入门知识点。 执行命令的方式 在安装好python后,有两种方式可以执行命令: 命令行程序文件,后缀名为.py 对于命令行&…...
Mysql,MongoDB,Redis的横纵向对比
一,什么是Mysql Mysql是一款安全,可以跨平台,高效率的数据库系统,运行速度高,安全性能高,支持面向对象,安全性高,并且成本比较低,支持各种开发语言,数据库的存储容量大,有许多的内置函数。 二,什么是MongoDB MongoDB是基于分布式文件存储的数据库,是一个介于关…...
css3 实现html样式蛇形布局
文章目录 1. 实现效果2. 实现代码 1. 实现效果 2. 实现代码 <template><div class"body"><div class"title">CSS3实现蛇形布局</div><div class"list"><div class"item" v-for"(item, index) …...
基于消失点的相机自标定
基于消失点的相机自标定 附赠最强自动驾驶学习资料:直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中,平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…...
Python:filter过滤器
filter() 是 Python 中的一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,一个是函数,一个是序列,序列的每个元素作为参数传递给函数进行判定&…...
Python函数学习
Python函数学习 1.函数定义 在函数定义阶段只检查函数的语法问题 2.实参形参 总结: (1)位置参数就是经常用的按照位置顺序给出实参的值; (2)关键字实参形式:key123;放在…...
IDEA中的Project工程、Module模块的概念及创建导入
1、IDEA中的层级关系: project(工程) - module(模块) - package(包) - class(类)/接口具体的: 一个project中可以创建多个module一个module中可以创建多个package一个package中可以创建多个class/接口2、Project和Module的概念: 在 IntelliJ …...
如何快速下载并剪辑B站视频
1、B站手机端右上角缓存视频; 2、在手机文件管理助手中找到android/data/80找到两个文件,video.m4s和audio.m4s,将它们发送到电脑,系统会默认保存在你的个人文件夹里,C:\users\用户名 3、下载ffmepg https://blog.cs…...
智慧矿山新趋势:大数据解决方案一览
1. 背景 随着信息技术的快速发展和矿山管理需求的日益迫切,智慧矿山作为一种创新的矿山管理方式应运而生。智慧矿山借助先进的信息技术,实现对矿山生产、管理、安全等各方面的智能化、高效化、协同化,是矿山行业转型升级的必然趋势。 欢迎关…...
Ubuntu使用Docker部署Nginx容器并结合内网穿透实现公网访问本地服务
目录 ⛳️推荐 1. 安装Docker 2. 使用Docker拉取Nginx镜像 3. 创建并启动Nginx容器 4. 本地连接测试 5. 公网远程访问本地Nginx 5.1 内网穿透工具安装 5.2 创建远程连接公网地址 5.3 使用固定公网地址远程访问 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#…...
面试笔记——Redis(使用场景、面临问题、缓存穿透)
Redis的使用场景 Redis(Remote Dictionary Server)是一个内存数据结构存储系统,它以快速、高效的特性闻名,并且它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景: 缓…...
电机学(笔记一)
磁极对数p: 直流电机的磁极对数是指电机定子的磁极对数,也等于电机电刷的对数。它与电机的转速和扭矩有直接关系。一般来说,极对数越多,电机转速越低,扭矩越大,适用于低速、高扭矩的场合;相反&…...
数值分析复习:Newton插值
文章目录 牛顿(Newton)插值引入背景插值条件基函数插值多项式差商差商的基本性质差商估计差商的Leibniz公式 余项估计 本篇文章适合个人复习翻阅,不建议新手入门使用 牛顿(Newton)插值 引入背景 Lagrange插值每引入一…...
做网站需要买域名吗/西安网站搭建公司
大意:给定一个无向图,问是否存在一条边使得删去该边后,使得该边左、右的双联通分量的权值的差值尽量小。 思路:求得双连通分量后,把原图缩成了一棵树,然后再树上做DP即可,求ans min(ans, (sum-…...
免费网站商城模板/郑州网站排名优化公司
1需求:请输出一个4行5列的星星(*)图案。 ***** ***** ***** ***** 2,注意事项: System.out.println("*");和System.out.print("*");的区别 外循环控制行数,内循环控制列数 class Demo1_ForFor {public…...
北京企业网站制作哪家好/北京网站优化推广公司
MySQL5.6引入了一个新的系统变量eq_range_index_dive_limit。查阅MySQL5.6官方文档得知,MySQL在执行等值范围查询例如select ... from xxx where xxx in(...)时,优化器在计算执行计划成本时会根据条件个数采用不同的方式以减小选择执行计划的开销。当条件…...
技术交流网站开发例子/推广平台
本文主要为大家详细介绍了python如何为被装饰的函数保留元数据,希望能帮助到大家。案例:在函数对象中保存着一些函数的元数据,如:f.__name__ 函数名f.__doc__ 函数文档f.__moudle__ 函数所属模块名f.__dict__ 属性字典f.__default…...
自己做的网站外网访问/市场营销推广策划方案
一:语句块 语句块是指成块的代码,通常由若干行组成(也有的只有单条语句的语句块),和块外的代码处于不同的层次关系。 Python使用行首的缩进来标明语句块。Python 解释器没有限制在每一级缩进使用几个空格,…...
做网站的那些高清图上哪里找/恶意点击竞价是用的什么软件
一、PyTorch环境 PyTorch 1.0 安装torchvision及报错的解决办法如下: 下载命令1:pip3 install torchvision #可能会报错 下载命令2:pip install --no-deps torchvision Linux下,可能需要sudo 二、PyTorch自带常用数据集列表 MNIST #一个手写数…...