我正在尝试创建一个Hadoop集群。我使用的是一个经过修改的Hadoop源,它将根据机架的工作负载将任务调度到不同的机架。为了测试这一点,我希望我的一半数据节点在一个机架上,另一半在不同的机架上。我如何确保这一点?
发布于 2017-10-07 05:27:47
亚马逊EC2上没有“机架”的概念。您拥有的唯一控制级别是可用区,它是一个物理上不同的数据中心。然而,Hadoop集群总是在相同的AZ中运行,以提高速度,而且还因为,如果主节点出现故障,整个集群也会出现故障。(这是在EMR上的--如果您已经部署了自己的集群,则可以使用多AZ。)
如果您关心的是避免多个停机,我的建议是“别担心!”Hadoop是为处理故障而设计的,因此如果一个节点出现故障,它会将工作发送到其余节点。您可以向群集提供额外的节点以替换出现故障的节点,但这不是自动完成的。
而不是将“我的数据节点的一半放在一个机架上,另一半放在不同的机架上”,很可能每个节点都会在不同的主机上,所以你可能会得到一个分布更广的基础设施,在那里只有两个“机架”。但是,您无法查看此类放置。
此外,建议您将持久数据存储在Amazon S3中,而不是HDFS中。这样,您可以终止集群,而您的数据仍然可用,最坏的情况是,如果集群失败,您的数据也仍然可用。这比正常的本地Hadoop部署更好,因为后者不会丢失HDFS。
底线:不用担心。部署您的集群并对其进行监控,以查看故障是否真的是一个问题。
发布于 2020-05-09 20:07:18
您可以通过分散置放群组来执行此操作
AWS文档
分散置放组是一组实例,每个实例都放置在不同的机架上,每个机架都有自己的网络和电源。
下图显示了单个可用区中的七个实例被放置到分散置放群组中。这七个实例放置在七个不同的机架上。
建议将分散放置组用于具有少量关键实例的应用程序,这些关键实例应该彼此分开。在分散放置组中启动实例可降低实例共享相同机架时可能发生的同时故障的风险。分散放置组提供对不同机架的访问,因此适合混合实例类型或随时间启动实例。
分散置放群组可以跨同地域的多个可用区。每个组的每个可用区最多可运行七个实例。
如果您在分散置放群组中启动或启动实例,并且没有足够的唯一硬件来满足请求,则请求将失败。随着时间的推移,亚马逊EC2提供了更多不同的硬件,因此您可以稍后重试您的请求。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html
三个置放群组简介
Amazon EC2 Placement Groups: SAA-C02 AWS Certified Solutions Architect Associate Exam 2020
https://stackoverflow.com/questions/46613139
复制相似问题