HBase 中的数据读取是如何发生的?
How data read happens in HBase?
我们知道HBase部署在Hadoop和HDFS之上。此外,我们知道当我们想要从 HDFS 读取文件(或记录)时,使用 HDFS CLI 需要花费大量时间。
但即使 HBase 使用 HDFS,它也能够在几毫秒内读取密钥。这是怎么发生的?
我认为原因包括:
- 数据被拆分到不同的区域服务器。客户端可以得到
来自 META table 的区域服务器,并直接与 HBase 区域服务器通信。
- 区域服务器与 HDFS 数据节点并置,这使得
数据局部性(将数据放在需要的地方)
区域服务器提供的数据。
- 一个 HFile 包含一个 multi-layered 索引,它允许 HBase 查找
到数据而不必读取整个文件。
- HBase先从BlockCache和MemStore读取,如果数据可以
在 BlockCache 或 MemStore 中找到,HBase 不需要读取 HFiles
来自 HDFS。
我们知道HBase部署在Hadoop和HDFS之上。此外,我们知道当我们想要从 HDFS 读取文件(或记录)时,使用 HDFS CLI 需要花费大量时间。
但即使 HBase 使用 HDFS,它也能够在几毫秒内读取密钥。这是怎么发生的?
我认为原因包括:
- 数据被拆分到不同的区域服务器。客户端可以得到 来自 META table 的区域服务器,并直接与 HBase 区域服务器通信。
- 区域服务器与 HDFS 数据节点并置,这使得 数据局部性(将数据放在需要的地方) 区域服务器提供的数据。
- 一个 HFile 包含一个 multi-layered 索引,它允许 HBase 查找 到数据而不必读取整个文件。
- HBase先从BlockCache和MemStore读取,如果数据可以 在 BlockCache 或 MemStore 中找到,HBase 不需要读取 HFiles 来自 HDFS。