「读书」数据密集型应用 Day 11

124 阅读2分钟

分区

分区再平衡

  • 查询吞吐量增加,所以您想要添加更多的CPU来处理负载。
  • 数据集⼤⼩增加,所以您想添加更多的磁盘和RAM来存储它。
  • 机器出现故障,其他机器需要接管故障机器的责任。

所有这些更改都需要数据和请求从⼀个节点移动到另⼀个节点。 将负载从集群中的⼀个节点向另⼀个节点移动的过程称为再平衡。

平衡策略

反⾯教材:hash mod N

当节点数量发生变化的时候,需要重新平衡,代价昂贵。

固定数量的分区

创建⽐节点更多的分区,并为每个节点分配多个分区。

只有分区在节点之间的移动。分区的数量不会改变,键所指定的分区也不会改变。唯⼀改变的是分区所在的节点。这种变更并不是即时的 — 在⽹络上传输⼤量的数据需要⼀些时间 — 所以在传输过程中,原有分区仍然会接受读写操作。

动态分区

当分区增⻓到超过配置的⼤⼩时(在HBase上,默认值是10GB),会被分成两个分区,每个分区约占⼀半的数据【26】。与之相反,如果⼤量数据被删除并且分区缩⼩到某个阈值以下,则可以将其与相邻分区合并。此过程与B树顶层发⽣的过程类似。

按节点比例分区

通过动态分区,分区的数量与数据集的⼤⼩成正⽐,因为拆分和合并过程将每个分区的⼤⼩保持在固定的最⼩值和最⼤值之间。另⼀⽅⾯,对于固定数量的分区,每个分区的⼤⼩与数据集的⼤⼩成正⽐。在这两种情况下,分区的数量都与节点的数量⽆关。

运维:手动还是自动平衡

在全⾃动重新平衡(系统⾃动决定何时将分区从⼀个节点移动到另⼀个节点,⽆须⼈⼯⼲预)和完全⼿动(分区指派给节点由管理员明确配置,仅在管理员明确重新配置时才会更改)之间有⼀个权衡。

请求路由

执行并行查询