我正在分发一个独立的应用程序.应用程序的每个实例都必须能够发送和接收查询.
要求:
我不想使用RPC,因为它需要运行注册表服务.我认为CORBA和SOAP太过于开销.我有点决定使用自定义协议,但只想知道是否有更好的东西.
谢谢.
我正在使用Amazon SQS实现一个任务队列(但我想这个问题适用于任何任务队列),其中工作人员需要采取不同的操作,具体取决于已经重新尝试作业的次数(将其移至一个不同的队列,增加可见性超时,发送警报..等等)
什么是跟踪失败的工作计数的最佳方法?我想避免为工作保留一个集中式数据库:重试计数记录.我应该在监控过程中查看在队列中花费的时间吗?国际海事组织最好是丑陋或不干净,迭代工作直到找到古老的工作.
谢谢!安德拉斯
基本上我需要双向客户端 - 服务器通信(Java),其中客户端调用服务器上的方法,但如果服务器中发生某些事件,还需要获得"回调".这些方法本身具有相当复杂的输入和输出参数,并且稍后将认证包括在系统中会很好.哪种方法符合我的要求?我已经使用RMI构建了一个原型,但我读到当c/s在不同的网络中时,存在许多问题,尤其是"回调".另外,我想避免JAX相关技术,因为我的参数中的复杂数据结构.
我们正在开发基于OSGi的基础设施来处理基于流的数据流.具体的处理任务由各个OSGi组件执行.我们现在需要在不同的机器上分发这些组件的可能性,这意味着我们需要OSGi组件/容器之间的某种通信机制.
在我的研究中,我遇到了不同的潜在解决方案:R-OSGi,用于分布式OSGi的Apache CXF,Eclipse通信框架.
ECF似乎特别有趣,因为它支持不同的传输格式,并为服务发现等内容提供支持.
我的核心问题:
我创建了两个函数:生成数据和处理数据.数据处理非常耗时,因此我想在并行线程中处理它们.但是我遇到了一些问题.首先,这是我的计划:
result = zeros(1, 10);
matlabpool open local 2
spmd
for a = 1:5
data = generate_data();
display(sprintf('Received data on CPU%d: %d', labindex, data));
result(end + 1) = process_data(data);
end
display(sprintf('All done on CPU%d', labindex));
end
matlabpool close
Run Code Online (Sandbox Code Playgroud)
并记录它返回的内容:
Starting matlabpool using the 'local' profile ... connected to 2 workers.
Lab 1:
Received data on CPU1: 100
Lab 2:
Received data on CPU2: 100
Lab 1:
Received data on CPU1: 101
Received data on CPU1: 102
Received data on CPU1: …Run Code Online (Sandbox Code Playgroud) 我知道通过将mapred.min.split.size设置为dfs.block.size,可以根据我的dfs分割大小设置mapper的数量.
类似如何根据我的mapper输出大小设置减速器的数量?
PS:我知道以下选项可以用来操纵减速机的数量.mapred.tasktracker.reduce.tasks.maximum mapred.reduce.tasks
我正在运行一个带有8个vCores和8Gb总内存的本地Yarn Cluster.
工作流程如下:
YarnClient提交一个应用程序请求,用于在容器中启动AppMaster.
AppMaster启动,创建amRMClient和nmClient,将自己注册到RM,然后通过amRMClient.addContainerRequest为工作线程创建4个容器请求
即使有足够的资源,也没有分配容器(永远不会调用回调函数onContainersAllocated).我尝试检查nodemanager和resourcemanager的日志,但我没有看到任何与容器请求相关的行.我密切关注apache文档,无法理解我做错了什么.
这里是AppMaster代码的参考:
@Override
public void run() {
Map<String, String> envs = System.getenv();
String containerIdString = envs.get(ApplicationConstants.Environment.CONTAINER_ID.toString());
if (containerIdString == null) {
// container id should always be set in the env by the framework
throw new IllegalArgumentException("ContainerId not set in the environment");
}
ContainerId containerId = ConverterUtils.toContainerId(containerIdString);
ApplicationAttemptId appAttemptID = containerId.getApplicationAttemptId();
LOG.info("Starting AppMaster Client...");
YarnAMRMCallbackHandler amHandler = new YarnAMRMCallbackHandler(allocatedYarnContainers);
// TODO: get heart-beet interval from config instead of 100 default value
amClient = AMRMClientAsync.createAMRMClientAsync(1000, this); …Run Code Online (Sandbox Code Playgroud) 我正在学习docker swarm,并对群发现选项感到困惑,我看到互联网上的很多教程都使用这个选项来创建带有docker-machine的容器,但是当我输入docker swarm doc上的文档时,它说:
您正在查看旧版独立Swarm的文档.这些主题描述了独立的Docker Swarm.在Docker 1.12及更高版本中,Swarm模式与Docker Engine集成在一起.大多数用户应该使用集成的Swarm模式.
那么,发现选项的用例是什么?所有教程都使用docker-machine创建一个swarm,我总是需要它,或者只是在我的集群中的机器上安装docker,将它们加入swarm并使用normal?
我看到了一些像Docker Swarm和的名字Docker Swarm Mode,是否有任何不同或只是不同的方式来调用相同的功能?
distributed cluster-computing docker docker-swarm docker-swarm-mode
当我阅读Julia的多核并行计算文档时,我注意到同时存在并行映射pmap和for-loop @distributed for。
从文档中可以看出,“ Julia pmap是为每个函数调用都需要大量工作的情况而设计的。相比之下,Julia @distributed for可以处理每次迭代很小的情况”。
pmap和 之间有什么区别@distributed for?为什么@distributed for要花大量时间进行缓慢工作?
谢谢
distributed ×10
hadoop ×2
java ×2
algorithm ×1
amazon-sqs ×1
c++ ×1
consistency ×1
docker ×1
docker-swarm ×1
dosgi ×1
hadoop-yarn ×1
julia ×1
mapreduce ×1
matlab ×1
osgi ×1
pmap ×1
rpc ×1
soa ×1
soap ×1
task-queue ×1