jjzjj

hadoop - 关于 YARN 的查询(故障模式、容器大小、实例)

coder 2024-01-09 原文

我想问几个问题来理解 YARN 的工作原理:

  1. 任何人都可以解释或引用任何可以轻松了解 YARN 中故障模式的文档(即任务故障、应用程序主机故障、节点管理器故障、资源管理器故障)
  2. YARN 中的容器大小是多少?和 Map reduce 1 中的 slot 一样吗?
  3. YARN 的任何实际/工作示例? 谢谢

最佳答案

请参阅 Hadoop 权威指南教科书...除此之外,apache 网站上还有很多信息。

容器大小不是固定的,它是根据资源管理器的要求动态分配的。

从开发人员的角度来看,相同的旧 map-reduce 将适用于 YARN。

ResourceManager 失败

在 YARN 框架的初始版本中,ResourceManager 故障意味着整个集群故障,因为它是单点故障。 ResourceManager 存储状态 集群,如提交申请的元数据,集群信息 资源容器、集群的一般配置信息等。 因此,如果 ResourceManager 由于某些硬件故障而宕机,那么 没有办法避免手动调试集群并重新启动 资源管理器。在 ResourceManager 关闭期间,集群是 不可用,一旦重新启动,所有作业都需要重新启动,因此半完成的作业会丢失所有数据,需要再次重新启动。简而言之,ResourceManager 的重启用于重启所有正在运行的 ApplicationMaster。最新版本的 YARN 通过两种方式解决了这个问题。一种方法是创建一个主动-被动 ResourceManager 架构,这样当一个出现故障时,另一个就会变为事件状态并负责集群。另一种方法是使用 Zookeeper ResourceManager quorum,这样 ResourceManager 状态就存储在 Zookeeper 的外部,并且一个 ResourceManager 处于事件状态,而一个或多个 ResourceManager 处于被动模式,等待某些事情发生,使它们进入事件状态。

ApplicationMaster 失败 当 ApplicationMaster 失败时,ResourceManager 只需启动另一个容器,其中运行一个新的 ApplicationMaster 以进行另一个应用程序尝试。这是新的ApplicationMaster的职责 恢复旧的 ApplicationMaster 的状态,只有当 ApplicationMaster 将它们的状态保存在外部位置以便它可以用于将来引用时,这才有可能。 ApplicatoinMaster 会将它们的状态存储到持久性磁盘中,因此所有状态都可以恢复,直到故障可以恢复。

节点管理器失败 如果节点管理器发生故障,ResourceManager 会使用超时检测到此故障(即停止从 NodeManager 接收心跳)。 ResourceManager 然后从其可用 NodeManager 池中删除 NodeManager。它还会终止该节点上运行的所有容器,并将故障报告给所有正在运行的 AM。然后,AM 负责对节点故障使用react,方法是重做故障期间该节点上运行的任何容器所做的工作。

容器故障

容器故障将由节点管理器报告给资源管理器,资源管理器将同样的情况通知给 Application Master。现在应用程序将重新启动容器。

关于hadoop - 关于 YARN 的查询(故障模式、容器大小、实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863691/

有关hadoop - 关于 YARN 的查询(故障模式、容器大小、实例)的更多相关文章

  1. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  6. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  7. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  8. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  9. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  10. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

随机推荐