我正在阅读有关 Hadoop 以及它的容错性的文章。我阅读了 HDFS 并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提到 mapreduce 如何执行容错的文档。特别是,当包含 Job Tracker 的主节点宕机或任何从节点宕机时会发生什么?
如果有人可以向我指出一些详细解释这一点的链接和参考资料。
假设我们有一个Web项目,我们希望同时将~10000个Web客户端连接到服务器.我们还假设一个客户端会话持续约25分钟.
如果我们将LAMP堆栈或任何其他流行的Web堆栈/框架(Ruby on Rails与Linux上的Apache等)与使用Erlang/OTP构建的Web项目进行比较 - Erlang/OTP在容错方面具有哪些其他框架不具备的功能"T?
客户端会发生什么事情会导致整个LAMP堆栈崩溃,而Erlang/OTP会坚持到底?
假设在下图中中间消息队列失败.发件人仍然可以使用其他邮件队列发送邮件.
但是如果消息队列在收到消息后死亡会发生什么.发件人如何知道邮件是否已发送给接收者,以决定是否重新发送不同的邮件队列?
类似的情况如果接收器在消息队列向其发送消息后死亡会发生什么?发件人如何知道接收方是否已满足其预期请求?

distributed fault-tolerance message-queue distributed-system
想象一下直截了当的监督层级.孩子死了.父亲决定要Restart孩子.当Restart编辑时,postRestart和朋友们一起打电话,但如果父亲决定重新开始孩子怎么办?儿童演员是否知道他正在恢复?顺便说一下.父亲是否可以访问导致孩子出现异常的信息?
我有以下代码:
class A extends Actor with ActorLogging {
override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 2) {
case _ => log.info("An actor has been killed"); Restart
}
val b = context.system.actorOf(Props[B], "b")
def receive = {
case _ => context.system.scheduler.schedule(5 seconds, 5 seconds, b, true)
}
}
class B extends Actor with ActorLogging {
def receive = { case true => self ! Kill }
}
Run Code Online (Sandbox Code Playgroud)
在self ! Kill演员的一个实例中,A我没有看到消息"一个演员已被杀死",随后对演员的调用会A生成"死信"消息,因此没有重启.为什么OneForOneStrategy不被叫?
奇怪的是,我可以删除整个OneForOneStrategy覆盖,并且程序行为没有任何变化.
至于我可以从维基百科和令人难以置信的HPE网站收集,NonStop系统架构声名鹊起,它可以实现单故障FT,而无需分配过多的备用容量(即,通常采用锁步架构需要过度提供3倍).
这似乎是一个理想的属性,但我找不到有关他们使用的方法和警告的更多细节.即他们对网络做出的假设是什么,他们容忍的失败类型,假设客户行为,可接受的恢复时间,他们运行的工作流程等等.
任何人都可以简要描述一下NonStop系统如何解决故障检测和故障纠正的典型问题?它是系统级别的通用神奇解决方案,还是要求编写应用程序以使用某些事务工具和检查点数据和通信?
非常感谢!
正如 ZooKeeper Getting Started Guide 中提到的,容错集群设置至少需要三台服务器,强烈建议您使用奇数台服务器。
因此,如果我有 5 个服务器,并且如上所述,当其中 2 个失败时,我仍然可以生存。但这意味着同时或累积?
那么这个怎么样:
5台服务器 -> 一台失败 -> 4 台服务器 -> 一台失败 -> 3 台服务器 -> 一台失败 -> 2 台服务器 -> 一台失败 -> 死
3台服务器有什么区别?初始化?和 3 个服务器(从 5 个服务器退化)??
抛出的最后一个异常如何包含java中之前抛出的所有异常?
我从失败安全异常处理中读取失败安全异常处理,我无法理解 这一点"一种方法是确保抛出的最后一个异常包含所有先前抛出的异常." 我们怎样才能做到这一点?
在过去的几天里,我一直在尝试使用 MPI 用 C 语言编写容错应用程序。我正在尝试学习如何将错误处理程序附加到 MPI_COMM_WORLD 通信器,以便在节点出现故障(可能是由于崩溃)的情况下并退出而不调用 MPI_Finalize() 程序仍然可以从这种情况中恢复并继续计算。
到目前为止,我遇到的问题是,在我将错误处理程序函数附加到通信并导致节点崩溃后,MPI 不会调用错误处理程序,而是强制所有线程退出。
我认为这可能是我的应用程序的问题,所以我在线查找示例代码并尝试运行它,但情况是相同的...我当前尝试运行的示例代码如下。(我从这里得到https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.shodor.org% 2Fmedia%2Fcontent%2F%2Fpetascale%2Fmaterials%2FdistributedMemory%2Fpresentations%2FMPI_Error_Example.pdf&ei=jq6KUv-BBcO30QW1oYGABg&usg=AFQjCNFa5L_Q6Irg3VrJ3fsQBIyqjBlSgA&sig2=8An4SqBvhCACx5YLwB mROA对 PDF 格式表示歉意,但它不是我写的,所以我现在粘贴下面相同的代码):
/* Template for creating a custom error handler for MPI and a simple program
to demonstrate its' use. How much additional information you can obtain
is determined by the MPI binding in use at build/run time.
To illustrate that the program works correctly use -np 2 through -np 4.
To illustrate an MPI error set victim_mpi = 5 and use -np 6. …Run Code Online (Sandbox Code Playgroud) 我正在寻找创建实时文档编辑和聊天应用程序.我一直想要学习Erlang一段时间,我想知道这是否是一个很好的项目来尝试它.
具体来说,在什么时候我会开始看到Erlang的容错和轻量级进程的好处,比如在Mongrel或LAMP堆栈上运行的Rails应用程序?它会是100个并发用户吗?1000?100000?基本上,我不知道学习一门新语言是否值得,或者我目前的技能是否足够.谢谢!
fault-tolerance ×11
actor ×2
akka ×2
erlang ×2
c ×1
concurrency ×1
distributed ×1
exception ×1
fault ×1
hp-nonstop ×1
java ×1
lamp ×1
mapreduce ×1
mpi ×1
oop ×1
scala ×1
stack-trace ×1
tandem ×1