最近提出了一些关于试图通过使用pickle进程来促进分布式计算的Python代码的问题.显然,该功能在历史上是可行的,但出于安全原因,相同的功能被禁用.在第二次尝试通过套接字传输功能对象时,仅传输了引用.如果我错了,请纠正我,但我不相信这个问题与Python的后期绑定有关.鉴于假设进程和线程对象无法被pickle,有没有办法传输可调用对象?我们希望避免为每个作业传输压缩源代码,因为这可能会使整个尝试毫无意义.出于可移植性原因,只能使用Python核心库.
使用2F + 1处理器时,Paxos算法可以容忍高达F的故障.据我所知,此算法仅适用于固定数量的处理器.是否可以在动态环境中使用此算法,其中可以动态添加和删除节点?
我正在使用MATALB进行并行计算parfor.代码结构看起来很像
%%% assess fitness %%%
% save communication overheads
bitmaps = pop(1, new_indi_idices);
porosities = pop(2, new_indi_idices);
mid_fitnesses = zeros(1, numel(new_indi_idices));
right_fitnesses = zeros(1, numel(new_indi_idices));
% parallelization starts
parfor idx = 1:numel(new_indi_idices) % only assess the necessary
bitmap = bitmaps{idx};
if porosities{idx}>POROSITY_MIN && porosities{idx}<POROSITY_MAX
[mid_dsp, right_dsp] = compute_displacement(bitmap, ['1/' num2str(PIX_NO_PER_SIDE)]);
mid_fitness = 100+mid_dsp;
right_fitness = 100+right_dsp;
else % porosity not even qualified
mid_fitness = 0;
right_fitness = 0;
end
mid_fitnesses(idx) = mid_fitness;
right_fitnesses(idx) = right_fitness;
fprintf('Done.\n');
pause(0.01); % …Run Code Online (Sandbox Code Playgroud) 如何以分布式方式计算大(> 10TB)数据集的皮尔森互相关矩阵?任何有效的分布式算法建议将不胜感激.
更新:我读了apache spark mlib相关的实现
Pearson Computaation:
/home/d066537/codespark/spark/mllib/src/main/scala/org/apache/spark/mllib/stat/correlation/Correlation.scala
Covariance Computation:
/home/d066537/codespark/spark/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/RowMatrix.scala
Run Code Online (Sandbox Code Playgroud)
但对我来说,看起来所有的计算都发生在一个节点上,而且它并没有真正意义上的分布.
请点亮这里.我也尝试在3节点火花簇上执行它,下面是截图:
正如你从第二张图片中看到的那样,在一个节点上提取数据然后正在进行计算.我在这里吗?
algorithm distributed distributed-computing cross-correlation apache-spark
我们有一个计算密集型服务,用于进行大量转换.它在很大程度上受计算限制(CPU绑定)进程.基本上发生的是我们有一个消息代理,它通过Thrift将消息发送到处理服务.
现在我们有多个不同的处理服务,它们运行不同的算法来处理消息 - 这些消息被路由到一个或多个处理算法.我们的消息量是可变的,处理算法的需求也是可变的(即我们可以获得包含XYZ的许多消息然后发送到算法1,否则发送到算法2).
我们希望将其扩展为可横向扩展的内容.所以我们有多个节点正在运行处理算法.现在,根据消息传递负载,我们的Thrift请求应该发送到不同的服务器(假设所有服务都运行每个处理Algo1到3的实例).比如我们想要在Algo 1上获取大量消息,然后我们有两台运行algo 1的服务器,第三台服务器负责处理其他两个algos(Algo 2和3)的请求.
所以系统看起来像这样:
Client ----Request-------|
-----------|--------------------
| Coord & Load Balancer Service | ... like zookeeper
--------------------------------
<--|-->
| Route messages to servers...
Server1: Server2: Server 3:
Algo1 instance Algo1 instance Algo2 instance
Algo3 instance
Run Code Online (Sandbox Code Playgroud)
所有进程都是用Java编写的.
因此,使用Zookeeper进行设置是多么容易.我知道,当我们添加或更改algos时,我们可以轻松地使用Zookeeper来处理事物的配置方面(即服务器侦听算法更新或添加并按配置提供服务)但我们如何管理负载平衡方面?
干杯!
java load-balancing thrift distributed-computing apache-zookeeper
我是java的新手,非常喜欢学习它.我已经制作了一个运行良好的程序,但是当我添加更多数据进行处理时需要一些时间.我把它做了线程,它确实加速了很多,但现在我正在考虑加快速度(显然它需要处理的数据越多,所需的时间越长).只是一个fyi,我的程序不会在线程之间共享任何数据,它会获取列表中的一项并进行一些数学运算并将结果上传到数据库.理想情况下,一些工作计算机会获得列表中的一些项目然后完成其工作,然后在完成之前获得更多工作
我做了一些研究并找到了队列,我不确定它是否是我需要的东西,或者是否有其他的东西(我也在考虑保持工人的诚信/监督对我来说可能对于作为新手来说太多了).我家里有4台电脑(一些Linux,Mac和Windows ..但我可以在所有非Linux系统上安装linux vm,如果这些解决方案特定于操作系统)并且想要让他们也开始处理这项任务.我想创建Java队列,其他客户端采取一个部分和过程,但我也看到了库(rabbitmq).我也简要介绍过网格计算.
这是要走的路还是有更好的方法?我不需要任何代码或任何东西只是想知道分发线程的解决方案是什么,或者在评估时使用哪些因素.
我正在学习COMPS.到目前为止,一切都运行良好,但我只执行了手册中给出的示例.
现在我想运行自己的测试应用程序,我无法让它工作.我一定错过了什么,但我看不出我做错了什么.
我的应用程序称为App,并且具有主类App,以及另一个名为AppItf的类中的接口.当我尝试使用runcompss运行它时:
runcompss -d --classpath = $ PWD/App.jar App
我收到以下消息:
使用项目文件的默认位置:/opt/COMPSs/Runtime/scripts/user/../../configuration/xml/projects/project.xml使用资源文件的默认位置:/ opt/COMPSs/Runtime/scripts/user /../../configuration/xml/resources/resources.xml
-----------------执行App --------------------------
[Loader] - 加载或执行应用程序时出错.Sun.reflect.DeativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)的java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Method.java:606)位于integratedtoolkit.loader.ITAppLoader.load(ITAppLoader.java:54)的integratedtoolkit.loader.ITAppLoader.main(ITAppLoader.java:84)引起:java .lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)的javaI.URLClassLoader $ 1.run(URLClassLoader.java:355)java.security.AccessController.doPrivileged(Native Method)的AppItf java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java. lang.ClassLoader.loadClass(ClassLoader.java:358)在integratedtoolkit.loader.CustomLoader.loadClass(CustomLoader.java :56)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:195)at integratedtoolkit.loader.total.ITAppModifier.modify(ITAppModifier.java:46)...还有6个
运行应用程序出错
有人可以帮我找到我做错的事吗?
先感谢您!
这真是愚蠢,但动物园管理员做的那个木筏没有 - 不是说zab而是动物园管理员本身.
我得到筏子领导选举等服务器,但动物园管理员的意义何在?是否有任何人有类比
我们如何在Dask分布式中为每个工作人员选择--nthreads和--nprocs?我有3个工作线程,每个工作线程有2个线程,每个内核有4个内核,每个内核有1个线程(根据每个工作线程上'lscpu'Linux命令的输出)
我对一致性哈希的理解是,您采用一个密钥空间,对密钥进行哈希处理,然后按 360 进行取模,然后将值放入一个环中。然后,在该环上均匀分布节点。您可以通过从散列密钥所在的位置顺时针查看来选择处理该密钥的节点。
然后在许多解释中他们继续描述Vnode。在引用 dynamo 论文的riak 文档中,他们说:
The basic consistent hashing algorithm presents some challenges. First, the random position assignment of each node on the ring leads to non-uniform data and load distribution.
Run Code Online (Sandbox Code Playgroud)
然后他们继续提出 Vnodes 作为确保输入密钥空间在环周围均匀分布的一种方法。据我了解,要点是 Vnode 划分范围的次数比机器多得多。假设您有 10 台机器,则可能有 100 个 Vnode,并且单个机器的 Vnode 将随机分散在环周围。
现在我的问题是为什么需要这个额外的 Vnode 步骤。哈希函数应该提供其输出的均匀分布,因此这似乎是不必要的。根据这个答案,即使哈希函数的模仍然是均匀分布的。