非关系型数据库-----------Redis的主从复制、哨兵模式

目录

一、redis群集有三种模式

1.1主从复制、哨兵、集群的区别

1.1.1主从复制

1.1.2哨兵

1.1.3集群

二、主从复制

2.1主从复制概述

2.2主从复制的作用

①数据冗余

②故障恢复

③负载均衡

④高可用基石

2.3主从复制流程

2.4搭建redis主从复制

2.4.1环境准备

2.4.2三台机器都安装redis

2.4.3修改 Redis 配置文件(Master节点操作)

2.4.4修改Redis配置文件(slave节点操作)

2.4.5验证主从效果

2.4.5.1在Master节点上看日志

2.4.5.2在Master节点上验证从节点

2.4.5.3在master节点上添加数据 从节点查看

三、Redis哨兵模式

3.1Redis哨兵模式概述

3.2哨兵模式原理

3.3哨兵模式的作用

3.3.1监控

3.3.2自动故障转移

3.3.3通知(提醒)

3.4哨兵结构由两部分组成,哨兵节点和数据节点:

3.5故障转移机制 (哨兵的原理)

1) 主观下线

2) 客观下线

3) 投票选举

3.5.1主节点的选举:

3.6搭建redis哨兵模式

3.6.1修改 Redis 哨兵模式的配置文件(所有节点都要操作)

3.6.2启动哨兵模式

3.6.3查看哨兵信息

3.6.4故障模拟

3.6.4.1去master查看进程号

3.6.4.2杀死 Master 节点上redis-server的进程号

3.6.5验证结果


一、redis群集有三种模式

redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster

1.1主从复制、哨兵、集群的区别

1.1.1主从复制

主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。

主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。

缺陷:

  • 故障恢复无法自动化;
  • 写操作无法负载均衡;
  • 存储能力受到单机的限制。

1.1.2哨兵

哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复

缺陷

  • 写操作无法负载均衡;
  • 存储能力受到单机的限制;
  • 哨兵无法对从节点进行自动故障转移,在读写分离场景下,从节点故障会导致读服务不可用,需要对从节点做额外的监控、切换操作。

1.1.3集群

集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案

但是,成本比较高,通常至少三主三从,六台起步,成本比较高!!

二、主从复制

2.1主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点

2.2主从复制的作用

①数据冗余

主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

②故障恢复

当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余

③负载均衡

在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;

尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

④高可用基石

除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

2.3主从复制原理

(1)若启动一个Slave机器进程,则它会向Master机器发送一个“sync command”命令,请求同步连接。

(2)无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。

(3)后台进程完成缓存操作之后,Master机器就会向Slave机器发送数据文件,Slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。

(4)Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

1、从节点给主节点发送sync命令,主节点则通过bgsave命令生成RDB快照文件,然后将其文件传给从节点,之后的写操作都记录在缓冲区;
2、从节点收到快照文件后执行保存到数据集中,然后再次给主发送psync命令,获取缓冲区的数据;
3、主节点发送缓冲区的写操作,从节点执行同步到数据集中,此时完成主从数据一致;
4、后续从节点会持续监测主,主节点也会定时给从节点发送写操作,从节点同步执行,实现主从数据一致;注意:从节点首次同步以及宕机恢复都需要执行一次全量数据加载,即全量备份

sync同步 RDB(完全备份文件)给从服务器 

              AOF(增量备份)给从服务器 

主从复制过程/原理:

①从---->主发送sync同步数据请求
②主redis 会fork一个子进程,然后会产生RDB文件(完全备份的文件)的过程

2.1 客户端还在持续的写入redis
③rdb文件 持久化完成后,主redis会将RDB文件和缓存起来的命令推送给我们的从服务器
④复制、推送完后,主reids 会持续的同步操作命----->利用AOF(增备)主持久化功能
⑤在下一台redis 接入主从复制之前,会持续利用AOF的方式 同步数据给从服务器

2.4搭建redis主从复制

下载安装包的链接:

https://download.redis.io/releases/

2.4.1环境准备

主机操作系统  IP地址 软件 / 安装包 / 工具
MasterCentOS7192.168.246.8 redis-5.0.7.tar.gz
Slave1  CentOS7192.168.246.9 redis-5.0.7.tar.gz
Slave2CentOS7192.168.246.10 redis-5.0.7.tar.gz

关闭防火墙、防护

systemctl stop firewalld
setenforce 0

2.4.2三台机器都安装redis

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
[root@localhost ~]#yum install gcc gcc-c++ make -y
[root@localhost ~]#cd /opt
[root@localhost opt]#ls
rh
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
redis-5.0.7.tar.gz  rh
[root@localhost opt]#tar xf redis-5.0.7.tar.gz 
[root@localhost opt]#ls
redis-5.0.7  redis-5.0.7.tar.gz  rh
[root@localhost opt]#cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]#make -j 4
[root@localhost redis-5.0.7]#make prefix=/usr/local/redis install
[root@localhost redis-5.0.7]#cd /opt/redis-5.0.7/utils/
[root@localhost utils]#./install_server.shPlease select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
[root@localhost utils]#ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost utils]#/etc/init.d/redis_6379 start
/var/run/redis_6379.pid exists, process is already running or crashed
[root@localhost utils]#netstat -natp|grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6447/redis-server 1 
[root@localhost utils]#netstat -natp|grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6447/redis-server 1 
[root@localhost utils]#
​​​​​​​[root@localhost ~]#yum install gcc gcc-c++ make -y

修改下主机名,好区分

2.4.3修改 Redis 配置文件(Master节点操作)

​vim /etc/redis/6379.confbind 0.0.0.0                     #70行,修改监听地址为0.0.0.0
daemontze yes                    #137行,开启守护进程
logfile/var/log/redis_6379.1og   #172行,指定日志文件目录
dir/var/lib/redis/6379           #264行,指定工作目录
appendonly yes                   #700行,开启AOF持久化功能
----------------------------------------
/etc/init.d/redis_6379 restart

2.4.4修改Redis配置文件(slave节点操作)

vim /etc/redis/6379.confbind 0.0.0.0						#70行,修改监听地址为0.0.0.0
daemonize yes						#137行,开启守护进程
logfile /var/log/redis_6379.log		#172行,指定日志文件目录
dir /var/lib/redis/6379				#264行,指定工作目录		
replicaof 192.168.246.8 6379        #288行,指定要同步的Master节点IP和端口
appendonly yes						#700行,开启AOF持久化功能
------------------------------------/etc/init.d/redis_6379 restart

slave2配置:

由于配置一样,我们先备份下slave2配置文件,从slave1直接远程拷贝过去到slave2,再去查看下,是否正确

2.4.5验证主从效果

2.4.5.1在Master节点上看日志
[root@master_redis ~]#tail -f /var/log/redis_6379.log

两个从同步成功

2.4.5.2在Master节点上验证从节点
redis-cli info replication

2.4.5.3在master节点上添加数据 从节点查看

三、Redis哨兵模式

3.1Redis哨兵模式概述

主从切换技术的方法是:当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点,就有了哨兵机制。

哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移

3.2哨兵模式原理

哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 Master并将所有slave连接到新的 Master

所以整个运行哨兵的集群的数量不得少于3个节点

3.3哨兵模式的作用

3.3.1监控

哨兵会不断地检查主节点和从节点是否运作正常、还有哨兵节点是否运作正常。

3.3.2自动故障转移

当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点改为复制新的主节点。

3.3.3通知(提醒)

哨兵可以将故障转移的结果发送给客户端。

3.4哨兵结构由两部分组成,哨兵节点和数据节点:

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。
  • 数据节点:主节点和从节点都是数据节点。

3.5故障转移机制 (哨兵的原理)

1.由哨兵节点定期监控发现主节点是否出现了故障

每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。

如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。

2.当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。

所以整个运行哨兵的集群的数量不得少于3个节点。

3.由leader哨兵节点执行故障转移,过程如下:

  • 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
  • 若原主节点恢复也变成从节点,并指向新的主节点;
  • 通知客户端主节点已经更换。

需要特别注意的是,客观下线是主节点才有的概念;

如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。

上图所示,多个哨兵之间也存在互相监控,这就形成了多哨兵模式,现在对该模式的工作过程进行讲解,介绍如下:

1) 主观下线
主观下线,适用于主服务器和从服务器。如果在规定的时间内(配置参数:down-after-milliseconds),Sentinel 节点没有收到目标服务器的有效回复,则判定该服务器为“主观下线”。比如 Sentinel1 向主服务发送了 PING命令,在规定时间内没收到主服务器 PONG回复,则 Sentinel1 判定主服务器为“主观下线”。
2) 客观下线
客观下线,只适用于主服务器。 Sentinel1 发现主服务器出现了故障,它会通过相应的命令,询问其它 Sentinel 节点对主服务器的状态判断。如果超过半数以上的  Sentinel 节点认为主服务器 down 掉,则 Sentinel1 节点判定主服务为“客观下线”。
3) 投票选举

投票选举,所有 Sentinel 节点会通过投票机制,按照谁发现谁去处理的原则,选举 Sentinel1 为领头节点去做 Failover(故障转移)操作。Sentinel1 节点则按照一定的规则在所有从节点中选择一个最优的作为主服务器,然后通过发布订功能通知其余的从节点(slave)更改配置文件,跟随新上任的主服务器(master)。至此就完成了主从切换的操作。

对上对述过程做简单总结:

Sentinel 负责监控主从节点的“健康”状态。当主节点挂掉时,自动选择一个最优的从节点切换为主节点。客户端来连接 Redis 集群时,会首先连接 Sentinel,通过 Sentinel 来查询主节点的地址,然后再去连接主节点进行数据交互。当主节点发生故障时,客户端会重新向 Sentinel 要地址,Sentinel 会将最新的主节点地址告诉客户端。因此应用程序无需重启即可自动完成主从节点切换

①哨兵对主从复制集群进行监控     监控对象"所有redis数据节点"

②哨兵与哨兵之间进行相互监控     监控的对象: 哨兵彼此
③监控目的
3.1 哨兵与哨兵之间的监控目的:检测彼此的存活状态
3.2 哨兵监控所有的redis数据库的目的:为了实现故障自动故障切换
故障切换原理
① 当master 挂掉,哨兵会及时发现,发现之后 进行投票机制,选举出一个新的master服务器一定是基数)
② 完成salve----->master的 从向主 进行切换
③ 完成其他的从服务器对新的master配置


3.5.1主节点的选举:
  • 过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
  • 选择配置文件中从节点优先级配置最高的(replica-priority,默认值为100)
  • 选择复制偏移量最大,也就是复制最完整的从节点。

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式

3.6搭建redis哨兵模式

环境准备:

主机操作系统  IP地址 软件 / 安装包 / 工具
Master、sentinel1CentOS7192.168.246.8 redis-5.0.7.tar.gz
Slave1、sentinel2CentOS7192.168.246.9 redis-5.0.7.tar.gz
Slave2、sentinel3CentOS7192.168.246.10 redis-5.0.7.tar.gz

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式

哨兵模式要在基于主从复制已搭建完成的前提下才可以做哦

3.6.1修改 Redis 哨兵模式的配置文件(所有节点都要操作)

vim /opt/redis-5.0.7/sentinel.conf
------------------------------------------
protected-mode no								#17行,关闭保护模式
port 26379										#21行,Redis哨兵默认的监听端口
daemonize yes									#26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log"					#36行,指定日志存放路径
dir "/var/lib/redis/6379"						#65行,指定数据库存放路径
sentinel monitor mymaster 192.168.246.8 6379 2	#84行,修改 指定该哨兵节点监控192.168.10.23:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 30000	#113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000		#146行,故障节点的最大超时时间为180000(180秒)

可以再所有主机添加ip地址加域名,这样远程拷贝可以快一点

其他两台主机配置:/opt/redis-5.0.7/sentinel.conf

scp /opt/redis-5.0.7/sentinel.conf 192.168.246.9:/opt/redis-5.0.7/sentinel.conf
scp /opt/redis-5.0.7/sentinel.conf 192.168.246.10:/opt/redis-5.0.7/sentinel.conf

3.6.2启动哨兵模式

先启master,再启slave

先启master,再启slavecd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

3.6.3查看哨兵信息

redis-cli -p 26379 info sentinel

3.6.4故障模拟

3.6.4.1去master查看进程号
ps -ef|grep redisps aux|grep redis  #查看进程

3.6.4.2杀死 Master 节点上redis-server的进程号

3.6.5验证结果

①在哨兵节点上验证master是否转换至从服务器 

tail -f /var/log/sentinel.log

再次查看哨兵信息:

②在哨兵节点上再次查看哨兵信息,查看是否转换成功

redis-cli -p 26379 info sentinel

总结

1、主从复制

redis主从复制 是为了数据冗余和读写分离

在这两种模式中,有两种角色主节点(master)和从节点(slave),主节点负责处理写的操作

并将数据更改复制到一个或多个从节点。

这样我们的主节点负载减轻,从节点可以提供数据读取服务,实现读写分离,如果主节点停止服务,从节点之一可以立即接管主节点的角色,再继续提供服务


具体流程如下:

1、从节点启动成功连接主节点后,发送一个sync命令

2、主节点接受到sync的命令后开始在后台保存快照,同时,它也开始记录接收到rsnc后所有执行写的命令,快照完成后会将这个快照文件发送给从节点。

3、从节点收到快照文件之后开始载入,并持续接受主节点发送过来的新的写命令执行

总的来说 通过主从复制,redis 能够实现数据的备份(master 产生的数据能slave备份),负责均衡(读操作可以分摊到slave上去)和高可用(master宕机后,可以由slave进行故障切换)


2、redis  哨兵机制

哨兵是一个高可用的行解决方案 官方认可 默认模式

1、监控:redis 哨兵 会持续监控master和slave实例是否正常运行

2、通知:如某个redis实例有问题,哨兵可以通过API向管理员或者其他应用发信通知

3、自动故障转移:如果master节点不工作,哨兵会开始故障转移的过程,选择一个slave节点晋升为新的master,其他剩余slave的节点会被重新配置为新的master节点的slave

4、配置提供服务:客户端可以使用哨兵来查询被认证的master节点该master节点的目录所有的slave节点


redis 哨兵是一个用于管理多个reids服务的系统,它提供监控、通知、自动故障转移、配置提供服务的功能,以实现redis高可用性

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

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

相关文章

文件夹0字节:数据恢复全攻略与防范之道

在日常使用电脑或移动设备的过程中,我们经常会遇到各种各样的问题,其中文件夹突然变为0字节的情况尤为令人头疼。这种情况通常意味着原本存储着重要文件的文件夹突然变得空空如也,文件大小显示为0字节。面对这样的数据灾难,许多人…

VSCode调试C++

1、环境准备 1.1、g的安装与使用 1.1.1、安装 方式一:Xcode安装 苹果的开发集成工具是Xcode.app,其中包含一堆命令行工具。 在 App store 可以看到其大小有好几个G,有点大。 方式二:Command Line Tools 安装 Command Line Too…

03 Python进阶:MySQL - mysql-connector

mysql-connector安装 要在 Python 中使用 MySQL 数据库,你需要安装 MySQL 官方提供的 MySQL Connector/Python。下面是安装 MySQL Connector/Python 的步骤: 首先,确保你已经安装了 Python,如果没有安装,可以在 Python…

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意:本文以 …

js表达式

js 数据: 字面量 1 123 变量 a 表达式 12 2*2 a&&b 表达式都会有一个返回结果。表达式仍然是数据,所有可以写字面量,变量的地方都可以写表达式 在JavaScript中,表达式中的运算符具有不同的优先级,这决定…

【.NET全栈】ZedGraph图表库的介绍和应用

文章目录 一、ZedGraph介绍ZedGraph的特点ZedGraph的缺点使用注意事项 二、ZedGraph官网三、ZedGraph的应用四、ZedGraph的高端应用五、、总结 一、ZedGraph介绍 ZedGraph 是一个用于绘制图表和图形的开源.NET图表库。它提供了丰富的功能和灵活性,可以用于创建各种…

国外媒体推广软文宣发:促进海外宣发新风尚,迈向国际舞台

大舍传媒http://www.dashemeijie.com 序言 伴随全球经济一体化发展趋向,越来越多的中国企业希望在国际舞台上表现自己的总体水平。而国外媒体软文发稿作为一种全新的海外宣传方式,正逐渐成为促进海外宣发新风尚的主要常用工具。接下来我们就探讨国外媒…

uniapp自定义卡片轮播图

效果图 1、封装组件 <template><view><!-- 自定义卡片轮播 --><swiper class"swiperBox" :previous-margin"swiper.margin" :next-marginswiper.margin :circular"true"change"swiperChange"><swiper-ite…

Vue项目中 安装及使用Sass(scss)

普通方法 一、安装使用scss 1. 安装 scss npm install scss --save2. 安装 node-sass 和 sass-loader sass-loader&#xff1a;把 sass编译成css node-sass&#xff1a;nodejs环境中将sass转css 提示&#xff1a;限制 node-sass&#xff0c;sass-loader 版本号&#xff0c;…

华为服务器RAID配置教程 服务器硬盘故障处理帮助 浪潮RAID配置教程 磁盘阵列配置通用教程

前言&#xff08;本文档持续更新&#xff09; 本文主要记录服务器配置RAID&#xff08;磁盘阵列&#xff09;过程中存在的细节问题及官方文档无法解决的问题的解决方案 配置环境 华为 RH2288 v3服务器配置RAID组 如何快速配置 1.找到服务器品牌的阵列卡型号&#xff0c;找不到…

了解 Solidity 语言:构建智能合约的首选编程语言

了解 Solidity 语言&#xff1a;构建智能合约的首选编程语言 Solidity 是一种用于编写智能合约的高级编程语言&#xff0c;广泛应用于以太坊和其他以太坊虚拟机&#xff08;EVM&#xff09;兼容的区块链平台。它是以太坊智能合约的首选语言之一&#xff0c;具有丰富的功能和灵活…

hexo博客7:构建简单的多层安全防御体系

【hexo博客7】构建简单的多层安全防御体系 写在最前面理解全面安全策略的重要性防御常见的网络攻击1. SQL注入攻击2. 文件上传漏洞3. 跨站脚本攻击&#xff08;XSS&#xff09;4. 跨站请求伪造&#xff08;CSRF&#xff09;5. 目录遍历/本地文件包含&#xff08;LFI/RFI&#x…

基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频

浅试Python爬取视频 1.页面分析 使用虾米视频在线解析使用方式&#xff1a;https://jx.xmflv.cc/?url目标网站视频链接例如某艺的视频 原视频链接 解析结果: 1.1 F12查看页面结构 我们发现页面内容中什么都没有&#xff0c;video标签中的src路径也不是视频的数据。 1.2 …

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…

LabVIEW电力设备在线监测系统

LabVIEW电力设备在线监测系统 在电力行业中&#xff0c;变电站的稳定运行对于保障电力系统的安全性和可靠性至关重要。开发了一种基于LabVIEW软件开发的变电站电力设备在线监测系统&#xff0c;实时监控变电站内部的电力设备状态&#xff0c;确保电力传输的高效与安全。通过对…

Hadoop和zookeeper集群相关执行脚本(未完,持续更新中~)

1、Hadoop集群查看状态 搭建Hadoop数据集群时&#xff0c;按以下路径操作即可生成脚本 [test_1analysis01 bin]$ pwd /home/test_1/hadoop/bin [test_01analysis01 bin]$ vim jpsall #!/bin/bash for host in analysis01 analysis02 analysis03 do echo $host s…

【flutter封装图片/视频选择控件】

引入库 wechat_assets_picker: ^6.0.5 、video_player: ^2.5.1 # 视频播放、 flutter_screenutil: ^5.7.0 import dart:async; import dart:io; import package:generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/customWidget/addImag…

Linux:ip和ip协议的初步认识

文章目录 ip协议基本认识ip协议的报头网段划分ip的类型划分 ip协议基本认识 前面对于TCP的内容已经基本结束了&#xff0c;那么这也就意味着在传输层也已经结束了&#xff0c;那么下一步要进入的是的是网络层&#xff0c;网络层中也有很多种协议&#xff0c;这里主要进行解析的…

安装Qrcode库的方法最终解答!_Python第三方库

安装Python第三方库Qrcode 我的环境&#xff1a;Window10&#xff0c;Python3.7&#xff0c;Anaconda3&#xff0c;Pycharm2023.1.3 Qrcode库 Qrcode库是一个专门生成二维码的库。它能够让你很容易地创建不同大小、颜色和包含不同类型数据的二维码&#xff0c;支持生成 GIF 动…

力扣2684---矩阵中移动的最大次数(DFS,Java、中等题)

目录 题目描述&#xff1a; 思路描述&#xff1a; 代码&#xff1a; 纯递归&#xff1a; 带有记忆化搜索的递归&#xff1a; 题目描述&#xff1a; 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid &#xff0c;矩阵由若干 正 整数组成。 你可以从矩阵第一列中的 任一 单…