Redis持久化操作RDB和AOF 对比于HDFS的SecondaryNode
写在前面的话
最近学习比较多流行的大数据框架和完成两个大数据项目后,又突然学起了Redis。之所以之前的框架不学习记录呢,是因为之前的学习都是为了完成参加服创比赛的项目所以时间较紧,现在基本架构和编码测试完成,就开始学习新的知识并且尝试优化服创项目。当然我也不愿意复制老师的PPT写成自己的博客:),这里记录的是我在学习过程中自己的一些思考和之前大数据框架(AOF、RDB与HDFS中的SecondaryNode)的对比(大数据人绝不CV。
PS:服创项目是我从0开始的项目,等服创比赛结束后再来复盘!
Redis
Redis,REmote DIctionary Server(远程字典服务器),作为内存数据库, 同时作为NoSQL的一员,与传统的RDBMS区别还是挺大的(我最大的感觉就是简单和快速。
(读到这里那一定会有读者问了:)作为数据库,那么一定能存储数据,但是又是运行在内存中的,那怎么才能保证数据不丢失呢!(即持久化)
那便是持久化!并且有两种方式可以进行持久化,分别是RDB(Redis DataBase)和AOF(Append Only File)。笔者在学习过程中,总是脑海中不断与HDFS的SecondaryNode的备份方式进行比较,故此文作为记录!
下图是Namenode和SecondaryNode的工作流程图:
RDB -Redis DataBase
RDB持久化
Redis运行过程中,达到了一定时间点或者其他限制(比如手动刷写),启动一个子进程fork整个主进程,在子进程中将redis中的数据写入到一个临时文件中,等这个持久化过程结束后,将这个临时文件替换上次持久化的文件。
笔者在初次接触到这个理念的时候,立马就觉得这个很有可能会丢失最近一次的持久化,这不就是冷备份嘛!那secondaryNode不也是冷备份嘛。重点就在于RDB保存的是数据文件(默认为dump.rdb),就像是secondary保存的FsImage.checkpoint一样,类似于数据库中的物理备份。
下图是RDB的流程图:
配置
Redis的配置文件中就可以配置出发RDB的工作的条件:
名称 | 内容 |
---|---|
save | 配置快照出发的条件,例如save 120 2,表示在两分钟内修改了2次触发RDB,save ""表示关闭RDB。 |
stop-writes-on-bgsave-error | 如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制 |
rdbcompression | 是否对于存储的数据文件进行压缩,当然这需要消耗额外的CPU资源 |
rdbchecksum | 是否对于存储的文件使用CRC64算法进行校验 |
dbfilename | 存储的RDB数据文件名称,默认为dump.rdb |
dir | 工作路径 |
优劣势
优势:适合大规模的数据恢复;对数据完整性和一致性要求不高
劣势:在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改;fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑;同时子进程写入的时候是不可以主进程不能进行任何的IO操作
AOF-Append Only File
AOF持久化
相比于RDB的持久化,AOF采取就是将每次写入操作写入日志,在每次恢复的时候重新执行一次日志文件中的写入操作就可以了。
这里是不是很容易就联想到NameNode的edit日志,NameNode如果不走SecondaryNode的话,执行的也是将操作保存在文件中,而不是数据文件,这里就类似于数据库的逻辑备份。
下图是AOF持久化的流程图:
配置
名称 | 内容 |
---|---|
appendfsync | 同步的机制,Always表示实时同步,everysec表示每秒同步,no表示不同步 |
no-appendfsync-on-rewrite | 重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。 |
auto-aof-rewrite-min-size | 设置重写的基准值 |
auto-aof-rewrite-percentage | 设置重写的基准值百分比 |
优劣势
优势:相比于RDB,一致性较好。
劣势:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb;aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同
总结
这么对比下来,HDFS中采用的方法归根结底还是冷备份。如果HDFS只用RDB的方式,NN的压力太大,如果只用AOF的方式,效率太低,所以两者结合才是最好的方式,而这种方式对于Redis来说又过于重量级了。HDFS还将将备份文件放置在了另一台机器上,当然,Redis也可以做到,毕竟Redis是分布式数据库,存在主从复制。
这篇博客,没有涉及到Redis的具体操作,只是用来记录Redis的持久化机制,并且和HDFS的备份方式进行对比从而方便更好的理解和记忆。
人生此处,绝对乐观
Redis持久化操作RDB和AOF 对比于HDFS的SecondaryNode的更多相关文章
- 详解Redis持久化(RDB和AOF)
详解Redis持久化(RDB和AOF) 什么是Redis持久化? Redis读写速度快.性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失.所以我们希望Red ...
- Redis 持久化之RDB和AOF
Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File).如果你想快速了解和使用RDB和AOF,可以直 ...
- redis持久化(RDB、AOF、混合持久化)
redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...
- Redis基础(三)Redis持久化:RDB与AOF
什么是Redis持久化? Redis是键值对的内存数据库,它将数据存储在内存里.客户端发送命令到服务器,再由服务器到内存里查找数据. 一旦Redis服务器进程退出,存储在内存里的数据就会丢失. 为了解 ...
- redis学习(四)redis持久化之RDB、AOF
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...
- 详细分析Redis的持久化操作——RDB与AOF
一.前言 由于疫情的原因,学校还没有开学,这也就让我有了很多的时间.趁着时间比较多,我终于可以开始学习那些之前一直想学的技术了.最近这几天开始学习Redis,买了本<Redis实战>, ...
- 【Redis】Redis学习(七) Redis 持久化之RDB和AOF
Redis 持久化提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF ...
- redis——持久化方式RDB与AOF分析
https://blog.csdn.net/u014229282/article/details/81121214 redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 ...
- Redis持久化方式--RDB和AOF
转载于:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供了RDB持久化和AOF持久化 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔 ...
随机推荐
- OpenStack Train版-8.安装neutron网络服务(控制节点)
安装neutron网络服务(controller控制节点192.168.0.10) 创建neutron数据库 mysql -uroot CREATE DATABASE neutron; GRANT A ...
- 导出Excel的异常处理
问题: 提示:"类 Range 的 Select 方法无效" 处理方法: 设置当前工作表 this.worksheet.Activate();
- vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案
vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案 原因:vue在进行输入时,进行了多次的render刷新渲染操作,导致了input框输入时发生的卡顿现象 解决方法:在 ...
- ASP.Net MVP Framework had been dead !
ASP.Net MVP Framework Project Description A project to get you started with creating and designing w ...
- TypeScript & WebAssembly
TypeScript & WebAssembly WASM (module (func (param $lhs i32) (param $rhs i32) (result i32) local ...
- auto responsive rem
auto responsive rem 移动端适配 ;(function(win, lib) { var doc = win.document; var docEl = doc.documentEle ...
- npm published cli package's default install missing the `-g` flag
npm published cli package's default install missing the -g flag https://npm.community/t/npm-publishe ...
- 【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!
目录 跨平台 UI 应用 Blazor 桌面应用 System.CommandLine 其它更新 ASP.NET Core 最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心 ...
- Power Query 导入多源数据
导入方法: 导入数据库文件: 修改加载方式: 其他类型数据处理方式类似
- 06.numpy聚合运算
>>> import numpy as np >>> L = np.random.random(100) >>> L array([0.82846 ...