0

这是通过 HDFS API 完成的吗?如果是这种情况,数据局部性是如何实现的[假设区域服务器和 Datanode 在同一系统上],即 NameNode 将根据其统计信息分配 Datanodes 来存储数据。

4

2 回答 2

1

Tariq 关于使用 HFileSystem 为客户端抽象出接口是正确的,但是可以在此链接Hbase Architecture HBase Storage http://ofps.oreilly 上找到有关文件实际写入 HDFS DataNodes 的更好解释。 com/static/titles/9781449396107/figs/hbase-files.png

简而言之,为了维护数据局部性,客户端联系 Zookeeper 集群以查找特定行的 ROOT 区域(基本上是热名称)的位置。之后,它会查询收到的主机名以查找托管 .META 的服务器。桌子。然后它继续查询表以找出哪个服务器有它需要的行,客户端缓存ROOT和.META的位置。表以及它需要的行的位置。

为了将 HFile 写入 HDFS,客户端请求 HTable 上的 PUT,HRegionServer 将其传递给 HRegion 实例,然后将其存储在 MemStore 中(如果未设置预写标志)。当 MemStore 已满时,它会刷新到 DataNode

于 2013-07-02T20:16:13.490 回答
0

是的。HBase 使用HFileSystemFileSystem 对象的封装来访问数据。查看HFileSystem更多。

对于您的其他问题,您可以访问此链接。实际上,您必须通过此链接。拉斯已经很好地解释了它。

于 2013-07-02T19:44:08.927 回答