Hadoop 如何在EC2的不同机架中创建两个实例?(AWS中的机架感知)

Hadoop 如何在EC2的不同机架中创建两个实例?(AWS中的机架感知),hadoop,amazon-ec2,amazon-emr,Hadoop,Amazon Ec2,Amazon Emr,我正在尝试创建一个Hadoop集群。我使用的是经过修改的Hadoop源代码,它将根据机架的工作负载将任务调度到不同的机架。为了测试这一点,我希望我的数据节点的一半在一个机架上,另一半在另一个机架上。如何确保这一点?亚马逊EC2上没有机架的概念。您拥有的唯一控制级别是Availability Zone,它是一个物理上不同的数据中心。但是,Hadoop集群总是在同一个AZ中运行,以提高速度,这也是因为,如果主节点出现故障,整个集群都会出现故障。这是在EMR上的-如果您部署了自己的集群,您可以使用mu

我正在尝试创建一个Hadoop集群。我使用的是经过修改的Hadoop源代码,它将根据机架的工作负载将任务调度到不同的机架。为了测试这一点,我希望我的数据节点的一半在一个机架上,另一半在另一个机架上。如何确保这一点?

亚马逊EC2上没有机架的概念。您拥有的唯一控制级别是Availability Zone,它是一个物理上不同的数据中心。但是,Hadoop集群总是在同一个AZ中运行,以提高速度,这也是因为,如果主节点出现故障,整个集群都会出现故障。这是在EMR上的-如果您部署了自己的集群,您可以使用multi-AZ

如果您关心的是避免多次停机,我的建议是不要担心!。Hadoop设计用于处理故障,因此如果一个节点出现故障,它将向其余节点发送工作。您可以向集群提供其他节点以替换故障节点,但这不是自动完成的

与其将我的数据节点的一半放在一个机架上,另一半放在另一个机架上,很有可能每个节点都位于不同的主机上,因此您可能会在那里得到更广泛的基础设施,而只是有两个“机架”。但是,您对此类放置没有可见性

此外,建议您将持久数据存储在AmazonS3中,而不是HDFS中。通过这种方式,您可以终止集群,并且您的数据仍然可用。最坏的情况是,如果集群失败,您的数据仍然可用。这比正常的本地Hadoop部署要好,因为它不会丢失HDF

底线:别担心。部署集群并监视它们,以查看故障是否确实是一个问题。

您可以通过“排列放置组”来完成此操作 首先创建排列放置组

启动实例并指定它们属于此扩展组

AWS文件 排列放置组是一组实例,每个实例放置在不同的机架上,每个机架都有自己的网络和电源

下图显示了单个可用性区域中放置在排列放置组中的七个实例。七个实例放置在七个不同的机架上

对于具有少量关键实例的应用程序,建议使用排列放置组,这些关键实例应彼此分开。在排列放置组中启动实例可降低实例共享同一机架时可能发生的同时故障的风险。分散放置组提供对不同机架的访问,因此适合随时间混合实例类型或启动实例

扩展放置组可以跨同一区域中的多个可用区域。每个可用性区域每个组最多可以有七个正在运行的实例

如果启动或启动排列放置组中的实例,并且没有足够的唯一硬件来满足请求,则请求将失败。随着时间的推移,AmazonEC2提供了更多不同的硬件,因此您可以稍后重试您的请求

三个就业小组简介
您是在使用Amazon EMR,还是在部署和管理自己的Hadoop群集?按机架,您指的是传统IT基础设施,其中计算机可以安装在机架内,共享一些资源,例如电源?或者这是一个Hadoop术语?Hadoop将节点定义为在同一机架中(如果它们位于同一网络交换机中)。它将无法检测Amazon EC2基础架构中的物理机架。该文档提到了一些关于地址范围的假设,这些假设在EC2中是不正确的。这是一个软件定义的网络,模拟普通以太网。感谢您提供的有用信息。不过,我正在尝试针对不同的机架测试我的负载平衡算法。我根据机架上的工作负载对源代码进行了一些更改,以打开机架上的容器请求。为了测试它,我想创建一个带有两个机架的集群,每个机架上都有一些节点。