HBase性能调整:网络
网络
避免网络问题降低Hadoop和HBase性能的最重要因素可能是所使用的交换硬件,在项目范围的早期做出的决策可能会导致群集大小增加一倍或三倍(或更多)时出现重大问题。
需要考虑的重要事项:
- 切换设备的容量
- 连接的系统数量
- 上行链路容量
单个交换机
此配置中最重要的一个因素是硬件的交换容量能够处理连接到交换机的所有系统可以生成的通信量。一些较低价格的商用硬件可以具有比完整交换机可以使用的更慢的交换容量。
多个交换机
多个交换机是架构中的潜在缺陷。低价硬件的最常见配置是从一个交换机到另一个交换机的简单1Gbps上行链路。这种经常被忽视的夹点很容易成为集群通信的瓶颈。特别是对于读取和写入大量数据的MapReduce作业,此上行链路上的通信可能会饱和。
缓解这个问题非常简单,可以通过多种方式实现:
- 使用适当的硬件来处理您尝试构建的群集的规模。
- 使用较大的单个交换机配置,即单个48端口,而不是2个24端口
- 为上行链路配置端口中继,以利用多个接口来增加交叉交换机带宽。
多个机架
多个机架配置具有与多个交换机相同的潜在问题,并且可能会从两个主要方面降低性能:
- 交换容量性能不佳
- 上行链路到另一个机架的能力不足
如果机架中的交换机具有适当的交换容量以全速处理所有主机,则下一个最可能出现的问题将是通过在机架中引导更多群集引起的。跨越多个机架时避免问题的最简单方法是使用端口中继来创建到其他机架的绑定上行链路。然而,这种方法的缺点是可能使用的端口开销。例如,从机架A到机架B创建一个8Gbps端口通道,使用24个端口中的8个在机架之间进行通信会降低投资回报率,但使用太少可能意味着您无法从群集中获得最大的收益。
在机架之间使用10Gbe链接将大大提高性能,并且假设您的交换机支持10Gbe上行链路或允许扩展卡,则允许您为计算机保存端口,而不是上行链路。
网络接口
确认所有网络接口是否都正常运行。
网络一致性和分区容错度
CAP定理指出,分布式系统可以维持以下三种特性中的两种: - *C*onsistency - 所有节点都看到相同的数据。 - *A*vailability - 每个请求都会收到有关它是成功还是失败的响应。 - *P*artition tolerance - 即使其他组件无法使用,系统也会继续运行。
HBase有利于一致性和分区容错度,必须做出决定。Coda Hale解释了为什么分区容错度如此重要,请访问http://codahale.com/you-cant-sacrifice-partition-tolerance/。