我正在阅读有关 Hadoop 以及它的容错性的文章。我阅读了 HDFS 并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提到 mapreduce 如何执行容错的文档。特别是,当包含 Job Tracker 的主节点宕机或任何从节点宕机时会发生什么?
如果有人可以向我指出一些详细解释这一点的链接和参考资料。
我有一个Java Web应用程序,它部署在两个VM上.并为这些VM设置NLB(网络负载平衡).我的应用使用会话.我很困惑,如何在两个VM中管理用户会话.即例如 - 如果我发出请求转到VM1并创建用户会话.现在我第二次发出请求,然后进入VM2并想要访问会话数据.如何找到在VM1中创建的会话.
请帮助我清除这种混乱.
我正在整理一个概念证明,其中我想使用 PyCuda 在分布式环境中处理大型字符数据文件(每个任务一个文件中约 8GB) - 具体来说是 AWS。我知道 HDFS 会对数据文件进行分段并将其分发给工作人员,但我试图让我的环境尽可能简单,并且如果我不需要,我宁愿不必安装 Hadoop。
我最近观看了 Continuum Analytics 的一些关于他们的 Dask 框架的网络研讨会,看起来它可以完全满足我的需求。鉴于上述段落和 Dask 框架,当前对文件系统的推荐是什么?我是坚持使用 HDFS 还是有更好/更简单的解决方案?
这个问题是参考https://zookeeper.apache.org/doc/trunk/zookeeperObservers.html
观察员是一个集合的无投票权成员,他们只听到投票结果,而不是导致投票结果的协议协议。除了这个简单的区别之外,观察者的功能与追随者完全相同——客户端可以连接到它们并向它们发送读取和写入请求。观察者像追随者一样将这些请求转发给领导者,但他们只是等待听到投票结果。因此,我们可以在不损害投票性能的情况下,随心所欲地增加观察者的数量。
观察者还有其他优势。因为它们不投票,所以它们不是 ZooKeeper 集合的关键部分。因此,它们可能会失败,或与集群断开连接,而不会损害 ZooKeeper 服务的可用性。对用户的好处是观察者可以通过比追随者更不可靠的网络链接进行连接。事实上,观察者可用于与来自另一个数据中心的 ZooKeeper 服务器通信。Observer 的客户端将看到快速读取,因为所有读取都在本地提供,并且写入导致最小的网络流量,因为在没有投票协议的情况下所需的消息数量较少。
1)合奏团的无投票权成员- 有投票权的成员投票什么?
2)观察者的更新请求是如何工作的- 当 ZK 领导者收到更新请求时,它需要法定人数的节点来响应。观察者节点似乎不被视为法定节点。这是否意味着观察者节点在更新方面落后于领导者节点?如果这是真的,它如何确保观察者节点在读取过程中不响应陈旧数据?
3)观察者的客户端将看到快速读取,因为所有读取都是在本地提供的,并且写入导致最小的网络流量,因为在没有投票协议的情况下所需的消息数量较少- 来自所有其他节点的读取也将是本地只是因为它们与领导者同步,不是吗?我没有得到关于写入的部分。
这些问题应该有助于理解zookeeper和分布式系统。感谢这些问题的详细答案。提前致谢 !
在一台 REST 服务器和 5 台工作机器集群上部署 Hazelcast 的正确方法是什么?我应该HazelcastClient在 REST 服务器上启动 Hazelcast 5 个服务器实例(每个 worker 一个)和 1 个吗?
根据用户请求,搜索 5 台工作机器中的每台机器的数据并将结果返回给用户。用户请求将被 REST-server 机器接受,然后 REST-server 将搜索发送MultiTask到集群中的每个 worker。就像是:
public MySearchResult handleUserSearchRequest(String query) {
MultiTask<String> task = new MultiTask<String>(query, Hazelcast.getCluster().getMembers());
ExecutorService executorService = Hazelcast.getExecutorService();
executorService.execute(task);
Collection<String> results = task.get();
return results.stream().reduce(/*some logic*/);
}
Run Code Online (Sandbox Code Playgroud)
如何从一个地方启动所有 6 个 Hazelcast 实例(Spring Boot 应用程序)?
在使用addprocs. 当addprocs在顶层调用时,一切都很好。但是,当我将代码包装在函数中时,我无法做同样的事情。
就我而言,我正在动态添加工作人员,因此@everywhere using XXX始终在顶层调用是不可行的,我需要在函数内部执行此操作。
简而言之,这有效:
addprocs(1)
@everywhere using XXX
Run Code Online (Sandbox Code Playgroud)
而这不会:
function myaddprocs()
addprocs(1)
@everywhere using XXX
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
好的,据我所知,SOA 和微服务中的模块应该是独立的和可重用的。但是 SOA 和微服务的真正区别是什么?
执行多个官方方式tf.Session()并联是利用tf.train.Server如上述分布式TensorFlow
。另一方面,根据Keras + Tensorflow 和 Python 中的多处理,以下内容适用于 Keras,并且可以在不使用 tf.train.Server 的情况下将其修改为 Tensorflow 。
def _training_worker(train_params):
import keras
model = obtain_model(train_params)
model.fit(train_params)
send_message_to_main_process(...)
def train_new_model(train_params):
training_process = multiprocessing.Process(target=_training_worker, args = train_params)
training_process.start()
get_message_from_training_process(...)
training_process.join()
Run Code Online (Sandbox Code Playgroud)
第一种方法比第二种方法快吗?我有一个用第二种方式编写的代码,由于我的算法 (AlphaZero) 的性质,单个 GPU 应该运行多个进程,每个进程都执行对小批量的预测。
python parallel-processing distributed-computing multiprocessing tensorflow
筏共识算法是拜占庭容错算法吗?
达成共识/共识需要多少个节点(百分比)?