HBase Locality 为什么介于0~1之间?

定义

Locality,这是一个HDFS中的一个概念,但是Locality的数值可以明显反映出HBase在某些环境下的性能大小。

在Hadoop中,DataNode消耗内存、CPU资源较少。RegionServer消耗内存和CPU资源较多,所以我们可以把DataNode与RegionServer部署在同一机器上。对于DFSClient客户端来说,一个文件在这台机器上的Locality 可以定义为:

  • Locality =该文件存储在本地机器的字节数之和/改文件总字节数

从定义可知,locality是介于0至1之间的数,Locality 越大,说明本地数据越多,需要通过网络读取的数据少,性能越高。

为什么locality会介于0和1之间,不应该是1么?

  • 读取数据时,DFSClient优先从本地读取,如果数据失败或者数据损毁,就从其他副本加载需要的数据(为什么从其他副本加载信息会影响Locality ?HDFS默认三副本策略以及机架感知原理,副本在其他节点)。RegionServer会在其他DataNode上进行将数据拷贝回本节点,Locality 慢慢的逐渐接近1后等于1。
  • RegionServer挂了,Region会分配到新的RegionServer上,但是不是将这些Region全部分配给RegionServer中,会进行随机分配(已不满足三副本策略)。有概率还会分布在同一RegionServer下。

兄弟们,点个赞再走吧~~

猜你喜欢

转载自blog.csdn.net/weixin_43744992/article/details/121941251