最近研究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)相关推荐

  1. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  2. R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合

    R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录

  3. R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化

    R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理.构建词袋模型.构建xgboost文本分类模型.基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化 目录

  4. R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标

    R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录

  5. R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...

  6. R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建logistic回归模型并评估模型:计算混淆矩阵.并基于混淆矩阵计算Accuray.Precision.Recall(sensitivity).F1.Specificity指标 目录

  7. R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters)、计算特征重要度

    R语言构建catboost模型:构建catboost模型并基于网格搜索获取最优模型参数(Select hyperparameters).计算特征重要度(feature importance) 目录

  8. R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型、比较加入叶子索引特征的模型的分类性能提升

    R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型.比较加入叶子索引特征的模型的分类性能提升 目录

  9. R语言构建ElasticNet回归模型实战:基于mtcars数据集

    R语言构建ElasticNet回归模型实战:基于mtcars数据集 目录 R语言构建ElasticNet回归模型实战:基于mtcars数据集 #ElasticNet回归

最新文章

  1. 记一个自认为写得有点复杂的sql语句
  2. 【一起去大厂系列】针对left join以及limit的两条优化小技巧
  3. Java中注释的使用
  4. javascript 懒加载技术(lazyload)简单实现
  5. IPhone之NSXMLParser的使用
  6. 百度地图定位SDK 之构想
  7. jquery新版本旧版本之间的坑
  8. 数据库管理工具_NavicatPemium_入门使用
  9. katakana.php,片假名 平假名转换器 - Hi!Penpal!
  10. RN开发环境搭建-window
  11. linux保密检查工具,linux使用lynis检查系统安全
  12. 数据结构之斐波那契数列java实现
  13. uni-app - 最新自定义连接安卓模拟器配置到 MUMU 模拟器运行程序(将uni-app运行到MuMu模拟器上进行调试,配置电脑手机模拟器 MUMU 运行测试)
  14. Office Web App服务器的配置
  15. python corrupt extra field_英语专四dictation模拟练习-沪江英语
  16. 高斯分布的随机数生成器
  17. H264编码器5( x264源代码简单分析:x264_slice_write() 与H264 编码简介)
  18. 手机删除的视频怎么恢复?即刻扫描,快速恢复
  19. 怎么将简历和个人作品做成二维码?个人资料如何转二维码?
  20. 视频教程-人工智能-数学基础视频课程-机器学习

热门文章

  1. MFC树型控件 搜索并展开高亮指定树节点
  2. 守护线程C语言windows,C言语如何利用子线程刷新主线程
  3. java怎么调用另一个类的方法_Java设计模式:十篇,代码小白必看
  4. FFmpeg之YUV排列方式(十六)
  5. Ubuntu下映射串口设备到docker
  6. selinux denied: u:r:untrusted_app:s0:c512,c768报错解决
  7. 对Android蓝牙UUID的理解
  8. python之slice,range
  9. comsol固体传热_参与介质中辐射传热的 4 种计算方法
  10. tplink软件升级有用吗_TP-LINK路由器升级方法 | 吴文辉博客