避免网络问题降低 Hadoop 和 HBase 性能的最重要因素可能是使用的交换硬件,在项目范围的早期做出的决策可能会导致群集大小增加一倍或三倍(或更多)时出现重大问题。

需要考虑的重要事项:

  • 设备的切换容量

  • 连接的系统数量

  • 上行容量

115.1。单开关

此配置中最重要的一个因素是硬件的交换容量能够处理连接到交换机的所有系统可能产生的流量。一些较低价格的商用硬件可以具有比完整交换机可以使用的更慢的交换容量。

115.2。多个开关

多个交换机是架构中的潜在缺陷。低价硬件的最常见配置是从一个交换机到另一个交换机的简单 1Gbps 上行链路。这种经常被忽视的夹点很容易成为集群通信的瓶颈。特别是对于同时读取和写入大量数据的 MapReduce 作业,此上行链路上的通信可能已经饱和。

缓解此问题非常简单,可以通过多种方式完成:

  • 使用适当的硬件来处理您尝试构建的群集的规模。

  • 使用较大的单开关配置,即单个 48 端口而不是 2 个 24 端口

  • 配置上行链路的端口中继,以利用多个接口来增加交叉交换机带宽。

115.3。多个机架

多个机架配置带来与多个交换机相同的潜在问题,并且可能会从两个主要方面降低性能:

  • 开关容量性能不佳

  • 上行链路到另一个机架的能力不足

如果机架中的交换机具有适当的交换容量以全速处理所有主机,则下一个最可能的问题将是通过在机架中引导更多群集引起的。跨越多个机架时避免问题的最简单方法是使用端口中继来创建到其他机架的绑定上行链路。然而,该方法的缺点在于可能使用的端口的开销。这样做的一个例子是,从机架 A 到机架 B 创建一个 8Gbps 端口通道,使用 24 个端口中的 8 个在机架之间进行通信会降低投资回报率,使用太少但是可能意味着您无法充分利用簇。

在机架之间使用 10Gbe 链路将大大提高性能,并且假设您的交换机支持 10Gbe 上行链路或允许扩展卡,则允许您为机器而不是上行链路保存端口。

115.4。网络接口

所有网络接口都正常运行吗?你确定吗?请参阅案例研究#1(单节点上的性能问题)中的故障排除案例研究。

115.5。网络一致性和分区容忍度

CAP 定理指出分布式系统可以保持以下三个特征中的两个: - C onsistency - 所有节点都看到相同的数据。 - A 可用性 - 每个请求都会收到有关它是成功还是失败的响应。 - P 的动作容忍度 - 即使其他组件无法使用,系统也会继续运行。

HBase 支持一致性和分区容忍度,必须做出决定。 Coda Hale 在 http://codahale.com/you-cant-sacrifice-partition-tolerance/ 中解释了为什么分区容差如此重要。

罗伯特 Yokota 使用一个名为 Jepson 的自动化测试框架来测试 HBase 在网络分区面前的分区容忍度,使用 Aphyr 的 Call Me Maybe 系列之后建模的技术。结果,作为博客文章附录,显示 HBase 正确执行。