我有一个关于负载均衡器的基本问题.我刚刚完成了为我们的hadoop(2.3)集群添加新节点,该集群也有hbase v0.98.添加并在hadoop和hbase中使所有节点联机后,
如何通过hadoop再平衡器影响hbase?在hadoop重新平衡后,我是否需要明确尝试重新平衡hbase?
我的Hadoop集群完全被hbase占用.设置balancer_switch = true,它会自动重新平衡hbase和hadoop吗?
什么是确保hadoop和hbase都重新平衡并且工作正常的最佳方法是什么?
bra*_*ell 14
Hadoop(HDFS)平衡器将块从一个节点移动到另一个节点以尝试使其成为每个数据节点具有相同数量的数据(在可配置的阈值内).这会混淆HBases的数据位置,这意味着特定区域可能正在为不再位于其本地主机上的文件提供服务.
HBase的balance_switch平衡集群,以便每个regionserver托管相同数量的区域(或接近).这与Hadoop(HDFS)平衡器是分开的.
如果您只运行HBase,我建议不要运行Hadoop(HDFS)平衡器,因为它会导致某些区域丢失其数据位置.这导致对该区域的任何请求必须通过网络到达为其服务的HFile的数据节点之一.
HBase的数据位置虽然已经恢复.每当发生压缩时,所有块都会本地复制到服务该区域并合并的regionserver.此时,恢复该区域的数据位置.有了这个,你真正需要做的就是添加新的节点.Hbase将负责重新平衡区域,一旦这些区域紧凑,数据局部性将得到恢复.
Hadoop 默认情况下不进行块级平衡。您可以使用一些工具在 Hadoop 中手动进行平衡,即https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/CommandsManual.html#balancer。请注意,如果您有少量完全空的节点或刚刚添加到一个完整的集群中的新节点,那么平衡 HDFS 实际上是相当昂贵的,而我的经验是,它只能很好地平衡 HDFS 块。多次运行平衡器可以提高整体平衡性。还有一些替代实现可以比 Hadoop 内置的实现更好地进行平衡。
如果单击“Live Nodes”链接,您可以从 HDFS NameNode UI 检查块的平衡。“已使用的块池”列是用于此目的的有用列。如果您发现不同机器上使用的块百分比差异很大,那么您可能需要重新平衡 HDFS 集群。
唯一balancer_switch影响的是regionserver的平衡。默认情况下,HBase 将自动平衡集群中的区域,但您可以随时balancer从hbase shell.
您可以从 HBase 主 UI 主页的“Region Servers 部分”下的“Load”列中检查区域平衡,有一个名为“numberOfOnlineRegions”的值。总的来说,HBase 在保持这种平衡方面做得很好。当我最初创建表时,我只见过几次默认平衡算法会产生一组倾斜的区域。无论如何,区域平衡器实际上相当便宜并且可以很快完成。运行一次通常足以让您进入非常平衡的状态。
| 归档时间: |
|
| 查看次数: |
9234 次 |
| 最近记录: |