分布式处理

PaddlePaddle分布式推荐算法实践

我与影子孤独终老i 提交于 2019-12-17 06:33:26
项目介绍 本项目只实现了DeepFM论文中介绍的模型的DNN部分,DNN部分模型结构如下: 该项目目前仅支持在CPU环境下运行 在百度云上运行集群训练 参考文档 在百度云上启动Fluid分布式训练 在百度云上部署一个CPU集群。 用preprocess.py处理训练数据生成train.txt。 将train.txt切分成集群机器份,放到每台机器上。 用上面的 分布式训练 中的命令行启动分布式训练任务. 在PaddleCloud上运行集群训练 如果你正在使用PaddleCloud做集群训练,你可以使用cloud.py这个文件来帮助你提交任务,trian.py中所需要的参数可以通过PaddleCloud的环境变量来提交。 文件结构 本项目的文件结构如下 | - - raw # 原始数据集 | - - models # 训练过程中暂存的模型 | - - infer_model # 固化后的模型 | - - train . py # 训练脚本 | - - reader . py # 数据读取脚本 | - - preprocess . py # 数据预处理脚本 | - - cloud . py # 集群训练脚本 | - - network_conf . py # 构建模型 | - - freeze_infer . py # 使用固化模型进行预测的脚本 | - - infer . py #

分布式小数据存储系统-初识ZooKeeper

纵然是瞬间 提交于 2019-12-17 05:32:50
初始需求 元数据的存储(小数据) 分布式、高可用 读多写少、高性能读 有序访问 设计 单机层面 节点数据结构的选取 树结构,每个节点是一个ZNode 数据保存在内存中 优点:高效读写 为什么ZK不擅长存储大的数据? 单机高效写磁盘 高效写磁盘的两种方式: 顺序写磁盘 预分配磁盘空间 ZK每次写磁盘,先申请固定大小的磁盘空间,之后再写磁盘,大大提升写入性能。 顺序写数据 每次写入操作,ZooKeeper会附加一个数字标签,表明ZooKeeper中的事务顺序 高可用、宕机可恢复 快照+事务日志 什么时候记录事务日志? 如何快照?新起线程,不影响主流程 分布式层面 顺序写数据 一主多从结构,只有一台master服务器对外提供写服务,每次写记录ZXID事务Id。原子写,保证mei yo 如何保证数据强一致 写的策略,半数以上机器写成功后返回。 写数据流程,非Leader节点会把请求转发给leader,写成功后leader再通知该节点。 ZAB协议:初始阶段/宕机恢复(原子广播) 如何提高读的性能 follower节点,observer节点都可以对外提供读数据能力 怎么保证读取的强一致? 客户端在调用前,可以先申请连接的主机同步leader数据,调用sync()方法 。 水平扩容 ZK做的不好的地方。 ZooKeeper 在水平扩容扩容方面做得并不十分完美,需要进行整个集群的重启

2. zookeeper介绍及集群搭建

回眸只為那壹抹淺笑 提交于 2019-12-17 03:00:29
ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架。 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题。 ZooKeeper 本质上是一个分布式的小文件存储系统。 提供基于类似于文件系 统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维 护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达 到基于数据的集群管理。 诸如: 统一命名服务(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息队列(sub/pub)、分布式锁、分布式协调等功能。 2.1、zookeeper的架构图 Leader: Zookeeper 集群工作的核心 事务请求(写操作) 的唯一调度和处理者,保证集群事务处理的顺序性; 集群内部各个服务器的调度者。 对于 create, setData, delete 等有写操作的请求,则需要统一转发给leader 处理, leader 需要决定编号、执行操作,这个过程称为一个事务。 Follower: 处理客户端非事务(读操作) 请求, 转发事务请求给 Leader; 参与集群 Leader 选举投票 2n-1台可以做集群投票。 此外,针对访问量比较大的 zookeeper 集群, 还可新增观察者角色。 Observer: 观察者角色,观察

分布式系统(一) --SOA

时光怂恿深爱的人放手 提交于 2019-12-16 17:06:18
SOA (面向服务编程):Service Oriented Architecture面向服务的架构。也就是把工程拆分成 服务层 、 表现层 两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。 这样做的好处就是,系统之间的调用很方便,A系统要用到B系统,直接调用B系统的服务层就可以了。 集群 就是多台服务器跑的都是一套完整的代码,这就叫集群(水平拆分); 分布式 就是多台服务器合起来跑的才是一套完整代码,这就叫分布式(垂直拆分) 分布式服务器之间如何解决通信的问题 -全部都是基于socket 分布式系统通信流程: 1、七层网络协议 tcp/udp协议() 2、源主机找到目标主机 3、源主机和目标主机之间如何建立联系   tcp:面向连接(保存状态)的一种协议     优点:可靠     缺点:速度慢   udp:面向数据报(无连接,五状态)     优点:速度快     缺点:不可靠   3.1tcp协议     3.1.1 通过3此握手协议         客户端发起(syn)服务器响应(ack)     3.1.2 syn攻击         网络崩溃     3.1.3 通过4次回收协议、         客户端发起(fin)服务器响应(ack) 来源: https://www.cnblogs.com

Zookeeper

佐手、 提交于 2019-12-16 15:04:39
1. Zookeeper 概念简介: Zookeeper 是一个分布式 协调服务;就是为用户的分布式应用程序提供协调服务 A、zookeeper 是为别的分布式程序服务的 B、Zookeeper本身就是一个分布式程序 (只要有半数以上节点存活, zk 就能正常服务) C、Zookeeper 所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…… D、 虽然说可以提供各种服务,但是 zookeeper 在底层其实只提供了两个功能: 管理 ( 存储,读取 ) 用户程序提交的数据; 并为用户程序提供数据节点监听服务; Zookeeper 集群的角色: Leader 和 follower ( Observer ) 只要集群中有半数以上节点存活,集群就能提供服务 zookeeper 集群机制 半数机制:集群中半数以上机器存活,集群可用。 zookeeper 适合装在 奇数台机器上!!! 安装 1.虚拟机准备 安装到 3 台虚拟机上 安装好JDK 2. 解压 su – hadoop (切换到 hadoop 用户) tar -zxvf zookeeper-3.4.5.tar.gz(解压) 3. 修改环境变量 1 、 su – root( 切换用户到 root) 2 、 vi /etc/profile( 修改文件 ) 3 、添加内容: export

jmeter分布式压测

血红的双手。 提交于 2019-12-16 14:17:25
JMeter5.0 分布式操作部署笔记 当JMeter处理高并发,当一台机器调了JVM还不够测试时,就可以使用分布式的形式来进行分压,分布式简单的说就是由一台 控制机 去启动JMeter配置相关参数后,通过java的RMI( Remote Method Invocation )远程到其他机器( 执行机 )进行负载。 当在处理高并发总是卡住的时候,可先尝试设置JVM(如果还没法解决,就搞个分布式) 打开jmeter.bat 搜set heap 根据自身机器内存来设置虚拟内存即可:(一般别设置太大) set HEAP=-Xms2g -Xmx8g -XX:MaxMetaspaceSize=8g 分布式部署步骤: 1. 控制机和执行机的JMeter和jdk版本尽量保持一致,环境配置得配好(JMeter5.0,jdk1.8.0) 2. 双击打开控制机中bin目录下的create-rmi-keystore.bat 填写完相关信息后,回车: 回车后,会在bin目录下产生以下文件: 把已生产的 rmi_keystore.jks 文件拷贝到执行机的bin目录下 3. 找到执行机中bin目录下的jmeter.properties,打开jmeter.properties 搜remote_host,取消注释,把后面的IP改为本机IP 搜server_port,默认端口号为1099(在端口没冲突的情况下

分布式和集群的区别是什么?

蓝咒 提交于 2019-12-16 11:06:33
作者:大闲人柴毛毛 链接:https://www.zhihu.com/question/20004877/answer/282033178 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 画了一上午,麻烦点个赞~ 下面就正经解释下三种结构的区别吧~ 单机结构 我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。那么,单机结构有啥缺点呢?我想缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便出现了集群模式,往下接着看。 集群结构 集群模式在程序猿界有各种装逼解释,有的让你根本无法理解,其实就是一个很简单的玩意儿,且听我一一道来。 单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色

p2p

风流意气都作罢 提交于 2019-12-15 09:03:33
1.概念原理 现在基本上很多网络应用的软件都涉及p2p技术(QQ,PPS,对战平台…),p2p技术旨在于摒弃以前只能从服务器获得资源的观念,每台电脑都是一个peer,都可以从其他peer上获取自己想要的资源,而同时自己也在向他人共享自己的资源.这里有一个很大的优势就是可以极大程度节省服务器的带宽. 打个比喻,优酷和pps,一个是基于服务器->客户端的模式,一个是p2p技术,优酷要想为用户提供高清视频只能通过优化视频压缩(例如最新的H.264)和增大自身服务器带宽.而pps完全不用担心带宽问题,只要用户数量多的话基本上可以满速观看视频. 在这里在停停,pps采用的是rmvb压缩封装,体积比h264flv大上十倍,但是pps依然可以流畅观看.这就是p2p技术的优势. 在中国大部分用户都使用路由器或交换器之类的其他NAT设备来共享网络,这使得不同内网的用户之间的交流变得十分困难,p2p技术的出现确实另其变得可行和简便. 2.发展历程 自P2P广受关注以来,它的发展历程大致可以分为3个阶段: 第一阶段,1999年至2000年左右,P2P技术由应用开发向学术研究发展。因为当时P2P技术刚重新受到关注,涌现了许多著名的P2P应用系统,但由于P2P存在安全、标准和版权等缺陷,许多应用都被扼杀。P2P技术的完善迫在眉睫,于是越来越多的学者开始研究P2P技术,旨在更好地应用它。 第二阶段

[Java复习] 分布式事务 Part 1

半腔热情 提交于 2019-12-14 20:30:33
1. CAP理论 C: Consistency 一致性 A: Availability 可用性 P: Partition tolerance 分区容错性 CAP定理:一个分布式系统不可能同时满足CAP三个要求,最多只能同时满足其中两项。 1.1. CA: 放弃分区容错性,所有数据放一个节点,退回单机模式。 1.2. CP: 放弃可用性,一旦网络故障,受影响服务需要等待恢复时间,系统处于不可用状态。 1.3. AP: 放弃一致性,这里指放弃强一致性,确保最终一致性。 大多数分布式系统的选择。 2. BASE理论 BASE: B ase A vailable(基本可用), S oft state(软状态), E ventually consistent(最终一致性)。 BASE是对CAP一致性和可用性权衡的结果。 1. 基本可用:指分布式系统出现不可预知故障时,允许损失部分可用性,响应时间合理延长,服务上适当降级。 2. 软状态: 允许分布式系统中的数据处于中间状态,允许各节点数据同步时存在延时。 3. 最终一致性:允许系统中所有数据副本,在经过一段时间同步后,最终能够达到一个一致的状态。不需要实时保证系统的数据一致性。 3. 两阶段提交 (2PC) 数据库支持2PC,又叫XA transactions。 MySQL从5.5版,Oracle从7版,SQL Server 2005开始支持

zookeeper的作用与机制

狂风中的少年 提交于 2019-12-14 13:13:53
参考地址: https://www.cnblogs.com/ultranms/p/9585191.html 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。 配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。但是当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法,但是如果我们配置非常多,有很多服务器都需要这个配置,而且还可能是动态的话使用配置文件就不是个好主意了。这个时候往往需要寻找一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更