基于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的逻辑,期待后续更多精彩内容。。。
基于redis和R语言构建并行计算平台(yiyou)相关推荐
- R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型
R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录
- R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合
R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录
- R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化
R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理.构建词袋模型.构建xgboost文本分类模型.基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化 目录
- R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标
R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录
- R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标
R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...
- R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标
R语言构建logistic回归模型并评估模型:计算混淆矩阵.并基于混淆矩阵计算Accuray.Precision.Recall(sensitivity).F1.Specificity指标 目录
- R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters)、计算特征重要度
R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters).计算特征重要度(feature importance) 目录
- R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型、比较加入叶子索引特征的模型的分类性能提升
R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型.比较加入叶子索引特征的模型的分类性能提升 目录
- R语言构建ElasticNet回归模型实战:基于mtcars数据集
R语言构建ElasticNet回归模型实战:基于mtcars数据集 目录 R语言构建ElasticNet回归模型实战:基于mtcars数据集 #ElasticNet回归
最新文章
- 记一个自认为写得有点复杂的sql语句
- 【一起去大厂系列】针对left join以及limit的两条优化小技巧
- Java中注释的使用
- javascript 懒加载技术(lazyload)简单实现
- IPhone之NSXMLParser的使用
- 百度地图定位SDK 之构想
- jquery新版本旧版本之间的坑
- 数据库管理工具_NavicatPemium_入门使用
- katakana.php,片假名 平假名转换器 - Hi!Penpal!
- RN开发环境搭建-window
- linux保密检查工具,linux使用lynis检查系统安全
- 数据结构之斐波那契数列java实现
- uni-app - 最新自定义连接安卓模拟器配置到 MUMU 模拟器运行程序(将uni-app运行到MuMu模拟器上进行调试,配置电脑手机模拟器 MUMU 运行测试)
- Office Web App服务器的配置
- python corrupt extra field_英语专四dictation模拟练习-沪江英语
- 高斯分布的随机数生成器
- H264编码器5( x264源代码简单分析:x264_slice_write() 与H264 编码简介)
- 手机删除的视频怎么恢复?即刻扫描,快速恢复
- 怎么将简历和个人作品做成二维码?个人资料如何转二维码?
- 视频教程-人工智能-数学基础视频课程-机器学习
热门文章
- MFC树型控件 搜索并展开高亮指定树节点
- 守护线程C语言windows,C言语如何利用子线程刷新主线程
- java怎么调用另一个类的方法_Java设计模式:十篇,代码小白必看
- FFmpeg之YUV排列方式(十六)
- Ubuntu下映射串口设备到docker
- selinux denied: u:r:untrusted_app:s0:c512,c768报错解决
- 对Android蓝牙UUID的理解
- python之slice,range
- comsol固体传热_参与介质中辐射传热的 4 种计算方法
- tplink软件升级有用吗_TP-LINK路由器升级方法 | 吴文辉博客