我们知道hbase部署在hadoop和hdfs之上。另外,我们知道,当我们要从hdfs读取文件(或记录)时,使用hdfs cli需要相当长的时间。但即使hbase使用hdfs,它也能够在几毫秒内读取密钥。这是怎么发生的?
rks48beu1#
我认为原因包括:数据被拆分到不同的区域服务器。客户端可以从元表中获取区域服务器,直接与hbase区域服务器进行通信。区域服务器与hdfs datanodes并置,这使得区域服务器所服务的数据具有数据局部性(将数据放在需要的位置附近)。hfile包含一个多层索引,允许hbase查找数据而不必读取整个文件。hbase首先从blockcache和memstore中读取数据,如果在blockcache或memstore中可以找到数据,则hbase不需要从hdfs中读取hfiles。
1条答案
按热度按时间rks48beu1#
我认为原因包括:
数据被拆分到不同的区域服务器。客户端可以从元表中获取区域服务器,直接与hbase区域服务器进行通信。
区域服务器与hdfs datanodes并置,这使得区域服务器所服务的数据具有数据局部性(将数据放在需要的位置附近)。
hfile包含一个多层索引,允许hbase查找数据而不必读取整个文件。
hbase首先从blockcache和memstore中读取数据,如果在blockcache或memstore中可以找到数据,则hbase不需要从hdfs中读取hfiles。