- 博客(34)
- 资源 (28)
- 收藏
- 关注
原创 MapReduce之小文件问题
1. 四种数据库的比较数据库 描述 Greenplum Teradata Presto Clickhouse 开源大规模并行数据分析引擎。借助MPP架构,在大型数据集上执行复杂SQL分析的速度比很多解决方案都要快。应用广泛。大型数据仓库系统,产品成熟,价格昂贵。用于证券系统。分布式SQL查询引擎, 专门进行高速、实时的数据分析。本身不存储数据,但是可以接...
2021-08-31 22:36:38 349
原创 33 | 脑裂:一次奇怪的数据丢失
目录为什么会发生脑裂?第一步:确认是不是数据同步出现了问题如何溯源?第二步:排查客户端的操作日志,发现脑裂现象第三步:发现是原主库假故障导致的脑裂可能存在的假故障?脑裂的过程为什么脑裂会导致数据丢失?如何应对脑裂问题?参数设置建议可能存在的问题网络分区导致的脑裂脑裂的本质原因min-slaves-to-write的注意点CAP理论分析脑裂为什么会发生脑裂?在主从集群中,客户端发送的数据丢失排查步骤:第一步:确认是不是数据同步出..
2021-08-31 18:09:29 232
原创 31 | 事务机制:Redis能实现ACID属性吗?
目录Redis 如何实现事务?MULTIEXECRedis 的事务机制能保证哪些属性?原子性在执行 EXEC 命令前,客户端发送的操作命令本身就有错误事务操作入队时,命令和操作的数据类型不匹配,但 Redis 实例没有检查出错误在执行事务的 EXEC 命令时,Redis 实例发生了故障, 导致事务执行失败。丢弃事务一致性情况一:命令入队时就报错情况二:命令入队时没报错,实际执行时报错情况三:EXEC 命令执行时实例发生故障隔离性WATCH机制的作用
2021-08-30 13:17:36 190
原创 29 | 无锁的原子操作:Redis如何应对并发访问?
目录并发访问中需要对什么进行控制?如何解决?加锁Redis 的两种原子操作方法单命令操作Lua 脚本并发访问中需要对什么进行控制?并发访问控制,是指对多个客户端访问操作同一份数据的过程进行控制,以保证 任何一个客户端发送的操作在 Redis实例上执行时具有互斥性。关键是要对临界资源进行并发控制什么是临界资源?例如库存客户端 A 在 t1 时读取库存值 10 并扣减 1,在 t2 时,客户端 A 还没有把扣减后的库存值 9 写回 Redis,而在...
2021-08-27 17:09:08 271
原创 30 | 如何使用Redis实现分布式锁?
目录单机上的锁和分布式锁的联系与区别分布式锁的两个要求基于单个 Redis 节点实现分布式锁上锁解锁上锁、判断、解锁如何保证原子性?setnx风险点1 :未释放锁解决:锁变量设置一个过期时间风险点2 :B释放了A得锁解决:设置锁得值要能区分来自不同客户端或不同线程的锁操作lua脚本释放锁执行lua脚本基于多个 Redis 节点实现高可靠的分布式锁分布式锁算法 Redlock总结单机上的锁和分布式锁的联系与区别单机上得锁:一个线...
2021-08-27 10:54:20 201
原创 27 | 缓存被污染了,该怎么办?
目录什么是缓存污染呢?如何解决缓存污染问题?采用随机删除?volatile-ttl 策略LRU 缓存策略单词查询的缓存污染LFU 缓存策略的优化8bit存储次数合理吗?非线性递增的计数器方法短时间大量访问之后不再访问总结什么是缓存污染呢?在一些场景下,有些数据被访问的次数非常少,甚至只会被访问一次。当这些数据服务完访问请求后,如果还继续留存在缓存中的话,就只会白白占用缓存空间。这种情况,就是缓存污染。如何解决缓存污染问题?采用随机删除...
2021-08-26 16:59:06 161
原创 26 | 缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?
目录缓存雪崩什么原因导致缓存雪崩?缓存中有大量数据同时过期,导致大量请求无法得到处理解决实例发生故障宕机实现服务熔断请求限流机制缓存击穿缓存穿透方案一:缓存空值或缺省值。方案二:布隆过滤器快速判断数据是否存在布隆过滤器是如何工作的?布隆过滤器的其他应用方案三:前端进行请求检测总结缓存雪崩缓存雪崩是指大量的应用请求无法在 Redis 缓存中进行处理,紧接着,应用将大量请求发送到数据库层,导致数据库层的压力激增。什么原因导致缓...
2021-08-25 17:38:37 240
原创 25 | 缓存异常(上):如何解决缓存和数据库的数据不一致问题?
缓存和数据库的数据不一致是如何发生的?数据的一致性”具体是啥意思缓存中有数据,那么,缓存的数据值需要和数据库中的值相同; 缓存中本身没有数据,那么,数据库中的值必须是最新值。不符合这两种情况的,就属于缓存和数据库的数据不一致问题了。只读缓存在新增、删改时遇到的问题如何解决数据不一致问题?重试机制把要删除的缓存值或者是要更新的数据库值暂存到消息队列中(例如使用Kafka 消息队列)。当应用没有能够成功地删除缓存值或者是更新数据库值时,可以从消息队列中重新读取这些值,然后.
2021-08-25 15:55:45 428
原创 24 | 替换策略:缓存满了怎么办?
目录设置多大的缓存容量合适?长尾效应重尾效应电商商品的例子最佳实践Redis 缓存有哪些淘汰策略?LRU 算法Redis 中的LRU 算法优势如何处理被淘汰的数据?什么是脏数据呢?淘汰策略使用场景业务数据中有明显的冷 热数据区分数据访问频率相差不大,没有明显的冷热数据区分业务中有置顶的需求数据访问都是有局部性的,也就是我们通常所说的“八二原理”,80% 的请求实际只访问了 20% 的数据。所以,用 1TB 的内存做缓存,并没有必要。...
2021-08-25 14:55:34 192
原创 MapReduce系统学习(2)
Shuffle过程详解shuffer是一个网络拷贝的过程,是指通过网络把数据从map端拷贝到reduce端的过程.map阶段最左边有一个inputsplit,最终会产生一个map任务,map任务在执行的时候会k1,v1转化为k2,v2,这些数据会先临时存储到一个内存缓冲区中,这个内存缓冲区的大小默认是100M(io.sort.mb属性),当达到内存缓冲区大小的80%(io.sort.spill.percent)也就是80M的时候,会把内存中的数据溢写到本地磁盘中(mapred.local....
2021-08-24 22:03:18 624 1
原创 nginx access log满引发的一个问题
今天下午突然遇到一个问题: 报表直接进不去了,重启也没有生效。最后发现是Nginx的log 目录满了如果access log目录2021/08/21 13:46:33 [crit] 12048#0: *4095135 pwritev() "/usr/local/nginx/proxy_temp/0/92/0000128920" failed (28: No space left on device) while reading upstream, client: 10.56.204.21, s
2021-08-21 15:58:43 689 1
原创 23 | 旁路缓存:Redis是如何工作的?
应用的最新数据可能会丢失,给应用业务带来风险缓存的特征一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度从图上可以看到,CPU、内存和磁盘这三层的访问速度从几十 ns 到 100ns,再到几 ms, 性能的差异很大。想象一下,如果每次 CPU 处理数据时,都要从 ms 级别的慢速磁盘中读取数据,然后再进行处理,那么,CPU 只能等磁盘的数据传输完成。这样一来,高速的 CPU 就被慢速的磁盘拖累了,整个计算机.
2021-08-16 16:22:49 286
原创 MapReduce系统学习
新思潮: 移动计算比移动数据更划算,因为大量数据的时间耗时主要是在网络I/O 和磁盘I/O.案例:如果copy一个50G的内容,就算是内网的两台机器也很慢,如果是用U盘,那就比较快。为什么呢? 因为没有网络IO,而磁盘IO一直是存在的。MapReduce原理剖析map端做的是局部的聚合排序,reduce是全局的聚合和排序。reduce是处理多个map多个分区的聚合结果。不可以混淆两者...
2021-08-15 00:02:14 1225 3
原创 21 | 缓冲区:一个可能引发“惨案”的地方
目录缓冲区的主要应用场景客户端输入和输出缓冲区如何应对输入缓冲区溢出?查看输入缓冲区的内存使用情况如何避免如何应对输出缓冲区溢出?输出缓冲区会算在maxmemory中吗?主从集群中的缓冲区复制缓冲区的溢出问题全量复制主节点上复制缓冲区的内存开销复制积压缓冲区的溢出问题repl_backlog_bufferrepl_backlog_size应用程序和 Redis 实例交互时,应用程序中使用的客户端需要使用缓冲区吗?缓冲区的主要应用场景...
2021-08-13 13:13:12 161
原创 20|Redis 删除数据后,为什么内存占用率还是很高?
目录什么是内存碎片?内存碎片是如何形成的?内因:内存分配器的分配策略外因:键值对大小不一样和删改操作如何判断是否有内存碎片?如何清理内存碎片?当数据删除后,Redis 释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。所以,操作系统仍然会记录着给 Redis 分配了大量内存。Redis 释放的内存空间可能并不是连续的,那么,这些不连续的内存空间很有可能处于一种闲置的状态。这就会导致一个问题:虽然有空闲空间,Redis 却无法用来保存数据,不仅会减少 Redis 能够
2021-08-12 16:48:02 236
原创 18-19|如何应对变慢的Redis?
redis变慢无外乎来自于上图中红色部分: redis自身特性、OS和FS1、使用复杂度过高的命令(例如SORT/SUION/ZUNIONSTORE/KEYS),或一次查询全量数据(例如LRANGE key 0 N,但N很大)分析:a) 查看slowlog是否存在这些命令 b) Redis进程CPU使用率是否飙升(聚合运算命令导致)解决:a) 不使用复杂度过高的命令,或用其他方式代替实现(放在客户端做) b) 数据尽量分批查询(LRANGE key 0 N,建议N<=100,查询全量数...
2021-08-12 16:05:13 151
原创 redis中什么命令可以替代keys
目录什么命令可以替代呢?scan所遇到的问题SCAN和HSCAN/SSCAN/ZSCAN逻辑差异?scan返回为什么会超过count?reids中的慢查询头号应该是keys,特别是redis规模很大的时候,以至于很多公司直接将keys命令禁掉。此外还有一个问题: 集群模式是无法使用。什么命令可以替代呢?使用SCAN命令客户端通过执行SCAN $cursor COUNT $count可以得到一批key以及下一个游标$cursor,然后把这个$cursor当作SCAN
2021-08-12 13:45:17 683
原创 hadoop的系统认知
目录什么是HadoopHadoop发行版介绍Hadoop版本演变历史Hadoop3.x的细节优化Hadoop三大核心组件介绍Hadoop集群安装部署HadooHDFS介绍HDFS(HadoopDistributed FileSystem)HDFS的Shell介绍HDFS的常见Shell操作HDFS体系结构NameNode介绍SecondaryNameNode介绍DataNode介绍NameNode总结HDFS的回收站HDF...
2021-08-11 12:00:23 249
原创 Flink on Yarn的两种运行方式
第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】启动一个一直运行的flink集群 ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]附着到一个已存在的flink yarn session ./bin/yarn-session.sh -id application_1463870264508_0029 执行任务./bin/flink run ./examples/batch/WordCount.jar -...
2021-08-09 22:38:38 756
原创 17 | 为什么CPU结构也会影响Redis的性能?
一般很难联想到reids 内存数据库和cpu的关系有多大?本文更像是一篇通识文章。一般认为redis和内存息息相关,但是内存的分配以及资源的调度和CPU也有很大的关系,CPU 的多核架构以及多 CPU 架构,也会影响到 Redis 的性能。主流的 CPU 架构一个 CPU 处理器中一般有多个运行核心,我们把一个运行核心称为一个物理核,每个物理核都可以运行应用程序。每个物理核都拥有私有的一级缓存(Level 1 cache,简称 L1 cache),包括一级指令缓存和一级数据缓存,以及私有的二
2021-08-07 17:56:41 349
原创 16 | 异步机制:如何避免单线程模型的阻塞?
Redis 性能的 5 大方面的潜在因素,Redis 内部的阻塞式操作CPU 核和 NUMA 架构的影响;Redis 关键系统配置;Redis 内存碎片;Redis 缓冲区。一、Redis 实例有哪些阻塞点?客户端:网络 IO,键值对增删改查操作,数据库操作;磁盘:生成 RDB 快照,记录 AOF 日志,AOF 日志重写;主从节点:主库生成、传输 RDB 文件,从库接收 RDB 文件、清空数据库、加载 RDB 文件;切片集群实例:向其他实例传输哈希槽信息,数据迁移.
2021-08-07 17:22:39 207
原创 对RabbitMQ Topics 通配符模式的深刻理解
Topic 类型与 Direct 相比,都是可以根据 RoutingKey 把消息路由到不同的队列。只不过 Topic 类型Exchange 可以让队列在绑定 Routing key 的时候使用通配符!Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert通配符规则:# 匹配一个或多个词,* 匹配不多不少恰好1个词,例如:item.# 能够匹配 item.insert.abc 或者 item.insert,item.* 只能匹配 item.inse
2021-08-07 11:13:15 329
原创 03 | 多路复用IO模型:为什么单线程Redis能那么快?
为什么单线程的 Redis 能那么快?Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis 为什么用单线程?多线程的开销使用多线程,可以增加系统吞吐率,或是可以增加系统扩展性。”的确,对于一个多线程的系统来说,在有合理的资源分配的情况 下,可以增加系统中处理请求操作的资源实体,进而提升系统能够同时..
2021-08-06 17:12:38 128
原创 06 | 新技术层出不穷,HDFS依然是存储的王者
目录HDFS是如何实现大数据高速、可靠的存储和访问的?HDFS是如何保证存储的高可用性呢?如何保证整个软件系统依然是可用的?Google大数据“三驾马车”的第一驾是GFS(Google文件系统),而Hadoop的第一个产品是HDFS,可以说分布式文件存储是分布式计算的基础,也可见分布式文件存储的重要性。如果我们将大数据计算比作烹饪,那么数据就是食材,而Hadoop分布式文件系统HDFS就是烧菜的那口大锅。厨师来来往往,食材进进出出,各种菜肴层出不穷,而不...
2021-08-05 22:47:29 962 4
原创 15 | 消息队列的考验:Redis有哪些解决方案?
Redis 适合做消息队列吗?”回答问题之前应该先好好思考这个问题?消息队列的消息存取需求是什么? Redis 如何实现消息队列的需求?消息队列在存取消息时,必须要满足三个需求,分别是消息保序、处理重复的消息和保证消息可靠性。需求一:消息保序库存扣除值作为消息的方案,在消息中同时包含读写操作的场景下,会带来数据读取错误的问题需求二:重复消息处理消费者从消息队列读取消息时,有时会因为网络堵塞而出现消息重传的情况。此时,消费者可能会收到多条重复的消息。对于重复的消息,消费者如果多次处
2021-08-05 18:09:12 131
转载 Redis常见问题答疑
目录数据类型key过期相关maxmemory相关rehash相关持久化RDBAOF主从复制哨兵锁事务分片集群缓存和数据库一致性缓冲区性能问题排查和调优其它数据类型一个数据类型都对应了很多种底层数据结构。以List为例,什么情况下是双向链表,反之又在什么情况下是压缩列表呢?还是说是并存状态?1、Hash 和 ZSet 是数据量少采用压缩列表存储,数据量变大转为哈希表或跳表存储2、但 List 不是这样,是并存的状态,L
2021-08-05 17:09:17 686
原创 14 | 如何在Redis中保存时间序列数据?
目录时间序列数据的读写特点高并发写入的特点时间序列数据的“读”操作有什么特点基于 Hash 和 Sorted Set 保存时间序列数据如何保证写入 Hash 和 Sorted Set 是一个原子性的操作呢?如何对时间序列数据进行聚合计算?基于 RedisTimeSeries 模块保存时间序列数据RedisTimeSeries 的操作主要有 5 个:小结每课一问在做互联网产品的时候,都有这么一个需求:记录用户在网站或者 App 上的点击行为数据,来分析用户行为。
2021-08-05 15:05:01 424 2
原创 05 | 从RAID看垂直伸缩到水平伸缩的演化
大数据技术主要是要解决大规模数据的计算处理问题,但是我们要想对数据进行计算,首先要解决的其实是大规模数据的存储问题。我这里有一个直观又现实的问题想问你:如果一个文件的大小超过了一张磁盘的大小,你该如何存储?我的答案是,单机时代,主要的解决方案是RAID;分布式时代,主要解决方案是分布式文件系统。其实不论是在单机时代还是分布式时代,大规模数据存储都需要解决几个核心问题,这些问题都是什么呢?总结一下,主要有以下三个方面。1.数据存储容量的问题。既然大数据要解决的是数以PB计的数...
2021-08-04 22:13:32 273
原创 03 | 大数据应用领域:数据驱动一切
大数据在医疗健康领域的应用健康医疗领域是最近几年获得最多创业者和投资人青睐的大数据领域。为什么这么说呢?首先,医疗健康领域会产生大量的数据;其次,医疗健康领域有一个万亿级的市场规模;最关键的是,医疗健康领域里很多工作依赖人的经验,而这正是机器学习的强项。1.医学影像智能识别图像识别是机器学习获得的重大突破之一,使用大量的图片数据进行深度机器学习训练,机器可以识别出特定的图像元素,比如猫或者人脸,当然也可以识别出病理特征。比如X光片里的异常病灶位置,是可以通过机器学习智能...
2021-08-04 22:08:30 176
原创 04 | 移动计算比移动数据更划算
大数据技术和传统的软件开发技术在架构思路上有很大不同,大数据技术更为关注数据,所以相关的架构设计也围绕数据展开,如何存储、计算、传输大规模的数据是要考虑的核心要素。传统的软件计算处理模型,都是“输入->计算->输出”模型。也就是说,一个程序给它传入一些数据也好,它自己从某个地方读取一些数据也好,总是先有一些输入数据,然后对这些数据进行计算处理,最后得到输出结果。但是在互联网大数据时代,需要计算处理的数据量急速膨胀。一来是因为互联网用户数远远超过传统企业的用户,...
2021-08-04 22:06:15 357
原创 13|redis GEO是什么?
面向 LBS 应用的 GEO 数据类型在日常生活中,我们越来越依赖搜索“附近的餐馆”、在打车软件上叫车,这些都离不开基于位置信息服务(Location-Based Service,LBS)的应用。LBS 应用访问的数据是和人或物关联的一组经纬度信息,而且要能查询相邻的经纬度范围,GEO 就非常适合应用在 LBS 服务的场景中看一下它的底层结构。GEO 的底层结构在设计一个数据类型的底层结构时,我们首先需要知道,要处理的数据有什么访问特点。所以,我们需要先搞清楚位置信息到底是怎么被存取的我
2021-08-04 10:37:12 306
原创 大数据应用发展史:从搜索引擎到人工智能
目录大数据应用的搜索引擎时代大数据应用的数据仓库时代大数据应用的数据挖掘时代大数据应用的机器学习时代小结从最开始的 Google 在搜索引擎中开始使用大数据技术,到现在无处不在的各种人工智能应用,伴随着大数据技术的发展,大数据应用也从曲高和寡走到了今天的遍地开花。Google 从最开始发表大数据划时代论文的时候,也许自己也没有想到,自己开启了一个大数据的新时代。今天大数据和人工智能的种种成就,离不开全球数百万大数据从业者的努 力,这其中也包括你和我。历史也许由天才开...
2021-08-03 21:31:11 398
原创 大数据技术发展史:大数据的前世今生
从我的角度而言,不管是学习某门技术,还是讨论某个事情,最好的方式一定不是一头扎到具体细节里,而是应该从时空的角度先了解它的来龙去脉,以及它为什么会演进成为现在的状态。当你深刻理解了这些前因后果之后,再去看现状,就会明朗很多,也能更直接地看到现状背后的本质。说实话,这对于我们理解技术、学习技术而言,同等重要。今天我们常说的大数据技术,其实起源于 Google 在 2004 年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统 GFS、大数据分布式计算框架MapReduce 和 No
2021-08-03 21:24:24 2430
SHL入职测评完全攻略(PDF已分类 可直接搜索!!!)
2023-07-27
京东数科-PG逻辑复制实战
2022-05-14
课程来自于 【大厂学苑】云原生视频课程(视频+资料+代码)
2022-05-14
ji-ke-shi-jian - 云原生 孟Fanjie
2022-05-14
如何成为学习高手.zip
2021-10-28
数据采集之Flume.xmind
2021-09-11
mysql-libs-5.1.73-3.el6_5.x86_64.rpm
2020-08-18
ncurses-6.1.20180407-alt2.src.rpm
2020-05-15
htop-2.2.0.tar.gz
2020-05-15
greenplum-loaders-4.3.27.0-WinXP-x86_32.msi
2020-04-30
【批量下载】jvisualvm安装Visual GC插件等.zip
2019-09-24
4.-Greenplum-数据库架构介绍.pdf
2019-08-30
spring最有学习价值的Demo(springmvc-master)
2017-11-04
gcc mankefile -目录大全
2017-10-19
Hadoop2.x大数据平台
2017-10-19
strtus一个简单的例子
2017-10-12
makefile的使用
2016-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人