一、Locality
Locality是HDFS中的一个概念(在后文中进行了解释),Locality的数值可以明显反映出HBase在某些环境下的性能大小
在环境部署时,DataNode消耗内存、CPU资源较少。而HBase的RegionServer消耗内存和CPU资源较多,所以我们可以把DataNode与RegionServer部署在同一机器上
此时Locality就与HBase密切相关了
对于DFSClient客户端来说,一个文件在这台机器上的Locality 可以定义为:

- Locality =该文件存储在本地机器的字节数之和/该文件总字节数
所以Locality 是介于0至1之间的数,Locality 越大,说明本地数据越多,需要通过网络读取的数据越少,性能越高。反之…
二、为什么Locality介于0和1之间,不应该是1么?
以下是Locality不等于1的情况:
- 读取数据时,DFSClient优先从本地读取,如果读取失败或者数据损毁,就从其他副本加载需要的数据。RegionServer会从其他DataNode上将数据拷贝回本节点,Locality 慢慢的接近1后等于1
- RegionServer服务挂掉,Region会被分配到新的RegionServer上,但不是将这些Region全部分配给新的RegionServer中,会进行随机分配。有概率还会分布在同一RegionServer中
- 集群重新启动,重新分配RegionServer与Region关系
为什么从其他副本加载信息会影响Locality ?
- HDFS默认三副本策略以及机架感知原理,本地的副本失效,其余副本保存在其他节点,不在本节点上,将数据拷贝回本节点过程中Locality也就随之变化
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/50498.html