Zac*_*ach 15 parallel-processing r cluster-computing redis r-doredis
我一直在玩redis数据库的R接口,以及foreach的doRedis并行后端.我有几个问题,帮助我更好地应用此工具:
我知道这是很多问题,但我一直遇到这样一种情况,即我对并行处理如何工作的有限理解阻碍了我实现它的能力.例如,我最近尝试在大型数据库上并行化计算,并发现自己将整个数据库传递到我的集群上的每个节点,这一操作完全破坏了我从并行化中获得的任何优势.
谢谢!
alp*_*ero 15
这个难题的一部分是rredis
1 - doRedis使用rredis.具体来说,doRedis.R使用redis:RPush(因为它遍历foreach项目),每个redisWorker使用redis:BRPop从redis列表中获取内容(在doRedis"job"中命名).
Redis不仅仅是一个数据库.在这里它被用作队列!
2 - 您的所有R工作人员都可以访问1个实例(远程).将Redis服务器视为分布式队列.您的作业主将项目推送到列表,工作人员抓取并处理项目并将其推送到结果列表.N个项目可以有m个工人.取决于你想做什么.
3 - 使用env参数.这使用了所有工人都可以访问的Redis:Set(通过Redis:Get).您在foreach端传递分隔表达式,并在redis中的字符串键中设置,工作人员可以访问该表达式.
4 - 我不知道(但这几乎不具有权威性,所以请四处询问.)我还建议你阅读提供的源代码.上面的答案直接来自阅读doRedis.R和redisWorker.R.
希望这可以帮助.
[ps telnet到你的redis并发出Redis:monitor命令来来回监视聊天.]