epoch

Hadoop NameNode 高可用实现解析

拜拜、爱过 提交于 2020-12-18 06:45:18
转自https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/ 前面的两篇文章都是关于分布式一致性协议Raft的, 图解分布式一致性算法 Raft协议详解 ,其中提到了选主等内容。在不同的项目中,也都有类似的主从切换等策略来保证HA。下文是Hadoop中的NameNode的高可用实现分析,可以对照着看看。 如果在公众号内格式排版不便阅读,可以查看链接。 NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包括 MapReduce、Hive、Pig 以及 HBase 等也都无法正常工作,并且重新启动 NameNode 和进行数据恢复的过程也会比较耗时。这些问题在给 Hadoop 的使用者带来困扰的同时,也极大地限制了 Hadoop 的使用场景,使得 Hadoop 在很长的时间内仅能用作离线存储和离线计算,无法应用到对可用性和数据一致性要求很高的在线应用场景中。

从分布式一致性到共识机制(二)Raft算法

瘦欲@ 提交于 2020-12-17 07:55:39
春秋五霸说开 春秋五霸,是指东周春秋时期相继称霸主的五个诸侯,“霸”,意为霸主,即是诸侯之领袖。 典型的比如齐桓公,晋文公,春秋时期诸侯国的称霸,与今天要讨论的Raft算法很像。 一、更加直观的Raft算法 Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它。 为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导选取(leader selection)、日志复制(log replication)、安全(safety),并且使用了更强的一致性来减少了必须需要考虑的状态。 1.解决什么问题 分布式存储系统通常通过维护多个副本来提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性。 Raft协议基于复制状态机(replicated state machine),即一组server从相同的初始状态起,按相同的顺序执行相同的命令,最终会达到一直的状态,一组server记录相同的操作日志,并以相同的顺序应用到状态机。 Raft有一个明确的场景,就是管理复制日志的一致性。 如图,每台机器保存一份日志,日志来自于客户端的请求,包含一系列的命令,状态机会按顺序执行这些命令。 一致性算法管理来自客户端状态命令的复制日志,保证状态机处理的日志中的命令的顺序都是一致的,因此会得到相同的执行结果。 2

Redis Cluster

我的梦境 提交于 2020-12-08 10:25:11
Redis3.0以后,节点之间通过去中心化的方式提供了完整的 sharding(数据分片)、replication(复制机制、Cluster具备感知准备的能力)、failover解决方案 。 拓扑结构 Redis Cluster由多个Redis节点组构成。不同节点组服务的数据无交集, 每一个节点组对应数据sharding的一个分片。 节点组内分为 主备 两类节点,两者数据准实时一致,通过 异步化的主备复制机制 。 master节点对用户提供读写服务,slave节点对用户提供读服务。 Redis Cluster总共有16384个slot,每一个节点负责一部分slot。 Redis Cluster中所有的几点之间两两通过Redis Cluster Bus交互,主要交互以下关键信息: 数据分片(slot)和节点的对应关系 集群中每个节点可用状态 集群结构发生变更时,通过一定的协议对配置信息达成一致。数据分片的迁移、故障发生时的主备切换决策、单点master的发现和其发生主备关系的变更等场景均会导致集群结构变化 publish和subscribe(发布/订阅)功能在cluster版的内容实现所需要交互的信息。 Redis Cluster Bus通过单独的端口进行连接,bus是节点间的内部通信机制,交互的是字节序列化信息,而不是client到Redis服务器的字符序列化以提升交互效率。

Zookeeper概述

我是研究僧i 提交于 2020-12-04 02:03:27
Zookeeper是什么 ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Leader选举、分布式锁和分布式队列等功能。 Zookeeper保证了如下分布式一致性特性: 顺序一致性 原子性 单一视图 可靠性 实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理。对于写请求,会统一由Leader接收并处理,广播给其他zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。 有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper最新的zxid。 分布式系统的CAP原则是什么?ZK实现的是AP还是CP? CAP原则又称CAP定理

2万字好文!手把手教你实现 Docker 部署 Redis 集群

柔情痞子 提交于 2020-12-02 16:18:30
点击上方 " 程序员小乐 "关注, 星标或置顶一起成长 后台回复“ 大礼包 ”有惊喜礼包! 关注订阅号「 程序员小乐 」,收看更多精彩内容 每日英文 Life is not always what we want it to be. We fight. We cry. And sometimes, we give up. But in our hearts, we know it's still love. 生活有时不尽如人意。我们挣扎、哭泣,有时甚至放弃。但内心始终充满爱. 每日掏心话 人有时需要内心单纯的像个孩子,但有时也要内心强大的像混凝土。 来自:我为什么要写这个 | 责编:乐乐 链接:cnblogs.com/cxbhakim/p/9151720.html 后端架构师(ID:study_tech) 第 1067 次推文 往日回顾: 任正非在荣耀送别会上的讲话:一旦“离婚”就不要藕断丝连,要做华为全球最强的竞争对手 正文 摘要 接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群。 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库——首要解决把整个数据集按照分区规则映射到多个节点的问题。 这边就需要知道分区规则—

zookeeper 详解

泄露秘密 提交于 2020-11-30 03:33:59
是 分布式 协调 服务 。 ZK的工作: 注册:所有节点向ZK争抢注册,注册成功会建立一套节点目录树,先注册的节点为Active节点,后注册节点成为standby; 监听事件:节点在ZK集群里注册监听动作:比如节点的新增、删除、更新等事件 回调函数:发生了监听事件后,ZK集群通知客户端(zkfc)执行回调函数,回调函数是客户端定义的 协调机制: 当中一个客户端向集群任意follower节点请求增删改动作,follower会通知leader,leader会广播给所有follower,当收到过半follower回复后,然后执行增删改动作 如何选举leader? sid:标识zk server标识; zxid:标识事务标识 先比较事务ID,事务大的得票;事务相同,再比较server标识,大的得票。 专题参考: 一、Zookeeper简单介绍 二、ZooKeeper安装配置 三、Zookeeper命令操作 四、构建ZooKeeper应用 五、ZooKeeper管理分布式环境中的数据 六、ZooKeeper机制架构 七、ZooKeeper一致性原理 八、ZooKeeper伸缩性 ZAB协议 ZAB协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。

python笔记-6(import导入、time/datetime/random/os/sys模块)

别说谁变了你拦得住时间么 提交于 2020-11-25 01:52:11
一、了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可。其它内容待日后有深入理解了再来细说 1、import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 1.2 package文件 package和文件夹图标类似,package中又__init__.py的文件 2、模块导入的几种导入方式 2.1 from xxx import xxx as xxx 2.2 from xxx import xxx as xxx as xxx 别名 2.3 import xxx 3、import 和 from xxx import 的区别 import xxx的本质是执行py文件,import package是执行__init__.py from xxx import xxx 的本质是将xxx部分的内容复制到本地,进行调用。 4、需要重点掌握给sys(python解释器)添加环境变量的方法 4.1 os.path.abs(文件) 4.2 os.path.dirname(绝对路径) 4.3 sys.path.append()/sys.path.insert() 二、time模块-->时间模块 1、要熟悉时间的三种表示方式 1.1、格式化字符串 ‘2018-2-1 11:11:12’ 此处的格式我们可以随意去自定义,其实质是按照固定的格式

OpenSelfSup: Open-MMLab自监督表征学习代码库

拥有回忆 提交于 2020-11-20 07:08:27
本文转载自知乎,已获作者 授权转载。 https://zhuanlan.zhihu.com/p/148782886 前言 自监督的表征学习领域近几个月来获得了显著的突破,特别是随着Rotation Prediction, DeepCluster, MoCo, SimCLR等简单有效的方法的诞生,大有超越有监督表征学习的趋势。 然而,相信做这个领域的研究者都深有感触: 1)自监督任务复杂而多样,不同方法各有各的专用训练代码,难以结合、复用和改进; 2)评价方案不统一,不同的方法难以在公平环境下对比; 3)动辄百万千万的训练数据量,训练效率是个大问题。 针对这些问题,我们(香港中文大学多媒体实验室和南洋理工大学)开源了一套统一的自监督学习代码库:OpenSelfSup, 链接如下: https://github.com/open-mmlab/OpenSelfSup OpenSelfSup 统一的代码框架和模块化设计 OpenSelfSup使用PyTorch实现,支持基于分类、重建、聚类、memory bank、contrastive learning的多种自监督学习框架, 目前收录了Relative Location, Rotation Prediction, DeepCluster, OnlineDeepCluster, NPID, MoCo, SimCLR

SpringBoot 整合ES

限于喜欢 提交于 2020-11-19 11:50:46
1, pom文件 <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-elasticsearch </artifactId> </dependency> 2,实体类 ES 存储的实体类 package com.jtl.alarm.repository.entity ; import com.fasterxml.jackson.annotation. JsonFormat ; import com.jtl.alarm.dto.ESAlarmDataDTO ; import com.jtl.device.service.dto.RealTimeDto ; import lombok. Data ; import org.springframework.data.elasticsearch.annotations.* ; import javax.persistence. Id ; import java.io.Serializable ; import java.util.Date ; import java.util.List ; /** * @ProjectName: 20200601 * @Package: com.jtl.alarm

利用深度学习来预测股票价格变动

拟墨画扇 提交于 2020-11-18 06:36:51
https://www.toutiao.com/i6644852565341110791/ 利用深度学习来预测股票价格变动(长文,建议收藏) 原创 不靠谱的猫 2019-01-10 21:01:39 完整架构概述 在这篇文章中,我将创建一个预测股票价格变动的完整过程。我们将使用生成对抗网络(GAN)与LSTM(一种循环神经网络)作为生成器,使用卷积神经网络CNN作为鉴别器。我们使用LSTM的原因很明显,我们正在尝试预测时间序列数据。为什么我们使用GAN,特别是卷积神经网络(CNN)作为鉴别器呢?这是一个很好的问题:稍后会有特别的部分。 当然,我们将详细介绍每个步骤,但最困难的部分是GAN:成功训练GAN的非常棘手的部分是获得正确的超参数集。出于这个原因,我们将使用贝叶斯优化(还有高斯过程)和深度强化学习(DRL)来决定何时以及如何改变GAN的超参数。在创建强化学习时,我将使用该领域的最新进展,例如Rainbow和PPO。 我们将使用许多不同类型的输入数据。除了股票的历史交易数据和技术指标,我们将使用NLP的最新进展(使用“BERT,对NLP进行迁移学习)来创建情感分析(作为基本面分析的来源) ),用于提取整体趋势方向的傅里叶变换,用于识别其他高级特征的栈式自动编码器,用于查找相关资产的特征投资组合,差分整合移动平均自回归模型(ARIMA))对于股票函数近似