一、Locality
这是HDFS中的一个概念(在后文中进行了解释),Locality的数值可以明显反映出HBase在某些环境下的性能大小。
在大数据环境中,DataNode消耗内存、CPU资源较少,而HBase的RegionServer消耗内存和CPU资源较多,所以我们可以把DataNode与RegionServer部署在同一机器上。
对于DFSClient客户端来说,一个文件在这台机器上的Locality 可以定义为:
- Locality =该文件存储在本地机器的字节数之和/改文件总字节数
从定义可知,Locality 是介于0至1之间的数,Locality 越大,说明本地数据越多,需要通过网络读取的数据越少,性能越高。反之…
二、为什么Locality介于0和1之间,不应该是1么?
- 读取数据时,DFSClient优先从本地读取,如果读取失败或者数据损毁,就从其他副本加载需要的数据。RegionServer会在其他DataNode上将数据拷贝回本节点,Locality 慢慢的接近1后等于1。
- 为什么从其他副本加载信息会影响Locality ?HDFS默认三副本策略以及机架感知原理,副本保存在其他节点,不在本节点上。
- RegionServer服务挂掉,Region会被分配到新的RegionServer上,但不是将这些Region全部分配给RegionServer中,会进行随机分配。有概率还会分布在同一RegionServer中。
- 集群重新启动,重新分配RegionServer与Region关系。
|