你的数据在磁盘上的物理数据大小与逻辑数据大小截然不同,而且被下面选项影响:
增加的HBase开销。
keyvalue and keysize,每个keyvalue (Cell)最少24字节,小的keyvalue 意味着相对应小开销。
keyvalue instances 聚合成blocks,blocks是被索引的,索引也是会被储存,Blocksize是基于每一个列簇配置。
译者注:Blocksize配置越大,意味着建立的索引越少,命中的概率也会降低。不同场景,请进行合理规划。
压缩和数据块编码。
region server wal大小(通常小于RS内存的一半)。
问题导读1.在 Region 分配过程中,哪些对象起着重要作用?2.如果有多个 region serve 存在, HBase 会不会把 root region 和 meta region 分配到一个RegionServer 上?3.哪个类负责将 region 分配到 region server?HBase 的 cluster 中, Region 是如何分配这个问题,困扰了我很久,经过代码分析和调试,得出了一些见解,缺点和错误请大家批评指正。参与 Region 分配的重要对象在 Region 分配过程中,起着重要作用有如下一些对象。HMaster— 是 HBase 中的 Master server ,仅有一个。HRegionServer--- 负责多个 HRegion 使之能向 client 端提供服务,在 HBase cluster 中存在多个HRegionServer 。ServerManager--- 负责管理 Region server 信息,比如每个 Region server 的 HServerInfo( 这个对象包含HServerAddress 和 startCode), 已 load Region 个数,死亡的 Region server 列表 RegionManager --- 负责将 region 分配到 region server 的具体工作,还有监视 root 和 meta 这 2 个特殊 region的状态。RootScanner --- 定期扫描 root region ,以发现没有分配的 meta region 。MetaScanner--- 定期扫描 meta region, 以发现没有分配的 user region 。
HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个 region,HRegion中由多 个HStore组成。每个HStore对应了Table中的一个column family的存储,可以看出每个columnfamily其实就是一个集中的存储单元,因此最好将具备共...END
HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个 region,HRegion中由多 个HStore组成。每个HStore对应了Table中的一个column family的存储,可以看出每个columnfamily其实就是一个集中的存储单元,因此最好将具备共...END