基于redis和R语言构建并行计算平台(yiyou)

最近研究gearman时发现不少问题,关于队列持久化的问题搞了半个月还是没能解决,并且国内可以参考的资料太少,所以考虑换一种方案试试。如下贴出gearman集群的架构:

可以看到该架构存在的问题,当持久化不起作用时,只能通过多台JobServer同时运行的方式保证集群的正常运作。另外client和worker这间的数据传输需要通过JobServer,不能一步到位。这个在数据量大时不能突显优势。

本人搞R语言有些时间了,并且该语言近几年比较火,用于统计、分析、建模、可视化,效率很高。为了承接前期研究的成果,最理想的方式就是基于现有的R语言实现分布式调度和并行计算。基于对gearman框架的理解,分析了其实现机制,如图:

Gearman是基于TCP/IP协议进行连接的,并且client不知道worker的信息,通过jobserver的中介作用,完成调度。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。使用Redis数据库既可以用来实现进行间通信,又能够对数据进行快速读写,基于保存的信息,实现client和worker信息的透明,与gearman相比有很多优势。

基于以上想法,结合Redis和R语言,对gearman的实现机制进行优化,实现了支持R语言和NOSQL数据库的并行计算框架yiyou。代码结构如下:

Watch用于查看队列信息;yiyou-server类似于jobserver,主要用于任务的分配和NOSQL数据库的管理;yiyou-stop关闭整个并行集群;yiyou-client-lib为客户端程序依赖库,可基于此定制客户端程序;yiyou-worker-lib为工作端程序依赖库,可基于此定制工作端程序;yiyou-dlib为并行计算的依赖库,可基于它,对单线程的可拆分R代码平滑移植到集群上,不需要改动之前的代码,例子如下:

可以看到,基于 yiyou框架实现的并行计算,依赖于集群的计算能力,为R语言大数据分析提供了一种可行的方案。

目前该框架尚不成熟,只提供了任务的并行分解,可基于此写出类似于MapReduce的逻辑,期待后续更多精彩内容。。。

时间: 2024-08-06 11:35:32

基于redis和R语言构建并行计算平台(yiyou)的相关文章

R语言构建蛋白质网络并实现GN算法

R语言构建蛋白质网络并实现GN算法 1.蛋白质网络的构建 我们使用与人类HIV相关的蛋白质互作数据hunam-HIV PPI.csv来构建这个蛋白质互作网络. 在R中,我们可以从存储在R环境外部的文件读取数据.还可以将数据写入由操作系统存储和访问的文件. R可以读取和写入各种文件格式,如:csv,excel,xml等. 想要读取csv文件,我们需要: 设置工作目录 读取CSV文件 代码如下: setwd("/Users/.../Documents/...") data <- re

R语言构建配对交易量化模型

前言 散户每天都在经历中国股市的上蹿下跳,赚到钱是运气,赔钱是常态.那么是否有方法可以让赚钱变成常态呢? 我们可以通过"统计套利"的方法,发现市场的无效性.配对交易,就统计套利策略的一种,通过对冲掉绝大部分的市场风险,抓住套利机会,积累小盈利汇聚大收益. 目录 什么是配对交易? 配对交易的模型 用R语言实现配对交易 整体文章:http://blog.fens.me/finance-pairs-trading/

R语言构建追涨杀跌量化交易模型

前言 久经股市的老股民,通常都会使用一种常见的交易策略,追涨杀跌交易法.追涨杀跌法,是股市操作的一个重要技巧,就是在股市上涨时买入股票,股市下跌时卖出股票.如果操作得当是很好的赢利手段,在中国股市2015年上半年的牛市中,追涨杀跌交易法就是交易神器法门. 目录 什么是追涨杀跌? 追涨杀跌的建型和实现 模型优化 整体文章:http://blog.fens.me/finance-chase-sell/

R语言中的并行计算——搭建R的集群

转载:http://blog.sina.com.cn/s/blog_83bb57b70101qeys.html 一直纠结于R的大数据计算问题,希望可以找到一个彻底的方案解决它.而云服务器当然是解决这个问题的最佳方案,所以,至少从这方面入手. R的云服务器部署有两种解决方案,一种是使用R语言的并行计算,另外一种是使用RHadoop框架. RHadoop框架其实就是M / R 算法的R语言实现,需要使用者有M / R的计算基础,和R语言平常使用的计算方式有很大的不同,因此,我采用的解决方案是搭建R

R语言中文社区历史文章整理(类型篇)

R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterplots包,让你绘制不一样的图 今天再来谈谈REmap包 ggplot2你需要知道的都在这... R访问数据库管理系统(通过RODBC包和RMySQL包两种方式) NLP--自然语言处理(三)text2vec包 Rattle:数据挖掘的界面化操作 借助caret包实现特征选择的工作 R语言的高质量图形渲染

手把手教你学习R语言

本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反而会让人挑花了眼. 为了构建R语言学习方法,我们在Vidhya和DataCamp中选一组综合资源,帮您从头学习R语言.这套学习方法对于数据科学或R语言的初学者会很有用;如果读者是R语言的老用户,则会由本文了解这门语言的部分最新成果. R语言学习方法会帮助您快速.高效学习R语言. 前言 在开始学习之前

用蒙特卡洛方法计算派-python和R语言

用蒙特卡洛方法算pi-基于python和R语言 最近follow了MOOC上一门python课,开始学Python.同时,买来了概率论与数理统计,准备自学一下统计.(因为被鄙视过不是统计专业却想搞数据分析) 有趣的是书里面有一块讲蒲丰投针计算Pi,这是一种随机模拟法,也就是蒙特卡洛法.蒲丰投针之于我太难,暂时没想到怎么用计算机模拟这一过程. python课中,老师也提到用随机模拟法,也就是蒙特卡洛法(MonteCarlo),用计算机模拟几千次实验,计算pi的近似值.好巧. 就拿python课中的

R语言解读自回归模型

前言 时间序列是金融分析中常用到的一种数据格式,自回归模型是分析时间序列数据的一种基本的方法.通过建立自回归模型,找到数据自身周期性的规律,从而帮助我们理解金融市场的发展变化. 在时间序列分析中,有一个常用的模型包括AR,MA,ARMA,ARIMA,ARCH,GARCH,他们的主要区别是适用条件不同,且是层层递进的,后面的一个模型解决了前一个模型的某个固有问题.本文以AR模型做为开始,将对时间序列分析体系,进行完整的介绍,并用R语言进行模型实现. 由于本文为非统计的专业文章,所以当出现与教课书不

R语言︱情感分析—词典型代码实践(最基础)(一)

笔者寄语:词典型情感分析对词典要求极高,词典中的词语需要人工去选择,但是这样的选择会很有目标以及针对性.本文代码大多来源于<数据挖掘之道>的情感分析章节.本书中还提到了监督算法式的情感分析,可见博客: R语言︱情感分析-基于监督算法R语言实现笔记. 可以与博客 R语言︱词典型情感分析文本操作技巧汇总(打标签.词典与数据匹配等)对着看. 词典型情感分析大致有以下几个步骤: 训练数据集.neg/pos情感词典.分词+数据清洗清洗(一.二.三级清洗步骤).计算情感得分.模型评价 ----------