写在前面的话

最近学习比较多流行的大数据框架和完成两个大数据项目后,又突然学起了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的更多相关文章

  1. 详解Redis持久化(RDB和AOF)

    详解Redis持久化(RDB和AOF) 什么是Redis持久化? Redis读写速度快.性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失.所以我们希望Red ...

  2. Redis 持久化之RDB和AOF

    Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File).如果你想快速了解和使用RDB和AOF,可以直 ...

  3. redis持久化(RDB、AOF、混合持久化)

    redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...

  4. Redis基础(三)Redis持久化:RDB与AOF

    什么是Redis持久化? Redis是键值对的内存数据库,它将数据存储在内存里.客户端发送命令到服务器,再由服务器到内存里查找数据. 一旦Redis服务器进程退出,存储在内存里的数据就会丢失. 为了解 ...

  5. redis学习(四)redis持久化之RDB、AOF

    redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...

  6. 详细分析Redis的持久化操作——RDB与AOF

    一.前言   由于疫情的原因,学校还没有开学,这也就让我有了很多的时间.趁着时间比较多,我终于可以开始学习那些之前一直想学的技术了.最近这几天开始学习Redis,买了本<Redis实战>, ...

  7. 【Redis】Redis学习(七) Redis 持久化之RDB和AOF

    Redis 持久化提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF ...

  8. redis——持久化方式RDB与AOF分析

    https://blog.csdn.net/u014229282/article/details/81121214 redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 ...

  9. Redis持久化方式--RDB和AOF

    转载于:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供了RDB持久化和AOF持久化 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔 ...

随机推荐

  1. OpenStack Train版-8.安装neutron网络服务(控制节点)

    安装neutron网络服务(controller控制节点192.168.0.10) 创建neutron数据库 mysql -uroot CREATE DATABASE neutron; GRANT A ...

  2. 导出Excel的异常处理

    问题: 提示:"类 Range 的 Select 方法无效" 处理方法: 设置当前工作表 this.worksheet.Activate();

  3. vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案

    vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案 原因:vue在进行输入时,进行了多次的render刷新渲染操作,导致了input框输入时发生的卡顿现象 解决方法:在 ...

  4. ASP.Net MVP Framework had been dead !

    ASP.Net MVP Framework Project Description A project to get you started with creating and designing w ...

  5. TypeScript & WebAssembly

    TypeScript & WebAssembly WASM (module (func (param $lhs i32) (param $rhs i32) (result i32) local ...

  6. auto responsive rem

    auto responsive rem 移动端适配 ;(function(win, lib) { var doc = win.document; var docEl = doc.documentEle ...

  7. 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 ...

  8. 【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!

    目录 跨平台 UI 应用 Blazor 桌面应用 System.CommandLine 其它更新 ASP.NET Core 最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心 ...

  9. Power Query 导入多源数据

    导入方法: 导入数据库文件: 修改加载方式: 其他类型数据处理方式类似

  10. 06.numpy聚合运算

    >>> import numpy as np >>> L = np.random.random(100) >>> L array([0.82846 ...