Hadoop生态圈中的各个组件的介绍 当“Standby节点”看到edit log变化时,会将其应用到自己的命名空间。发生故障转移时,备用服务器将确保在将自身升级为活跃状态之前,已从JournalNode读取所有edit log内容。这样可确保在发生故障转移之前,命名空间状态已经完全同步。Standby NameNode只是作为Active NameNode的备份,保证在Active NameNode出现问题时能够快速的替代它。作业记录,比如用了多少个Map、多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
Hadoop 3.X HA集群部署 NameNodeResourceManagerQuorumPeerMainJournalNodeDFSZKFailoverControllerJobHistoryServerNameNodeResourceManagerQuorumPeerMainJournalNodeDFSZKFailoverControllerJobHistoryServerQuorumPeerMainJournalNodeDataNodeNodeManagerDataNodeNodeManagerDataNodeNodeManager
八股文系列Spark 两者并没有大的差别。都是将 mapper(Spark 里是 ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是下一个 stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer 以内存作缓冲区,边 shuffle 边 aggregate 数据,等到数据 aggregate 好以后进行 reduce(Spark 里可能是后续的一系列操作)。
Redis的哨兵模式 如果主服务器⽆法正常⼯作,哨兵模式可以开始⼀个故障转移过程,由⼀个从服务器升级为新的主服务器,并让其他从服务器改变他们的主服务器为新的主服务器。哨兵们会通过投票来决定主服务器是否已经下线,以及选择哪个从服务器升级为新的主服务器。的,每个哨兵节点都会订阅其它哨兵节点的信息,这样当主服务器出现故障时,哨兵节点可以及时进⾏⼴播,实现快速故障转移。切换成功之后,就会通过发布订阅模式,让各个哨兵把⾃⼰监控的从服务器切换主机,这个过程为。哨兵模式⾃动转移失败的主服务器到⼀个从服务器。Redis的哨兵模式(
Redis的主从复制 负载均衡:在主从复制的基础之上,配合读写分离,主节点提供写服务,由从节点提供读服务,分担服务器负载,尤其是在读多写少场景下,可以⼤⼤提⾼Redis并发量。内置的⼀种数据冗余和备份⽅式,同时也是分发读查询负载的⼀种⽅法。故障恢复:主节点⼀旦出现问题,可以由从节点提供服务,避免出现程序不可⽤的情况,实现快速故障恢复。数据冗余:主从复制实现了数据的热备份,是持久化的⼀种数据冗余⽅式。⼀个主节点可以有多个从节点,但是⼀个从节点只能有⼀个主节点。命令的方式是临时的,每次重启都需要指定,配置文件是永久的。
Redis订阅发布 这个命令⽤于退订所有给定模式的频道。如果没有参数,那么客户端使⽤ PUNSUBSCRIBE。:指退订给定的频道。如果没有指定频道,则退订所有频道。:订阅给定的⼀个或多个频道的信息。当有新消息发布到某个频道。:将信息发送到指定的频道。:使⽤模式匹配订阅频道。
redis的持久化 rdb保存⽂件:dump.rdb默认保存在当前运⾏⽬录RDB总结当我们redis⼀旦出现问题,服务重启,服务关闭以后,再次启动时就会读取备份⽂件,恢复数据。为了避免出现备份被删除或者丢失的问题,⼀般情况下我们会定时把redis中的备份数据迁移到别处以防⽌数据丢失。还有⼀点要注意:设置时间不能太短,加⼊1秒就备份数据,会导致⼤量的磁盘IO,造成磁盘压⼒RDB。
RedisTemplate操作Redis differenceAndStore:获取key与另一个otherKey所对应的集合之间的差值,并将结果存入指定的Key集合中。使用负值可以无限期等待。randomMembers:获取指定key的集合中指定个数的随机数据 ,list集合中可能存在重复的数据。distinctRandomMembers:获取指定key的集合中指定个数的随机数据(去重)remove: 从存储在键中的列表中删除等于值的元素的第一个计数事件。get:获取key对应的map中,key为var2的map的对应的值。
redis的事务 在 Redis 中, WATCH 命令可以⽤来监视⼀个或多个 key,如果在事务执⾏之前这些key 的值发⽣了改变,那么事务将会被打断。7)在 A 客户端查看 str.lp 值,A 客户端执行的事务没有提交,因为 WATCH 的 str.lp 的值已经被修改了, 所以放弃了事务。Redis事务会将命令按照顺序执⾏串⾏化操作,但是如果这些命令中有⼀个命令失败(⾮语法错误)了。命令之后的所有命令不会⽴即执⾏,⽽是缓存在服务器的⼀个事务队列中,然后当 EXEC。,执⾏命令的时候不允许其他命令插⼊,不许加塞。
redis的基本介绍 Redis 是由C语⾔编写的⼀个,它不仅性能强劲,⽽且还具有以及为解决问题⽽⽣的独⼀⽆⼆的数据模型。Redis是完全开源免费的,遵守BSD协议,是⼀个⾼性能的key-value,并提供多种语⾔的API。Redis的特点性能极⾼– Redis能读的速度是110000次/s,写的速度是81000次/s。丰富的数据类型– Redis⽀持⼆进制的及Ordered Sets 数据类型操作。原⼦– Redis的所有操作都是原⼦性的,同时Redis。
Zookeeper的watch 机制 我们可以把Watch理解成是注册在特定Znode上的。ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists.的。监视有两种类型:数据监视点和子节点监视点。创建、删除或者设置znode都会触发这些监视点。exists,getData 可以设置数据监视点。getChildren 可以设置子节点变化。
基于Zookeeper的分布式锁 在Java的多线程部分,我们知道如果在单个jvm进程中,多个线程之间同时访问一个资源,此时会有多线程的安全问题。为了解决这个线程安全的问题,我们可以使⽤“锁”来实现。但是,多个jvm进程之间如果同时访问一个资源呢?此时就需要一种更加高级的锁机制来处理种之间的资源安全问题,这就是分布式锁。
zookeeper的Shell操作命令 作⽤创建⼀个节点,可以设置节点的初始内容选项-e:设置短暂类型节点-s:设置顺序节点示例create /test 创建持久化节点create /test2 "content message" 创建带初始化内容的持久化节点create -e /test3 "content message" 创建带初始化内容的临时节点create -e -s /test "content message" 创建带初始化内容的顺序临时节点。
zookeeper的内部数据模型 zk通过两种形式的持久化,在恢复时先恢复快照文件的中的数据导内存中,在利用日志文件中的数据做增量恢复,这样恢复的速度更快。如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的sessionid. 如果该节点不是临时节点,ephemeralOwner值为0。zk把执行的命令以日志的形式保存在dataLogDir指定的路径中的二进制文件(如果没有指定dataLogDir,则按照dataDir指定的路径)对应节点与⼦节点(或者⼦节点)的修改的事务ID,与孙⼦节点⽆关。节点最近⼀次更新的时间。
ES中分配分配问题排查 悬空索引 磁盘中存在,而集群状态中不存在的索引称为 dangling index,例如从别的集群拷贝了一个索引的数据目录到当前集群,Elasticsearch 会将这个索引加载到集群中,因此会涉及到为 dangling index 分配分片的过程。由于 create index api 创建索引导致,索引创建过程中,把索引的全部分片分配完毕需要一个过程,在全部分片分配完毕之前,该索引会处于短暂的 RED 或 YELLOW 状态。这个命令只会展示出一条无法分配索引的分片的信息,包括无法分配的理由。