标签: distributed-computing

Python分布式计算(工作)

我正在使用旧线程发布新代码,试图解决同样的问题.什么构成安全的泡菜?这个?

sock.py

from socket import socket
from socket import AF_INET
from socket import SOCK_STREAM
from socket import gethostbyname
from socket import gethostname

class SocketServer:
  def __init__(self, port):
    self.sock = socket(AF_INET, SOCK_STREAM)
    self.port = port
  def listen(self, data):
    self.sock.bind(("127.0.0.1", self.port))
    self.sock.listen(len(data))
    while data:
      s = self.sock.accept()[0]
      siz, dat = data.pop()
      s.send(siz)
      s.send(dat)
      s.close()

class Socket:
  def __init__(self, host, port):
    self.sock = socket(AF_INET, SOCK_STREAM)
    self.sock.connect((host, port))
  def recv(self, size):
    return self.sock.recv(size)
Run Code Online (Sandbox Code Playgroud)

pack.py

#http://stackoverflow.com/questions/6234586/we-need-to-pickle-any-sort-of-callable
from marshal import dumps as marshal_dumps
from pickle …
Run Code Online (Sandbox Code Playgroud)

python sockets distributed-computing pickle multiprocessing

7
推荐指数
1
解决办法
1515
查看次数

在许多机器上分配状态

我正在尝试编写一个需要了解集群中其他计算机状态(本地LAN)的工具.这适用于类似于VRRP和corosync/openais 的网络故障转移/高可用性系统,但我希望包含更多信息(例如接近实时的速度/性能特征),以便设备可以做出更明智的选择.这意味着使用比预先确定的基于权重的机制更复杂的协议:通过允许所有群集机器查看彼此的状态,他们可以共同商定哪个最适合作为主设备.

从我的搜索中,我还没有找到任何提供分布式状态机制的(C,C++或JavaME)库.理想情况下,我正在寻找能够定期广播/多播每个机器状态的内容,这样参与的机器就可以建立一个全局状态表,所有人都可以看到主人应该是谁.在这种情况下,状态是任意键/值对.

我宁愿不重新发明任何轮子,所以很想知道这里是否有人能指出我正确的方向?

c c++ linux distributed-computing java-me

7
推荐指数
1
解决办法
412
查看次数

我如何集群弹簧mvc应用程序?

我有一个用弹簧写在码头服务器上的Web应用程序.因为负载平衡,我必须通过Web服务器复制http会话和spring-security上下文.

有人能指出一个工作实例如何使这成为可能吗?

mvc控制器是spring-security-oauth2的一部分,因此我影响它们的能力有限,而码头是我们环境的先决条件.对于大多数数据和缓存,我们将使用infinispan.

我找不到任何关于tu簇与弹簧的当前信息,所以我很感激每一个帮助.

spring-mvc distributed-computing spring-security

7
推荐指数
1
解决办法
1万
查看次数

限制纱线中每个应用程序同时运行的容器数量

假设一个 yarn 应用程序有长时间运行的任务(运行 1 小时或更长时间)。当一个 MR 作业启动时,所有集群资源都会被阻塞,至少在一个容器完成之前,这有时可能需要很长时间。

有没有办法限制同时运行的容器数量?类似的东西,例如 map.vcores.max(每个 NM,或全局)。所以其他应用程序不会被阻止。

有任何想法吗?

附:Hadoop 2.3.0

java hadoop scheduling distributed-computing hadoop-yarn

7
推荐指数
1
解决办法
7321
查看次数

Akka Distributed Pub/Sub和命名主题的数量

我想使用akka群集在我的系统中为每个在线用户创建一个命名主题.一次有几个名为主题的10000个会对性能产生负面影响吗?

scala distributed-computing akka akka-cluster

7
推荐指数
1
解决办法
140
查看次数

如何在kafka中创建自定义序列化程序?

只有很少的序列化器可用,如,

org.apache.kafka.common.serialization.StringSerializer
org.apache.kafka.common.serialization.StringSerializer 
Run Code Online (Sandbox Code Playgroud)

我们如何创建自己的自定义序列化程序?

java distributed-computing apache-kafka kafka-consumer-api

7
推荐指数
2
解决办法
9301
查看次数

水平扩展和 cron 作业

我最近被迫将我的应用程序转移到亚马逊并使用自动缩放,我偶然发现了 cron 作业和自动缩放的问题。

我有一个每 15 分钟运行一次的 cron 作业,它检查订阅是否应该收费,查询选择所有过期的订阅,并尝试对它们收费。它一旦处理就会改变它们的状态,但是它们是批量获取的,并且该过程需要 1-3 分钟。

如果我有多个具有相同 cron 作业的实例,它可能会同时触发并对订阅进行多次收费。这种事其实已经发生过一次了。

这里最好的方法是什么?以某种方式锁定桌子?

我正在使用 Amazon elastic beanstalk 和 symfony3。

distributed-computing horizontal-scaling symfony amazon-elastic-beanstalk

7
推荐指数
1
解决办法
5086
查看次数

当Ray worker调用时,Tensorflow无法检测GPU

当我尝试以下代码示例使用Tensorflow和Ray时,Tensorflow在"远程"工作程序调用时无法检测到我的机器上的GPU,但它在"本地"调用时确实找到了GPU.我把"远程"和"本地"放在恐慌报价中因为一切都在我的桌面上运行,它有两个GPU并运行Ubuntu 16.04并且我使用tensorflow-gpuAnaconda软件包安装了Tensorflow .

在local_network似乎是负责在日志中的这些信息:

2018-01-26 17:24:33.149634: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro M5000, pci bus id: 0000:03:00.0)
2018-01-26 17:24:33.149642: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Quadro M5000, pci bus id: 0000:04:00.0)
Run Code Online (Sandbox Code Playgroud)

并且remote_network似乎对此消息负责:

2018-01-26 17:24:34.309270: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_NO_DEVICE
Run Code Online (Sandbox Code Playgroud)

为什么Tensorflow能够在一种情况下检测GPU而不能检测另一种情况?

import tensorflow as tf
import numpy as np
import ray

ray.init()

BATCH_SIZE = 100
NUM_BATCHES = 1
NUM_ITERS = 201

class Network(object):
    def …
Run Code Online (Sandbox Code Playgroud)

machine-learning distributed-computing neural-network multi-gpu tensorflow

7
推荐指数
1
解决办法
364
查看次数

DynamoDB - AWS 上的事件存储

我正在 AWS 上设计一个 Event Store,我选择了 DynamoDB,因为它似乎是最好的选择。我的设计似乎相当不错,但我面临一些我无法解决的问题。

**该设计

事件由对唯一标识(StreamId, EventId):

  • StreamId:它与aggregateId 相同,这意味着一个聚合对应一个事件流。
  • EventId: 一个增量数字,有助于在同一事件流中保持排序

事件保留在 DynamoDb 上。每个事件都映射到表中的单个记录,其中必填字段是 StreamId、EventId、EventName、Payload(可以轻松添加更多字段)。

partitionKey 是StreamId,sortKey 是EventId。

将事件写入事件流时使用乐观锁定。为了实现这一点,我使用了 DynamoDb 条件写入。如果已经存在具有相同(StreamId,EventId)的事件,我需要重新计算聚合,重新检查业务条件,如果业务条件通过,最后再次写入。

事件流

每个事件流由 partitionKey 标识。查询所有事件的流等于查询 partitionKey=${streamId} 和 0 到 MAX_INT 之间的 sortKey。

每个事件流标识一个且仅一个聚合。如前所述,这有助于使用乐观锁定处理同一聚合上的并发写入。这也可以在重新计算聚合时提供出色的性能。

活动发布

利用 DynamoDB Streams + Lambda 的组合发布事件。

重播事件

这就是问题开始的地方。让每个事件流只映射一个聚合(这会导致有大量的事件流),没有简单的方法可以知道我需要从哪些事件流中查询所有事件。

我正在考虑在 DynamoDB 中的某处使用额外的记录,该记录将所有 StreamId 存储在一个数组中。然后我可以查询它并开始查询事件,但是如果在我重播时创建了一个新流,我就会丢失它。

我错过了什么吗?或者,我的设计是错误的吗?

distributed-computing amazon-web-services event-sourcing amazon-dynamodb amazon-dynamodb-data-modeling

7
推荐指数
2
解决办法
4477
查看次数

redis集群上的锁

我有一个包含3个主节点的Redis集群,每个主节点都有相应的从节点。我想获取集群上的锁来执行一些写操作,然后释放锁。

据我所知,要连接到集群,我们通常连接到集群中的一个节点,并在该节点上执行所有操作,该节点又处理重定向到集群中其他节点的操作。

Redis集群是否可以获取锁?[PS我正在使用Redisson客户端]从Redisson客户端中Multilock和redlock( https://github.com/redisson/redisson/wiki/8.-Distributed-locks-and-synchronizers )下的示例中,它们正在获取锁在各个节点上。

  • 多锁或红锁如何在集群上工作?
  • 如果我有 Redis 集群,我该如何使用以及使用什么类型的锁?
  • 我使用哪个库(Jedis/Redisson)?

Jedis 似乎还支持集群锁定(https://github.com/kaidul/jedis-lock)。

PS:我已经广泛阅读了这方面的内容,但我无法找到有关锁定集群的明确答案。非常感谢一些帮助。

distributed-computing redis distributed-lock spring-data-redis redis-cluster

7
推荐指数
1
解决办法
3765
查看次数