这是通过HDIA API完成的 - 如果是这样的话,那就是如何实现数据的位置[假设同一系统上的Region服务器和Datanode],即NameNode将根据统计数据分配Datanode来存储数据。
答案 0 :(得分:1)
Tariq关于使用HFileSystem来抽象客户端接口是正确的,但是可以在此链接上找到有关如何实际写入HDFS DataNode的文件的更好解释Hbase Architecture HBase Storage http://ofps.oreilly.com/static/titles/9781449396107/figs/hbase-files.png
简而言之,要维护的数据位置,客户端联系Zookeeper集群以查找特定行的ROOT区域(基本上是热门名称)的位置。然后,它查询收到的主机名以查找承载.META的服务器。表。然后它继续查询表以找出哪个服务器具有它需要的行,客户端缓存ROOT和.META的位置。表以及它所需的行的位置。
为了将HFile写入HDFS,客户端请求HTable上的PUT,HRegionServer将其传递给HRegion实例,然后HRegion实例将其存储在MemStore中(如果没有设置提前写入标志)。当MemStore已满时,它会刷新到DataNodes
答案 1 :(得分:0)
是。 HBase使用HFileSystem
(FileSystem对象的封装)来访问数据。有关详情,请参阅HFileSystem
。
对于您的其余问题,您可以访问此link。实际上,您必须通过此链接。拉斯很好地解释了它。