我有一个分布式系统(单个数据中心中的多个节点),我想要具有以下属性:
什么算法(最适合论文的链接)适合这个?
(我假设一些答案将包括P2P算法,但我过去遇到的大部分答案都更像是分布式哈希表,其中节点进入并接管键空间的某些部分,等等.我也认识到使用简单UDP消息进行多播可能是合适的,但现有的工作有助于使消息传递可靠吗?)
我在Actor Oriented Programming中使用一种名为SALSA的语言,让演员从一台机器移动到另一台机器.
我想知道这是否可以使用Scala或Erlang完成,它们是两种面向Actor的编程语言,它们背后有更多的动力.
如果这些语言中的任何一种都支持此功能,请您指出一些参考如何实现此类功能的材料?
在我的解决方案中,我使用分布式任务来监视硬件实例一段时间(比如10分钟).我必须做一些事情:
在整个会话(10分钟)内运行单个任务并执行所有这些任务是否安全,还是应该将这些操作拆分为自己的任务?
正如我所看到的,单个任务的优点是管理和实施时序约束会更容易.但:
运行大量(大多数)睡着的工人是不是一个好主意?例如,如果我知道最多会打开200个会话,我会有500名工作人员,以确保总有可用的"会话"席位?
我正在使用TreeBaggerMatlab(R2014a&b)提供的类,与分布式计算工具箱一起使用.我local在拥有40个内核的Windows 7计算机上运行了一个有30名工作人员的集群.
我调用TreeBagger构造函数来生成一个回归林(一个包含32个树的集合),传递一个set为的options结构.'UseParallel''always'
但是,TreeBagger似乎只使用了可用的30个左右的工作者(根据每个进程的CPU使用情况来判断,使用任务管理器观察).当我尝试使用简单的parfor循环测试池时:
parfor i=1:30
a = fft(rand(20000));
end
Run Code Online (Sandbox Code Playgroud)
然后所有30名工人都参与其中.
我的问题是:(如何)我可以强制TreeBagger使用所有可用资源?
parallel-processing matlab distributed-computing random-forest
我目前正在尝试扩展使用Scala和Spark的机器学习应用程序.我正在使用我在Github上发现的Dieterich Lawson先前项目的结构
https://github.com/dieterichlawson/admm
该项目基本上使用SparkContext构建训练样本块的RDD,然后对每个集合执行局部计算(例如求解线性系统).
我遵循相同的方案,但对于我的本地计算,我需要在每个训练样本块上执行L-BFGS算法.为了做到这一点,我想使用mlLib中的L-BFGS算法,该算法具有以下特征.
runLBFGS(RDD<scala.Tuple2<Object,Vector>> data, Gradient gradient,
Updater updater, int numCorrections, double convergenceTol,
int maxNumIterations, double regParam, Vector initialWeights)
Run Code Online (Sandbox Code Playgroud)
如上所述,该方法将训练样本的RDD [Object,Vector]作为输入.问题是在每个工作者本地我不再保留数据的RDD结构.因此,我正在尝试在矩阵的每个块上使用SparkContext的并行化功能.但是当我这样做时,我得到了一个序列化器异常.(确切的异常消息在问题的最后).
这是我如何处理SparkContext的详细解释.
首先,在主应用程序中,它用于打开文本文件,它在LogRegressionXUpdate类的工厂中使用:
val A = sc.textFile("ds1.csv")
A.checkpoint
val f = LogRegressionXUpdate.fromTextFile(A,params.rho,1024,sc)
Run Code Online (Sandbox Code Playgroud)
在应用程序中,LogRegressionXUpdate类实现如下
class LogRegressionXUpdate(val training: RDD[(Double, NV)],
val rho: Double) extends Function1[BDV[Double],Double] with Prox with Serializable{
def prox(x: BDV[Double], rho: Double): BDV[Double] = {
val numCorrections = 10
val convergenceTol = 1e-4
val maxNumIterations = 20
val regParam = 0.1
val (weights, loss) = LBFGS.runLBFGS(
training,
new …Run Code Online (Sandbox Code Playgroud) 我使用COMPS 1.4生成了执行的痕迹.我注意到一些具有数据依赖关系的任务在tracefile中重叠.这不应该是不可能的.我还检查了依赖图,它们似乎是正确的.
我按照以下说明安装了COMPS:
我可以做些什么来同步跟踪?我应该尝试手动同步不同机器的时钟吗?
我正在使用Spark 2.0,这项工作首先是对输入数据进行排序并将其输出存储在HDFS上.
我遇到了内存错误,解决方案是将"spark.shuffle.memoryFraction"的值从0.2增加到0.8,这解决了这个问题.但是在文档中我发现这是一个弃用的参数.
据我所知,它被"spark.memory.fraction"取代.如何在考虑HDFS的排序和存储的同时修改此参数?
memory distributed-computing out-of-memory apache-spark apache-spark-2.0
很多人说:
Spark不会在hdfs中复制数据.
Spark在DAG图中安排操作.Spark构建RDD谱系.如果RDD丢失,可以在谱系图的帮助下重建它们.因此不需要数据复制,因为可以从谱系图重新计算RDDS.
我的问题是:
如果一个节点出现故障,spark将只重新计算在该节点上丢失的RDD分区,但重新计算过程中所需的数据源来自何处?你的意思是它的父RDD在节点出现故障时仍然存在吗?如果失去一些分区的RDD没有父RDD(如RDD来自火花流接收器)怎么办?
fault-tolerance distributed-computing apache-spark spark-streaming rdd
升级到Keras 2.0.9之后,我一直在使用该multi_gpu_model实用程序,但我无法保存我的模型或最佳权重
model.save('path')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
TypeError:无法pickle模块对象
我怀疑获取模型对象的访问权存在一些问题.有没有解决这个问题的工作?
关于Dask,我有几个基本问题:
作为编辑:我的应用程序是我想在我的本地计算机或群集上并行化一个for循环(即它应该在群集上工作)。
作为第二个编辑:关于期货和延迟计算之间的关系,我想我也不太清楚。
谢谢