在Linux上安装和使用ZFS

news2024/11/18 10:28:09

真正的文件系统终极者

ZFS 文件系统的英文名称为 ZettabyteFileSystem,也叫动态文件系统,是第一个 128 位文件系统。最初是由 Sun 公司为 Solaris10 操作系统开发的文件系统。作为 OpenSolaris 开源计划的一部分,ZFS 于 2005 年 11 月发布,被 Sun 称为是终极文件系统,经历了 10 年的活跃开发,而最新的开发将全面开放,并重新命名为 OpenZFS。

ZFS 是一种先进的、高度可扩展的文件系统,最初是由 Sun Microsystems 开发的,现在 OpenZFS 是项目的一部分。有这么多文件系统可用在 Linux 上,那自然要问 ZFS 有什么特别之处。不同于其它文件系统,它不仅是一个文件系统逻辑卷管理器。

在Linux上安装和使用ZFS

在Linux上安装和使用ZFS

1. ZFS 文件系统介绍

ZFS 文件系统是一种革新性的新文件系统,可从根本上改变文件系统的管理方式,并具有目前面市的其他任何文件系统所没有的功能和优点。ZFS 强健可靠、可伸缩、易于管理。

ZFS 非常的优秀,这是一个真正现代的文件系统,内置的功能对于处理大量的数据很有意义。现在,如果您正在考虑将 ZFS 用于您的超高速 NVMe SSD,这可能不是一个最佳选择。 它比别的文件系统要慢,不过,这完全没有问题, 它旨在存储大量的数据并保持安全。

ZFS 消除了建立传统 RAID 阵列(独立磁盘冗余阵列)的需要。 相反,您可以创建 ZFS 池,甚至可以随时将驱动器添加到这些池中。ZFS 池的行为操作与 RAID 几乎完全相同,但功能内置于文件系统中。
ZFS 也可以替代 LVM(逻辑盘卷管理),使您能够动态地进行分区和管理分区,而无需处理底层的细节,也不必担心相关的风险。
这也是一个 CoW(写时复制)文件系统。 这里不会提及太多的技术性,这意味着 ZFS 可以保护您的数据免受逐渐损坏的影响。 ZFS 会创建文件的校验和,并允许您将这些文件回滚到以前的工作版本。
[1] ZFS 使其受欢迎的特性是:

数据完整性 —— 数据一致性和完整性通过即写即拷和校验技术保证。
存储空间池 —— 可用存储驱动器一起放入称为 zpool 的单个池。
软件 RAID —— 像发出一个命令一样,建立一个 raidz 数组。
内置的卷管理器 —— ZFS 充当卷管理器。
Snapshots、克隆、压缩 —— 这些都是一些 ZFS 提供的高级功能。
[2] ZFS 的常用的术语:

Pool
存储驱动器的逻辑分组,它是 ZFS 的基本构建块,从这里将存储空间分配给数据集。
Datasets
ZFS 文件系统的组件即文件系统、克隆、快照和卷被称为数据集。
Mirror
一个虚拟设备存储相同的两个或两个以上的磁盘上的数据副本,在一个磁盘失败的情况下,相同的数据是可以用其他磁盘上的镜子。
Resilvering
在恢复设备时将数据从一个磁盘复制到另一个磁盘的过程。
Scrub
擦除用于一致性检验在 ZFS 像在其他文件系统如何使用 fsck。
[3] 参考链接地址:

ZFS 官方网站地址
Oracle Solaris ZFS 管理指南
如何在 Centos7 上安装和使用 ZFS
如何在 Ubuntu 上使用 ZFS 文件系统
Oracle Solaris ZFS 故障排除和池恢复

2. 在 CentOS7 上安装

zfs install on centos7.8

#需要先安装支持包EPEL仓库
#然后在ZFS存储库上安装所需的ZFS包
$ yum localinstall --nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
$ yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

#/etc/yum.repos.d/zfs.repo
[zfs]
name=ZFS on Linux for EL 7 - dkms
baseurl=http://download.zfsonlinux.org/epel/7/$basearch/
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux

[zfs-kmod]
name=ZFS on Linux for EL 7 - kmod
baseurl=http://download.zfsonlinux.org/epel/7/kmod/$basearch/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux

#现在安装内核开发和zfs包
#内核开发的软件包是需要ZFS建立模块和插入到内核中
$ sudo yum install epel-release
$ sudo yum install kernel-devel zfs

3. 在 Ubuntu18.04 上安装

zfs install on ubutu18.04

#Ubuntu16.04LTS
$ sudo apt install zfs

#Ubuntu17.04及以后
#在Ubuntu上安装ZFS非常简单
$ sudo apt install zfsutils

4. 在 ZFS 池的常用操作

我们这里只介绍了 ZFS 的基本用法 => 官方地址

ZFS 会在您的池的根文件系统中创建一个目录。 您可以使用 GUI 文件管理器或 CLI 按名称浏览它们。ZFS 非常强大,还有很多其它的东西可以用它来做,但这些都是基础。 这是一个优秀的存储负载文件系统,即使它只是一个用于文件的硬盘驱动器的 RAID 阵列。 ZFS 在 NAS 系统上也非常出色。无论 ZFS 的稳定性和可靠性如何,在您的硬盘上实施新的功能时,最好备份您的数据。

在Linux上安装和使用ZFS

在Linux上安装和使用ZFS

#不用执行了,我优化的输出内容
escape@abbzz:~$ sudo zpool --help

#创建和销毁
zpool create [-fnd] [-o property=value] …
[-O file-system-property=value] …
[-m mountpoint] [-R root] …
zpool destroy [-f]

#添加和删除
zpool add [-fgLnP] [-o property=value] …
zpool remove …

#查看池状态
list [-gHLPv] [-o property[,…]] [-T d|u] [pool] … [interval [count]]
iostat [-gLPvy] [-T d|u] [pool] … [interval [count]]
status [-gLPvxD] [-T d|u] [pool] … [interval [count]]

#标记磁盘信息
online …
offline [-t] …
clear [-nF] [device]
reopen

#故障时的操作
attach [-f] [-o property=value]
detach
replace [-f] [-o property=value] [new-device]
split [-gLnP] [-R altroot] [-o mntopts]
[-o property=value] [ …]

#检查数据完整性的最简单的方法,对池中所有数据启动显式清理操作
scrub [-s] …

#磁盘数据迁移和恢复
import [-d dir] [-D]
import [-d dir | -c cachefile] [-F [-n]] <pool | id>
import [-o mntopts] [-o property=value] …
[-d dir | -c cachefile] [-D] [-f] [-m] [-N] [-R root] [-F [-n]] -a
import [-o mntopts] [-o property=value] …
[-d dir | -c cachefile] [-D] [-f] [-m] [-N] [-R root] [-F [-n]]
<pool | id> [newpool]
export [-af] …
upgrade
upgrade -v
upgrade [-V version] <-a | pool …>
reguid

#查看日志信息
history [-il] [] …
events [-vHfc]

#获取和设置信息
get [-pH] <“all” | property[,…]> …
set <property=value>
4.1 创建和销毁池
创建池: zpool create -f > 销毁池: zpool destroy

环境准备

[root@li1467-130 ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Mar 16 08:12 /dev/sda
brw-rw---- 1 root disk 8, 16 Mar 16 08:12 /dev/sdb
brw-rw---- 1 root disk 8, 32 Mar 16 08:12 /dev/sdc
brw-rw---- 1 root disk 8, 48 Mar 16 08:12 /dev/sdd
brw-rw---- 1 root disk 8, 64 Mar 16 08:12 /dev/sde
brw-rw---- 1 root disk 8, 80 Mar 16 08:12 /dev/sdf
创建池 => zfspool

#创建一个池的驱动器
#zpool create …
$ sudo zpool create -f zfspool sdc sdd sde sdf

#zpool状态的命令显示可用池的状态
$ sudo zpool status
pool: zfspool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
errors: No known data errors

#验证如果池创建成功
#使用zpool创造了一个池的名字zfspool大小3.7GB的空间,同时挂载在/zfspool
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 50M 447M 11% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
zfspool 3.7G 0 3.7G 0% /zfspoolv
销毁池 => zfspool

#销毁一个地址池
$ sudo zpool destroy zfspool
4.2 添加和删除磁盘
更新池

#当你更新ZFS时,你也需要更新你的池

#更新指定池
$ sudo zpool upgrade zfspool

#更新全部池
$ sudo zpool upgrade -a
添加磁盘

#您也可以随时将驱动器添加到池中
$ sudo zpool add zfspool -f /dev/sdx
删除磁盘

#您也可以随时将驱动器从池中删除
$ sudo zpool remove zfspool -f /dev/sdx
4.3 快速创建 RAID 池
来来来,你要高级操作来了!

[1] RAID0
RAID0 只是把你的硬盘集中到一个池子里面,就像一个巨大的驱动器一样。 它可以提高你的驱动器速度(数据条带化后,并行访问,可以提高文件读取速度)但是如果你的驱动器有损坏,你可能会失丢失数据。要使用 ZFS 实现 RAID0,只需创建一个普通的池。

#RAID0
$ sudo zpool create -f zfspool /dev/sdc /dev/sdd
[2] RAID1(镜像)
您可以在 ZFS 中使用 mirror 关键字来实现 RAID1 功能。 RAID1 会创建一个一对一的驱动器副本。 这意味着您的数据一直在备份。 它也提高了性能。 当然,你将一半的存储空间用于了复制。

#RAID1
$ sudo zpool create -f zfspool mirror /dev/sdc /dev/sdd
[3] RAID5/RAIDZ1
ZFS 将 RAID5 功能实现为 RAIDZ1。 RAID5 要求驱动器至少是 3 个。并允许您通过将备份奇偶校验数据写入驱动器空间的 1/n(n 是驱动器数),留下的是可用的存储空间。 如果一个驱动器发生故障,阵列仍将保持联机状态,但应尽快更换发生故障的驱动器。

#RAID5/RAIDZ
$ sudo zpool create -f zfspool raidz1 /dev/sdc /dev/sdd /dev/sde
[4] RAID6/RAIDZ2
RAID6 与 RAID5 几乎完全相同,但它至少需要四个驱动器。 它将奇偶校验数据加倍,最多允许两个驱动器损坏,而不会导致阵列关闭。

#RAID6/RAIDZ2
$ sudo zpool create -f zfspool raidz2 /dev/sdc /dev/sdd /dev/sde /dev/sdf
[5] RAID10(条带化镜像)
RAID10 旨在通过数据条带化提高存取速度和数据冗余来成为一个两全其美的解决方案。 你至少需要四个驱动器,但只能使用一半的空间。 您可以通过在同一个池中创建两个镜像来创建 RAID10 中的池

#RAID10
$ sudo zpool create -f zfspool mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf
4.4 查看 zpool 池状态
主要用于查看和排除问题使用的命令

#查看池状态
$ sudo zpool status
$ sudo zpool status -x

#查看池状态
$ sudo zpool list

#查看池状态
$ sudo zpool get all

#显示以前修改了池状态信息
$ sudo zpool history

#对应信息解释
$ sudo zpool status
pool: data2 # 池的名称
state: ONLINE # 池的当前运行状况
scan: scrub repaired 0 in 0h39m with 0 errors on Sun Dec 8 01:03:48 2019

config: # 发出读取请求时出现I/O错误|发出写入请求时出现I/O错误|校验和错误
NAME STATE READ WRITE CKSUM
data2 ONLINE 0 0 0
vdd ONLINE 0 0 0
vde ONLINE 0 0 0

errors: No known data errors # 确定是否存在已知的数据错误

5. 在 ZFS 池创建快照

快照是文件系统或卷的只读副本。快照几乎可以即时创建,而且最初不占用池中的其他磁盘空间。但是,当活动数据集中的数据发生更改时,快照通过继续引用旧数据占用磁盘空间,从而阻止释放磁盘空间。

ZFS 快照具有以下特征
可在系统重新引导后存留下来,理论最大快照数是 2 的 64 次方个
快照直接占用存储池(从中创建这些快照的文件系统或卷所在的存储池)中的磁盘空间
递归快照可作为一个原递归快照可作为一个原子操作快速创建。要么一起创建快照(一次创建所有快照),要么不创建任何快照。原子快照操作的优点是始终在一个一致的时间捕获快照数据,即使跨后代文件系统也是如此。
在Linux上安装和使用ZFS

在Linux上安装和使用ZFS

5.1 创建和销毁快照
快照是使用 zfs snapshot 命令创建的,该命令将要创建的快照的名称用作其唯一参数。

#快照名称必须满足ZFS 组件命名要求中所述的命名要求
$ sudo zfs snapshot filesystem@snapname
$ sudo zfs snapshot volume@snapname

#查看现在使用的zfs文件系统
$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 1T 888G 1T /data

#创建快照
$ sudo zfs snapshot data@2020-04-28

#创建之后直接查看容量
$ sudo zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
data@2020-04-28 221K - 1T -

#删除一些文件之后查看容量发现USED占用很多
#这是因为现在文件系统这些文件已经删除了,但是快照还占用着没有释放
$ zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
data@2020-04-28 28.2G - 1T -
通过使用 -r 选项为所有后代文件系统创建快照,如 /data 目录各个子目录都挂载了独立的 zfs 文件系统。

#通过使用-r选项可为所有后代文件系统创建快照
$ sudo zfs snapshot -r data@2020-04-28

#查看创建的快照列表
$ sudo zfs list -t snapshot -r data@2020-04-28
NAME USED AVAIL REFER MOUNTPOINT
data@2020-04-28 0 - 34K -
data/home@2020-04-28 0 - 2.00G -
data/app@2020-04-28 0 - 1.00G -
data/postgres@2020-04-28 0 - 2.00G -
使用 zfs destroy 命令可以销毁快照

#没有使用-r参数来创建快照
$ sudo zfs destroy data@2020-04-28

#使用-r参数来创建快照的话,需要先删除下层快照
$ sudo zfs destroy data@2020-04-28
cannot destroy ‘data@2020-04-28’: filesystem has children
use ‘-r’ to destroy the following datasets:
data/home@2020-04-28
data/app@2020-04-28
data/postgres@2020-04-28

#删除下层快照
$ sudo zfs destroy data/home@2020-04-28
$ sudo zfs destroy data/app@2020-04-28
$ sudo zfs destroy data/postgres@2020-04-28
$ sudo zfs destroy data@2020-04-28
保持 ZFS 快照顾名思义,就是保持快照防止它被不小心销毁了。每个快照都有一个关联的用户引用计数,其初始值为 0。在一个快照上设置一个保持标志时,此计数递增 1;释放一个保持标志时,此计数递减 1。

#保持一个快照或一组快照
$ sudo zfs hold keep data@2020-04-28

#使用-r选项递归保持所有后代文件系统的快照
$ sduo zfs hold -r keep data@2020-04-28

#防止快照不小心销毁掉了
$ sudo zfs destroy data@2020-04-28
cannot destroy ‘data@2020-04-28’: dataset is busy

#要销毁保持的快照,须使用-d选项
$ sudo zfs destroy -d data@2020-04-28

#显示受保持的快照列表
$ sudo zfs holds data@2020-04-28
$ sudo zfs holds -r data@2020-04-28

#释放对一个快照或一组快照的保持
$ sudo zfs release -r keep data@2020-04-28

#释放快照后销毁快照
$ sudo zfs destroy -r data@2020-04-28
重命名 ZFS 快照顾名思义,就是重命名快照,但是必须在从中创建它们的池和数据集中对它们进行重命名。

#单个快照重命名
$ sudo zfs rename data@2020-04-28 data@2020-04-27

#以递归方式重命名快照
$ sudo zfs rename -r data@2020-04-28 @2020-04-27
5.2 显示和访问快照
可以通过 listsnapshots 池属性启用或禁用 zfs list 输出中的快照列表显示。缺省情况下,此属性处于启用状态。如果禁用了此属性,则可以使用 zfs list -t snapshot 命令来显示快照信息。或者启用 listsnapshots 池属性。

#获取属性
$ sudo zpool get listsnapshots data
NAME PROPERTY VALUE SOURCE
data listsnapshots on default

设置属性

$ sudo zpool set listsnapshots=off data

#查看已经修改了
$ sudo zpool get listsnapshots data
NAME PROPERTY VALUE SOURCE
data listsnapshots off local
可以列出快照,也可以列出为特定文件系统创建的快照。

#默认显示
$ sudo zfs list -t snapshot -r tank/home
NAME USED AVAIL REFER MOUNTPOINT
tank/home/cindy@today 0 - 2.00G -
tank/home/mark@today 0 - 2.00G -
tank/home/matt@tuesday 20K - 1.00G -

#列出为特定文件系统创建的快照
$ sduo zfs list -r -t snapshot -o name,creation tank/home
NAME CREATION
tank/home/cindy@today Fri May 6 6:32 2020
tank/home/mark@today Fri May 6 6:22 2020
tank/home/matt@tuesday Tue May 3 6:27 2020
5.3 快照恢复和回滚
快照恢复即我们没有办法直接将文件系统回滚到之前创建快照的时候,比如在该文件系统同时产生了多个服务的数据,而我们只需要将一个服务的数据进行回滚操作。这个时候就需要,我们手动恢复数据了。

#将快照挂载到一个临时目录,手动进行数据恢复
$ sudo mount -t zfs data@2020-04-28 /mnt/recovery
可以使用 zfs rollback 命令放弃自特定快照创建以来对文件系统所做的全部更改。文件系统恢复到创建快照时的状态。缺省情况下,该命令无法回滚到除最新快照以外的快照。要回滚到早期快照,必须销毁所有的中间快照。可以通过指定 -r 选项销毁早期的快照。如果存在任何中间快照的克隆,则还必须指定 -R 选项以销毁克隆。

#示例快照列表
$ sudo zfs list -t snapshot -r tank/home
NAME USED AVAIL REFER MOUNTPOINT
tank/home/matt@today 0 - 2.00G -
tank/home/mark@today 0 - 2.00G -
tank/home/matt@tuesday 20K - 1.00G -
tank/home/matt@wednesday 20K - 1.00G -
tank/home/matt@thursday 0 - 1.00G -

#会将tank/home/matt文件系统回滚到tuesday快照
$ sudo zfs rollback tank/home/matt@tuesday
cannot rollback to ‘tank/home/matt@tuesday’: more recent snapshots exist
use ‘-r’ to force deletion of the following snapshots:
tank/home/matt@wednesday
tank/home/matt@thursday

#删除中间的快照即可恢复到之前的版本
$ sudo zfs rollback -r tank/home/matt@tuesday
确定 ZFS 快照的差异即可以通过 diff 命令来对比快照之间的文件差异。

#确定两个快照之间的差异
$ sudo zfs diff tank/home/tim@snap1 tank/home/timh@snap2
M /tank/home/tim/

  •   /tank/home/tim/fileB
    

6. 在 ZFS 池管理设备

很少会使用到,如果使用到的话,可以查看查看链接!

一旦创建一个池,从池中可以添加或删除热备件和缓存设备,从镜像池替换设备中连接或者分离,但是冗余和 raidz 设备不能从池中删除。

#创建一个池称为testpool成的两个设备(sdc和sdd)
$ sudo zpool create -f testpool sdc sdd

#另一个设备sde将被添加到这里
$ sudo zpool add testpool sde

#正如前面提到的,我不能删除这个新添加的设备(因为它是一个冗余或raidz池)
$ sudo zpool remove testpool sde
cannot remove sde: only inactive hot spares, cache, top-level, or log devices can be removed

#标记磁盘状态为运行
$ sudo zpool online testpool sdc

#在有故障的时候,标记磁盘状态为非运行
$ sudo zpool offline testpool sdc
作为组合的文件系统和卷管理器,ZFS 可以呈现许多不同的故障。

#但我可以在这个池添加一个空闲磁盘和删除它
$ sudo zpool add testpool spare sdf

#如果已使用热备件自动替换了故障磁盘,则您可能需要在替换故障磁盘后分离该热备件
#例如: 如果替换故障磁盘后,sdf仍为活动热备件,则对其进行附加
#例如: 如果替换故障磁盘后,sdf仍为活动热备件,则对其进行分离
$ sudo zpool attach testpool sdf
$ sudo zpool detach testpoll sdf

#当设备发生故障或损坏,我们可以使用replace命令替换故障磁盘sdc
$ sudo zpool replace testpool sdc sdd

#在镜像配置当中我们将爆力的测试一个设备
$ sudo zpool create -f testpool mirror sdd sde

#这将创建一个镜像磁盘池组成的SDD和SDE
#现在,让我们故意损坏SDD写零到磁盘中
$ sudo dd if=/dev/zero of=/dev/sdd

#我们将使用“scrub”命令来检测这种损坏
$ sudo zpool scrub testpool

#现在我们用SDC替换SDD
$ sudo zpool replace testpool sdd sdc; zpool status

7. 在 ZFS 池的迁移

很少会使用到,如果使用到的话,可以查看查看链接!

我们可以使用导出和导入命令在不同的主机之间迁移存储池,需要注意的是,在池中使用的磁盘应该从两个系统中可用,才能正常迁移数据。

[root@li1467-130 ~]# zpool export testpool
[root@li1467-130 ~]# zpool status
no pools available
使用 zpool import 命令列出所有可以利用的池。

[root@li1467-131 ~]# zpool import
pool: testpool
id: 3823664125009563520
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
testpool ONLINE
sdc ONLINE
sdd ONLINE
sde ONLINE
执行这个系统命令,现在导入要求的池。

[root@li1467-131 ~]# zpool import testpool
[root@li1467-131 ~]# zpool status
pool: testpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors

文章作者: Escape
文章链接: https://www.escapelife.site/posts/caf259ea.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !

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

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

相关文章

《MySQL 8从零开始学(视频教学版)》简介

#好书推荐##好书奇遇季#《MySQL 8从零开始学&#xff08;视频教学版&#xff09;》&#xff0c;定价89元&#xff0c;京东当当天猫都有发售。本书面向MySQL 8数据库初学者&#xff0c;是MySQL数据库畅销入门书。 配套资源 本书配套400个实例和14个综合案例的源码、PPT课件、近2…

/etc/passwd详解

目录 一、统一性和标准化 二、功能和权限 三、内容详解 1、/etc/passwd为按行记录的文本文件&#xff0c;每行记录一个用户的信息 2、每行信息内容 四、参考文献 一、统一性和标准化 各版本的Linux操作系统的/etc/passwd功能和内容格式基本相同。 &#xff08;1&#xf…

Spark环境搭建(Stand alone模式)

Sand alone 架构 Standalone模式是Spark自带的一种集群模式&#xff0c;不同于前面本地模式启动多个进程来模拟集群的环境&#xff0c;Standalone模式是真实地在多个机器之间搭建Spark集群的环境&#xff0c;完全可以利用该模式搭建多机器集群&#xff0c;用于实际的大数据处理…

红黑树的迭代器红黑树与AVL树的比较

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、红黑树泛型实现map&#xff0c;set对多出来的模板参数的解释二、map和set对红黑树迭代器的封装①迭代器operator②operator--三、红黑树…

Web3中文|全球首个中华武术收藏级卡牌系列发布,传武文化的未来在元宇宙?

谈及中华武术的传承与发展&#xff0c;大家首先能想到什么&#xff1f;小说、电影、动画、游戏……等等&#xff0c;都是曾经的载体。作为中华文化极其重要的一部分&#xff0c;武术是国人独有的标签&#xff0c;太多经典作品珠玉在前&#xff0c;如今武术的传承&#xff0c;需…

【JavaScript】跟着pink学习第二天部分案例

1.猜数字游戏 三次机会&#xff0c;猜1~50之间的一个整数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vi…

12月第4周榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月19日-12月25日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的…

【Python百日进阶-数据分析】Day140 - plotly表:plotly.graph_objects.Table()

文章目录一、语法二、参数三、返回值四、实例4.1 基本表4.2 样式表4.3 使用 Pandas 数据框4.4 Dash中的表4.5 更改行和列大小4.6 交替行颜色4.7 基于变量的行颜色4.8 基于变量的单元格颜色一、语法 构造一个新的 Table 对象 用于查看详细数据的表格视图。数据以行和列的网格排…

screen命令简要说明

screen命令简要说明 screen命令有什么用 screen命令虚拟了一个终端(session)&#xff0c;可在终端内运行命令&#xff0c;多次运行screen命令可以虚拟多个不同的终端&#xff1b; 每个session可以开启多个窗口&#xff0c;每个窗口有自己的shell&#xff0c;可以在不同的窗口…

ConcurrentSkipListMap-跳跃表 源码解析

ConcurrentSkipListMap-跳跃表 源码解析 问题 跳跃表长什么样子呢&#xff1f;跳跃表如何查找指定 key 数据呢&#xff1f;跳跃表如何添加指定 key-value 数据呢&#xff1f;跳跃表如何删除指定 key 数据呢&#xff1f; 理论知识 跳表是一个随机化的数据结构&#xff0c;实…

如何将两个笔记本电脑进行相互投屏

文章目录&#xff09;使用以下定义&#xff1a;实际中&#xff1a;A和B电脑分别安装无线显示器B电脑这么做&#xff1a;A电脑这么做&#xff1a;使用以下定义&#xff1a; 投影的电脑为&#xff1a;A电脑 待投影的电脑为&#xff1a;B电脑 实际中&#xff1a; A电脑为win10系…

《HelloGitHub》第 81 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01;简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。https://github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Pyth…

研讨会回顾 | 自动化测试“领导者”SmartBear解析软件质量与测试现状调研

2022年12月6日&#xff0c;龙智与软件测试自动化“领导者”SmartBear联合举办了主题为“ 如何通过自动化测试实现降本、增效与提质”的在线研讨会。 会上&#xff0c;SmartBear亚太渠道经理何平康深入解读了《2022年SmartBear软件质量与测试报告》&#xff0c;并从全球质量测试…

java开源工作流的特点介绍

我们都知道&#xff0c;在业务量激增的情况下&#xff0c;采用工作效率高的低代码开发平台已然成为趋势。目前&#xff0c;有不少专业的服务商正在积极研发低代码开发平台&#xff0c;立志为客户朋友提升办公协作效率而提升研发进度。本文将为大家介绍java开源工作流的特点&…

鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外

12月27日&#xff0c;北京易诚互动网络技术股份有限公司&#xff08;下称“易诚互动”&#xff09;在深圳证券交易所更新招股书&#xff0c;准备在创业板上市。本次冲刺上市&#xff0c;易诚互动计划募资3.13亿元&#xff0c;将用于用于数字银行应用平台升级项目、大数据智能风…

Spring Cloud(十七):高并发设计

秒杀 秒杀业务初步分析秒杀系统的挑战秒杀系统设计通用秒杀架构 页面访问常见的秒杀系统架构商城的秒杀系统设计和实现秒杀的隔离业务隔离系统隔离数据隔离 实际部署 OpenResty商品获取库存获取 Lua 访问Redis从库 — Linux 进程间通信IPC&#xff08;管道、匿名管道、共享内…

ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决

本文介绍在ArcMap软件中&#xff0c;进行分割栅格&#xff08;Split Raster&#xff09;工具处理后&#xff0c;得不到结果文件的解决方法。 最近&#xff0c;需要基于一个面要素类&#xff0c;对一个栅格遥感影像加以分割。如下图所示&#xff0c;这个面要素类中有3个部分&…

维视智造斩获2022年度光能杯最具影响力“智造”企业奖

近日&#xff0c;由光伏行业权威媒体和机构——索比光伏网、索比咨询联合主办的2022年度“光能杯”影响力大奖榜单发布&#xff0c;维视智造凭借硬件与AI算法能力、凭借在光伏行业具有创新性的智能制造产品方案与落地的标杆案例&#xff0c;斩获“2022年最具影响力“智造”企业…

算法学习:第一天-------位运算

前言 位运算是在算法设计中的一种非常重要和高效的方法&#xff0c;常见的有与运算&#xff0c;非运算&#xff0c;异或运算。我们常用的比较多的可能就是异或运算&#xff0c;又叫无进位相加。 1.1 取非运算----&#xff08;~&#xff09; 取非运算其实就是和我们的无符号数…

LCR测试仪的测试原理及使用方法

LCR表是电子测量仪器中经常使用的电子仪器&#xff0c;作为电子仪器的一员&#xff0c;LCR表经常出现在高校实验室和研究所里&#xff0c;但是对于刚接触它的用户来说&#xff0c;可能还不太了解。今天安泰测试就给大家介绍一下LCR表的测试原理和使用方法。 LCR的含义&#xf…