【问题标题】:HBase regions automatic splitting using hbase.hregion.max.filesize使用 hbase.hregion.max.filesize 自动分割 HBase 区域
【发布时间】:2014-05-26 14:37:48
【问题描述】:

我正在使用 HBase 的 cloudera 发行版 (hbase-0.94.6-cdh4.5.0) 和 cloudera 管理器来设置所有集群的配置。

我已经为 HBase 设置了以下属性:

<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
<source>hbase-default.xml</source>
</property>

注意: 10737418240 10G

因此,根据我阅读的所有文档,数据应该累积到单个区域中,直到区域大小达到 10G。

但是,它似乎不起作用...... 也许我错过了什么......

这是我的 hbase 表的所有区域及其大小:

root@hadoopmaster01:~# hdfs dfs -du -h /hbase/my_table 719 /hbase/my_table/.tableinfo.0000000001 0 /hbase/my_table/.tmp 222.2 M /hbase/my_table/08e225d0ae802ef805fff65c89a15de6 602.7 M /hbase/my_table/0f3bb09af53ebdf5e538b50d7f08786e 735.1 M /hbase/my_table/1152669b3ef439f08614e3785451c305 2.8 G /hbase/my_table/1203fbc208fc93a702c67130047a1e4f 379.3 M /hbase/my_table/1742b0e038ece763184829e25067f138 7.3 G /hbase/my_table/194eae40d50554ce39c82dd8b2785d96 627.1 M /hbase/my_table/28aa1df8140f4eb289db76a17c583028 274.6 M /hbase/my_table/2f55b9760dbcaefca0e1064ce5da6f48 1.5 G /hbase/my_table/392f6070132ec9505d7aaecdc1202418 1.5 G /hbase/my_table/4396a8d8c5663de237574b967bf49b8a 1.6 G /hbase/my_table/440964e857d9beee1c24104bd96b7d5c 1.5 G /hbase/my_table/533369f47a365ab06f863d02c88f89e2 2.5 G /hbase/my_table/6d86b7199c128ae891b84fd9b1ccfd6e 1.2 G /hbase/my_table/6e5e6878028841c4d1f4c3b64d04698b 1.6 G /hbase/my_table/7dc1c717de025f3c15aa087cda5f76d2 200.2 M /hbase/my_table/8157d48f833bb3b708726c703874569d 118.0 M /hbase/my_table/85fb1d24bf9d03d748f615d3907589f2 2.0 G /hbase/my_table/94dd01c81c73dc35c02b6bd2c17d8d22 265.1 M /hbase/my_table/990d5adb14b2d1c936bd4a9c726f8e03 335.0 M /hbase/my_table/a9b673c142346014e01d7cf579b0e58a 502.1 M /hbase/my_table/ae3b1f6f537826f1bdb31bfc89d8ff9a 763.3 M /hbase/my_table/b6039c539b6cca2826022f863ed76c7b 470.7 M /hbase/my_table/be091ead2a408df55999950dcff6e7bc 5.9 G /hbase/my_table/c176cf8c19cc0fffab2af63ee7d1ca45 512.0 M /hbase/my_table/cb622a8a55ba575549759514281d5841 1.9 G /hbase/my_table/d201d1630ffdf08e4114dfc691488372 787.9 M /hbase/my_table/d78b4f682bb8e666488b06d0fd00ef9b 862.8 M /hbase/my_table/edd72e02de2a90aab086acd296d7da2b 627.5 M /hbase/my_table/f13a251ff7154f522e47bd54f0d1f921 1.3 G /hbase/my_table/fde68ec48d68e7f61a0258b7f8898be4

如你所见,有很多区域,其中任何一个的大小都接近 10G...

如果有人遇到过此类问题或知道是否需要设置其他配置,请帮助我!

谢谢

【问题讨论】:

    标签: hadoop split hbase region


    【解决方案1】:

    @mpiffaretti,您所看到的非常有效。当我第一次看到自动分割后的区域大小时,我也有点震惊。

    在 HBase 0.94+ 中,默认拆分策略为 IncreasingToUpperBoundRegionSplitPolicy。区域大小由以下描述的算法决定。

    拆分大小是该服务器上所有属于同一个表的区域的数量,立方,乘以区域刷新大小的 2 倍或最大区域拆分大小,以较小者为准。例如,如果刷新大小为 128M,那么在两次刷新 (256MB) 之后,我们将进行拆分,这将产生两个区域,当它们的大小为 2^3 * 128M*2 = 2048M 时,它们将拆分。如果其中一个区域分裂,则有三个区域,现在分裂大小为 3^3 * 128M*2 = 6912M,依此类推,直到我们达到配置的最大文件大小,然后从那里开始,我们将使用它.

    这是一个相当不错的策略,因为您开始在区域服务器上获得良好的区域分布,而不必等到它们达到 10GB 限制。

    或者,您最好预先拆分表,因为您要确保充分利用集群的处理能力 - 如果您只有一个区域,所有请求都将转到区域分配到的区域服务器。预拆分将控制权交给您如何在行键空间上拆分区域。

    【讨论】:

      【解决方案2】:

      Pr-splitting 是更好的选择。希望您的数据不会连续插入单个区域并在达到区域限制时进行拆分或压缩。

      在这种情况下,写入不是均匀分布的,并且在压缩表时会成为写入模块的瓶颈。

      活动区域上的请求数将很高。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-21
        • 2017-07-09
        • 1970-01-01
        • 2011-05-18
        相关资源
        最近更新 更多